使用Python提取PDF表格到Excel文件的操作步驟
引言
在對PDF中的表格進(jìn)行再利用時(shí),除了直接將PDF文檔轉(zhuǎn)換為Excel文件,我們還可以提取PDF文檔中的表格數(shù)據(jù)并寫入Excel工作表。這樣做可以避免一些不必要的文本和格式帶來的干擾,獲得更易于分析和處理的表格數(shù)據(jù),并方便進(jìn)行更多的格式設(shè)置。利用Python,我們可以實(shí)現(xiàn)對PDF表格數(shù)據(jù)的批量提取,并寫入Excel工作表中,實(shí)現(xiàn)高效的提取寫入操作。本文將介紹如何使用Python提取PDF文檔中的表格并寫入Excel文件中。
本文所使用的方法需要用到Spire.PDF for Python和Spire.XLS for Python,PyPI:pip install spire.pdf, spire.xls
。
Python提取PDF表格數(shù)據(jù)寫入Excel工作表
提取表格需要用到Spire.PDF for Python中的PdfTableExtractor類。我們可以使用載入的PDF文檔創(chuàng)建一個(gè)PdfTableExtractor對象,然后使用PdfTableExtractor.ExtractTable()方法直接提取指定頁面的所有表格返回為列表。然后,我們可以使用PdfTable.GetText()來獲取表格指定單元格的文本,再使用Spire.XLS for Python新建工作表并寫入讀取的數(shù)據(jù)到工作表中的相應(yīng)位置。最后,對工作表進(jìn)行合適的格式設(shè)置,即可完成PDF表格數(shù)據(jù)到Excel工作表的提取。
以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument
對象,并使用PdfDocument.LoadFromFile()
方法加載PDF文檔。 - 創(chuàng)建一個(gè)
Workbook
對象,并使用Workbook.Worksheets.Clear()
方法清除默認(rèn)工作表。 - 為加載的PDF文檔創(chuàng)建一個(gè)
PdfTableExtractor
對象。 - 使用
PdfTableExtractor.ExtractTable()
方法提取文檔中每一頁的表格。 - 遍歷每個(gè)表格
- 使用
Workbook.Worksheets.Add()
方法為每個(gè)表格在工作簿中添加一個(gè)工作表。 - 使用
Table.GetText()
方法遍歷各行各列以獲取單元格值,并通過Worksheet.Range[].Text
屬性將其插入工作表的相應(yīng)位置。 - 設(shè)置單元格格式。
- 使用
- 使用
Workbook.SaveToFile()
方法保存工作簿。 - 釋放資源。
代碼示例
from spire.pdf import * from spire.xls import * # 創(chuàng)建一個(gè) PdfDocument 對象 pdf = PdfDocument() # 加載一個(gè) PDF 文檔 pdf.LoadFromFile("示例.pdf") # 創(chuàng)建一個(gè) Workbook 對象 workbook = Workbook() # 清除默認(rèn)工作表 workbook.Worksheets.Clear() # 創(chuàng)建一個(gè) PdfTableExtractor 對象 extractor = PdfTableExtractor(pdf) # 從每個(gè) PDF 頁面提取表格 for pageIndex in range(pdf.Pages.Count): tables = extractor.ExtractTable(pageIndex) # 如果有多個(gè)表格則迭代 if tables is not None: for tableIndex in range(len(tables)): # 獲取一個(gè)表格 table = tables[tableIndex] # 為該表格創(chuàng)建一個(gè)工作表 sheet = workbook.Worksheets.Add(f"Page{pageIndex + 1}-Table{tableIndex + 1}") # 迭代表格的行和列 for rowIndex in range(table.GetRowCount()): for colIndex in range(table.GetColumnCount()): # 獲取單元格的值 text = table.GetText(rowIndex, colIndex) cellText = text.replace("\n", "") # 將單元格的值寫入工作表中的相應(yīng)單元格 sheet.Range[rowIndex + 1, colIndex + 1].Text = cellText # 設(shè)置表頭行樣式 sheet.Rows.get_Item(0).Style.Font.FontName = "HarmonyOS Sans SC" sheet.Rows.get_Item(0).Style.Font.Size = 12 sheet.Rows.get_Item(0).Style.Font.IsBold = True sheet.Rows.get_Item(0).Style.HorizontalAlignment = HorizontalAlignType.Center # 設(shè)置數(shù)據(jù)行樣式 for i in range(1, sheet.Rows.Count): sheet.Rows.get_Item(i).Style.Font.FontName = "HarmonyOS Sans SC" sheet.Rows.get_Item(i).Style.Font.Size = 12 sheet.Rows.get_Item(i).Style.HorizontalAlignment = HorizontalAlignType.Left # 自動(dòng)調(diào)整列寬 for j in range(1, sheet.Columns.Count): sheet.AutoFitColumn(j) # 保存工作簿 workbook.SaveToFile("output/PDFTableToExcel.xlsx", FileFormat.Version2016) workbook.Dispose() pdf.Close()
結(jié)果
本文演示了如何使用Python提取PDF文檔表格數(shù)據(jù)到Excel文件中。
到此這篇關(guān)于使用Python提取PDF表格到Excel文件的操作步驟的文章就介紹到這了,更多相關(guān)Python提取PDF表格到Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python腳本利用adb進(jìn)行手機(jī)控制的方法
這篇文章主要介紹了Python腳本利用adb進(jìn)行手機(jī)控制的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python流行ORM框架sqlalchemy安裝與使用教程
這篇文章主要介紹了Python流行ORM框架sqlalchemy安裝與使用,結(jié)合具體實(shí)例形式分析了sqlalchemy的安裝及ORM映射、查詢等相關(guān)操作技巧,需要的朋友可以參考下2019-06-06在Python中使用matplotlib模塊繪制數(shù)據(jù)圖的示例
這篇文章主要介紹了在Python中使用matplotlib模塊繪制數(shù)據(jù)圖的示例,matplotlib模塊經(jīng)常被用來實(shí)現(xiàn)數(shù)據(jù)的可視化,需要的朋友可以參考下2015-05-05Python區(qū)塊鏈范圍結(jié)論及Genesis Block的添加教程
這篇文章主要為大家介紹了Python區(qū)塊鏈范圍結(jié)論及Genesis Block的添加,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python first-order-model實(shí)現(xiàn)讓照片動(dòng)起來
本文將利用first-order-model實(shí)現(xiàn)讓照片動(dòng)起來,除了表情驅(qū)動(dòng)照片,還可以姿態(tài)遷移。文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下2022-06-06夯實(shí)基礎(chǔ)python集合的應(yīng)用場景及字符串定義和表示
這篇文章主要為大家介紹了python集合的應(yīng)用場景及字符串定義和表示,來幫大家夯實(shí)基礎(chǔ),有需要的朋友可以借鑒參考下,希望能夠有所幫助2023-10-10