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
Code Power query như sau, chỉ 1 query duy nhất. Sửa đường dẫn thư mục ở dòng đầu

JavaScript:
let
   
    FolderName ="D:\MyPham\DOWNLOAD\Documents\Datapdf",
    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")),
        Source2=Table.SelectColumns(Source1,{"Data"}), 
        SourceData=Table.ExpandTableColumn(Source2,"Data",   {"Column1", "Column2"}),
        FillDown = Table.FillDown(SourceData,{"Column1"}),
        Filter1 = Table.SelectRows(FillDown, each [Column2] <> null),
        Trans = Table.PromoteHeaders(Table.Transpose(Filter1))
    in Trans),
    ToTable =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = List.LastN(Table.ColumnNames(DataF{0}),4),
    Ketqua = Table.ExpandTableColumn(ToTable, "Column1", ListColumns2),
    AddIndex = Table.AddIndexColumn(Ketqua, "STT", 1, 1, Int64.Type),
    Reorder = Table.ReorderColumns(AddIndex,{"STT", "DATA1", "DATA2", "DATA3", "DATA4"})
   
in Reorder

1701669721018.png
 

File đính kèm

  • PDF to Excel.xlsx
    17 KB · Đọc: 28
Upvote 0
Không phải thế anh nhé.
Bản chất ở việc MS nâng cấp Office đọc được tập tin PDF.
Tôi vẫn chưa thấy thuyết phục lắm.
Power Query ra đã lâu. Công dụng chính của nó là để sử lý dữ liệu không theo dạng bảng trải rộng (spreadsheet). Tại quý vị rất ít khi dùng đến cách đọc dữ liệu ở dạng lập thể (cube) cho nên chưa hiểu tại sao Excel dẫn xa Google Sheets về phương diện Analysis.
 
Upvote 0
Tôi vẫn chưa thấy thuyết phục lắm.
Power Query ra đã lâu. Công dụng chính của nó là để sử lý dữ liệu không theo dạng bảng trải rộng (spreadsheet). Tại quý vị rất ít khi dùng đến cách đọc dữ liệu ở dạng lập thể (cube) cho nên chưa hiểu tại sao Excel dẫn xa Google Sheets về phương diện Analysis.

Không phải thế anh. Để có dữ liệu cho Power Query thì nó phải đọc / chuyển đổi nội dung trong PDF thành bảng dữ liệu đã.
Đây là phần xử lý OCR. Office 2010 trở xuống không đọc được tập tin PDF, Office 2013-2016 mở được PDF nhưng vẫn hạn chế, tới Office2019 mới tạm ổn.
Và gần đây MS mới có chuyển image thành text trên Excel365.

 
Upvote 0
Không phải thế anh. Để có dữ liệu cho Power Query thì nó phải đọc / chuyển đổi nội dung trong PDF thành bảng dữ liệu đã.
Đây là phần xử lý OCR. Office 2010 trở xuống không đọc được tập tin PDF, Office 2013-2016 mở được PDF nhưng vẫn hạn chế, tới Office2019 mới tạm ổn.
Và gần đây MS mới có chuyển image thành text trên Excel365.
PDF mang tiếng là PDF nhưng thực tế có nhiền phiên bản không hoàn toàn được tiêu chuẩn. Nhất là khi nó được biến cải bằng phần mềm dỏm, nó sẽ chưa một số fonts và graphics không tiêu chuẩn.
Tôi đọc sách tài liệu dạng PDF bị fonts hoặc graphics không chuẩn hoài.
MS khó thể làm vừa lòng mọi mặt cho nên họ chỉ làm mấy phiên bản mới, các phiên bản cũ hết thời hạn update rồi hộ không thể làm gì hơn.

Mãi gần đây, thất vọng với nhiều phần mềm đọc PDF tôi mới khám phá ra MS Edge là đọc PDF uyển chuyển nhất. Chú ý: tôi nói uyển chuyển chứ không hể nói chuẩn.
 
Upvote 0
Bạn giải nén ra, lưu cả 2 files trong đó chung một folder rồi chạy thử nhé.
Em cảm ơn bác nhé! Chạy rất nhanh luôn.
Mắc cái .exe em không dùng ở máy công ty không
Bài đã được tự động gộp:

Bạn nạp file PDF vào Power Query rồi Append query lại là được:
View attachment 297302
Em không biết dùng Power Query, vừa thử tìm trên Youtube mà vẫn chưa làm được.
Em cảm ơn ạ!
Bài đã được tự động gộp:

Code Power query như sau, chỉ 1 query duy nhất. Sửa đường dẫn thư mục ở dòng đầu

JavaScript:
let
  
    FolderName ="D:\MyPham\DOWNLOAD\Documents\Datapdf",
    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")),
        Source2=Table.SelectColumns(Source1,{"Data"}),
        SourceData=Table.ExpandTableColumn(Source2,"Data",   {"Column1", "Column2"}),
        FillDown = Table.FillDown(SourceData,{"Column1"}),
        Filter1 = Table.SelectRows(FillDown, each [Column2] <> null),
        Trans = Table.PromoteHeaders(Table.Transpose(Filter1))
    in Trans),
    ToTable =Table.FromList(DataF,Splitter.SplitByNothing()),
    ListColumns2 = List.LastN(Table.ColumnNames(DataF{0}),4),
    Ketqua = Table.ExpandTableColumn(ToTable, "Column1", ListColumns2),
    AddIndex = Table.AddIndexColumn(Ketqua, "STT", 1, 1, Int64.Type),
    Reorder = Table.ReorderColumns(AddIndex,{"STT", "DATA1", "DATA2", "DATA3", "DATA4"})
  
in Reorder

View attachment 297311
Em cảm ơn nhé! chạy rất ổn ạ!
Bác có thể chỉ em chỗ nào để lọc ra những data mình cần không ạ? Em còn dạng data theo hàng ngang nữa.
 
Upvote 0
Bác có thể chỉ em chỗ nào để lọc ra những data mình cần không ạ? Em còn dạng data theo hàng ngang nữa.
Tất cả đều thực hiện với M-code của PQ. Bạn cứ lấy 1 file xuống, xào nấu, lọc, xoay ngang xoay dọc đúng ý. Bỏ code đó vào trong vòng lặp của folder.
 
Upvote 0
Tất cả đều thực hiện với M-code của PQ. Bạn cứ lấy 1 file xuống, xào nấu, lọc, xoay ngang xoay dọc đúng ý. Bỏ code đó vào trong vòng lặp của folder.
Có thể cho em xin hướng dẫn bằng hình ảnh hoặc video được không ạ? Em làm loạn hết lên rồi.
1702228425431.png
 
Upvote 0
Có thể cho em xin hướng dẫn bằng hình ảnh hoặc video được không ạ? Em làm loạn hết lên rồi.
Nếu chỉ sửa đường dẫn thư mục ở dòng đầu tiên thì bắt buộc phải chạy. Bạn phải nói rõ là "loạn" như thế nào, kết quả loạn đâu? Code copy cho cái hình to lên mới xem được.
 
Upvote 0
Có thể cho em xin hướng dẫn bằng hình ảnh hoặc video được không ạ? Em làm loạn hết lên rồi.
View attachment 297456
Đổi mỗi cái đường dẫn là được rồi, sửa code lung tung làm gì khi bạn không hiểu, muốn sửa thì phải hiểu code đấy nó chạy như nào, trong khi bạn còn chưa biết Powe query thì làm sao sửa code 2 vòng lặp như vậy được. Khá mờ nhìn không rõ như khả năng sai ở bước Renamed Columns
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Tất cả đều thực hiện với M-code của PQ. Bạn cứ lấy 1 file xuống, xào nấu, lọc, xoay ngang xoay dọc đúng ý. Bỏ code đó vào trong vòng lặp của folder.
Thí dụ lấy file Table001 sẽ được code:

1702352152713.png

Ghép đoạn code này vào trong vòng lặp của 1 code lấy toàn folder, dùng List.Transform để lặp. Còn kỹ năng lặp thì không thể giải thích cho người mới học trong 1 tiếng đồng hồ được.
 
Lần chỉnh sửa cuối:
Upvote 0
Thí dụ lấy file Table001 sẽ được code:

View attachment 297496

Ghép đoạn code này vào trong vòng lặp của 1 code lấy toàn folder, dùng List.Transform để lặp. Còn kỹ năng lặp thì không thể giải thích cho người mới học trong 1 tiếng đồng hồ được.
1. Cái trên là em sửa lại file của anh ạ! Em dùng Excel16 Power Query không có phần lấy dữ liệu từ PDF.
Em cũng xin lỗi là trên không phải file gốc nên em áp dụng vào sửa bị lỗi.
2. Vì vấn đề riêng tư nên em gửi tệp gốc bằng liên kết này ạ.
Anh giúp em làm như #7 và lấy những số em nhập bằng tay trong file Excel với ạ. Bên trong có hai dạng dọc và ngang.
3. Em xin lỗi vì đòi hỏi quá nhiều. Mong anh giúp em và có thể chỉ em luôn các bước với ạ, sau nếu có gặp dạng dữ liệu khác thì tự làm được. Em xem một vài video hướng dẫn về Power Query mà vẫn ngu muội lắm.
Bài đã được tự động gộp:

Đổi mỗi cái đường dẫn là được rồi, sửa code lung tung làm gì khi bạn không hiểu, muốn sửa thì phải hiểu code đấy nó chạy như nào, trong khi bạn còn chưa biết Powe query thì làm sao sửa code 2 vòng lặp như vậy được. Khá mờ nhìn không rõ như khả năng sai ở bước Renamed Columns
Vâng anh. Em chưa biết gì về Power Query, cũng không ngờ trong Excel còn nhiều thứ chưa biết mà lại hay đến vậy. Cảm ơn các anh giúp đỡ.
 
Upvote 0
Thí dụ lấy file Table001 sẽ được code:

View attachment 297496

Ghép đoạn code này vào trong vòng lặp của 1 code lấy toàn folder, dùng List.Transform để lặp. Còn kỹ năng lặp thì không thể giải thích cho người mới học trong 1 tiếng đồng hồ được.
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 ạ.
 

File đính kèm

  • PDF_to_Excel.xlsx
    17.3 KB · Đọc: 10
Upvote 0
Web KT

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

Back
Top Bottom