Lấy dữ liệu từ PDF sang Excel

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

QuangW

Thành viên mới
Tham gia
1/12/23
Bài viết
21
Được thích
11
Dạ nhờ mọi người giúp em lấy dữ liệu từ tệp PDF sang Excel hàng loạt với ạ.
Em cần những số bôi vàng như trong ảnh ạ.
Em cảm ơn!
Capture.PNG
 

File đính kèm

  • data1.pdf
    50.8 KB · Đọc: 44
  • data2.pdf
    46.3 KB · Đọc: 25
  • data3.pdf
    48.1 KB · Đọc: 15
  • data4.pdf
    46.3 KB · Đọc: 14
  • data5.pdf
    48.1 KB · Đọc: 15
  • PDF to Excel.xlsm
    22 KB · Đọc: 16
Em lọc được dữ liệu mình cần rồi anh ơi. @$@!^% Nhiều bước quá chứ không gọn như của anh.
Anh chỉ em lặp để lấy dữu liệu từ nhiều file với ạ.
Chỉ cần như code sau:

JavaScript:
let
    Source = Pdf.Tables(File.Contents("D:\MyPham\DOWNLOAD\Documents\Datapdf\DATA _doc\1.pdf"), [Implementation="1.3"]),
    Table001 = Table.Skip(Source{[Id="Table001"]}[Data],7),
    Headers = Table.PromoteHeaders(Table001),
    AddTitle = Table.AddColumn(Headers, "Title", each if [Column1] = null then [Actual] else null),
    Fill= Table.FillDown(AddTitle,{"Title"}),
    AddActual = Table.AddColumn(Fill, "Actual2", each if [Column1] = "[image]" then [Actual] else null),
    ChooseColumns = Table.SelectColumns(AddActual,{"Title", "Actual2"}),
    Filter = Table.SelectRows(ChooseColumns, each ([Actual2] <> null) and ([Title] <> null)),
    ReplaceNull = Table.ReplaceValue(Filter,"-","",Replacer.ReplaceText,{"Title"}),
    Transpose = Table.PromoteHeaders(Table.Transpose(ReplaceNull)),
    Types= Table.TransformColumnTypes(Transpose,{{"Y Value_Point5", type number}, {" Y Value_Point6", type number}, {"X Value_Point7", type number}, {"X Value_Point8", type number}})
in
    Types
Và có tiêu đề đàng hoàng. Từ từ tôi cho vào vòng lặp sau

1702442160985.png
 
Upvote 0
Cho vào vòng lặp. File pdf số 2 bị sai cấu trúc, không giống những file khác nên bị rỗng

JavaScript:
let
 
    FolderName ="D:\MyPham\DOWNLOAD\Documents\Datapdf\DATA _doc",
    FileNameList= Folder.Files(FolderName)[Name],
    FileNum={0..List.Count(FileNameList)-1},
    DataF= List.Transform(FileNum, (f) =>
    let
        FFullName =FolderName & "\" & FileNameList{f},
        Source1 = Table.SelectRows(Pdf.Tables(File.Contents(FFullName), [Implementation="1.3"]),each ([Kind] = "Table"))[Data]{0},
        Data1 = Table.Skip(Source1,7),
        Headers = Table.PromoteHeaders(Data1),
        AddTitle = Table.AddColumn(Headers, "Title", each if [Column1] = null then [Actual] else null),
        Fill= Table.FillDown(AddTitle,{"Title"}),
        AddActual = Table.AddColumn(Fill, "Actual2", each if [Column1] = "[image]" then [Actual] else null),
        ChooseColumns = Table.SelectColumns(AddActual,{"Title", "Actual2"}),
        Filter = Table.SelectRows(ChooseColumns, each ([Actual2] <> null) and ([Title] <> null)),
        ReplaceNull = Table.ReplaceValue(Filter,"-","",Replacer.ReplaceText,{"Title"}),
        Transpose = Table.PromoteHeaders(Table.Transpose(ReplaceNull))
    in Transpose),
    ToTable =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = List.LastN(Table.ColumnNames(DataF{0}),4),
    Ketqua = Table.ExpandTableColumn(ToTable, "Column1", ListColumns2),
    Filter2 = Table.SelectRows(Ketqua, each ([Y Value_Point5] <> null)),
    AddIndex = Table.AddIndexColumn(Filter2, "STT", 1, 1, Int64.Type),
    Reorder = Table.ReorderColumns(AddIndex,{"STT", "Y Value_Point5", " Y Value_Point6", "X Value_Point7", "X Value_Point8"}),
    Types = Table.TransformColumnTypes(Reorder,{{"Y Value_Point5", type number}, {" Y Value_Point6", type number}, {"X Value_Point7", type number}, {"X Value_Point8", type number}})

in Types

1702444836217.png
 
Upvote 0
Cho vào vòng lặp. File pdf số 2 bị sai cấu trúc, không giống những file khác nên bị rỗng

JavaScript:
let
 
    FolderName ="D:\MyPham\DOWNLOAD\Documents\Datapdf\DATA _doc",
    FileNameList= Folder.Files(FolderName)[Name],
    FileNum={0..List.Count(FileNameList)-1},
    DataF= List.Transform(FileNum, (f) =>
    let
        FFullName =FolderName & "\" & FileNameList{f},
        Source1 = Table.SelectRows(Pdf.Tables(File.Contents(FFullName), [Implementation="1.3"]),each ([Kind] = "Table"))[Data]{0},
        Data1 = Table.Skip(Source1,7),
        Headers = Table.PromoteHeaders(Data1),
        AddTitle = Table.AddColumn(Headers, "Title", each if [Column1] = null then [Actual] else null),
        Fill= Table.FillDown(AddTitle,{"Title"}),
        AddActual = Table.AddColumn(Fill, "Actual2", each if [Column1] = "[image]" then [Actual] else null),
        ChooseColumns = Table.SelectColumns(AddActual,{"Title", "Actual2"}),
        Filter = Table.SelectRows(ChooseColumns, each ([Actual2] <> null) and ([Title] <> null)),
        ReplaceNull = Table.ReplaceValue(Filter,"-","",Replacer.ReplaceText,{"Title"}),
        Transpose = Table.PromoteHeaders(Table.Transpose(ReplaceNull))
    in Transpose),
    ToTable =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = List.LastN(Table.ColumnNames(DataF{0}),4),
    Ketqua = Table.ExpandTableColumn(ToTable, "Column1", ListColumns2),
    Filter2 = Table.SelectRows(Ketqua, each ([Y Value_Point5] <> null)),
    AddIndex = Table.AddIndexColumn(Filter2, "STT", 1, 1, Int64.Type),
    Reorder = Table.ReorderColumns(AddIndex,{"STT", "Y Value_Point5", " Y Value_Point6", "X Value_Point7", "X Value_Point8"}),
    Types = Table.TransformColumnTypes(Reorder,{{"Y Value_Point5", type number}, {" Y Value_Point6", type number}, {"X Value_Point7", type number}, {"X Value_Point8", type number}})

in Types

View attachment 297543
Em cảm ơn anh ạ!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom