使用Python提取PDF表格到Excel文件的操作步驟
引言
在對PDF中的表格進行再利用時,除了直接將PDF文檔轉換為Excel文件,我們還可以提取PDF文檔中的表格數(shù)據并寫入Excel工作表。這樣做可以避免一些不必要的文本和格式帶來的干擾,獲得更易于分析和處理的表格數(shù)據,并方便進行更多的格式設置。利用Python,我們可以實現(xiàn)對PDF表格數(shù)據的批量提取,并寫入Excel工作表中,實現(xiàn)高效的提取寫入操作。本文將介紹如何使用Python提取PDF文檔中的表格并寫入Excel文件中。
本文所使用的方法需要用到Spire.PDF for Python和Spire.XLS for Python,PyPI:pip install spire.pdf, spire.xls。
Python提取PDF表格數(shù)據寫入Excel工作表
提取表格需要用到Spire.PDF for Python中的PdfTableExtractor類。我們可以使用載入的PDF文檔創(chuàng)建一個PdfTableExtractor對象,然后使用PdfTableExtractor.ExtractTable()方法直接提取指定頁面的所有表格返回為列表。然后,我們可以使用PdfTable.GetText()來獲取表格指定單元格的文本,再使用Spire.XLS for Python新建工作表并寫入讀取的數(shù)據到工作表中的相應位置。最后,對工作表進行合適的格式設置,即可完成PDF表格數(shù)據到Excel工作表的提取。
以下是詳細操作步驟:
- 導入所需模塊。
- 創(chuàng)建
PdfDocument對象,并使用PdfDocument.LoadFromFile()方法加載PDF文檔。 - 創(chuàng)建一個
Workbook對象,并使用Workbook.Worksheets.Clear()方法清除默認工作表。 - 為加載的PDF文檔創(chuàng)建一個
PdfTableExtractor對象。 - 使用
PdfTableExtractor.ExtractTable()方法提取文檔中每一頁的表格。 - 遍歷每個表格
- 使用
Workbook.Worksheets.Add()方法為每個表格在工作簿中添加一個工作表。 - 使用
Table.GetText()方法遍歷各行各列以獲取單元格值,并通過Worksheet.Range[].Text屬性將其插入工作表的相應位置。 - 設置單元格格式。
- 使用
- 使用
Workbook.SaveToFile()方法保存工作簿。 - 釋放資源。
代碼示例
from spire.pdf import *
from spire.xls import *
# 創(chuàng)建一個 PdfDocument 對象
pdf = PdfDocument()
# 加載一個 PDF 文檔
pdf.LoadFromFile("示例.pdf")
# 創(chuàng)建一個 Workbook 對象
workbook = Workbook()
# 清除默認工作表
workbook.Worksheets.Clear()
# 創(chuàng)建一個 PdfTableExtractor 對象
extractor = PdfTableExtractor(pdf)
# 從每個 PDF 頁面提取表格
for pageIndex in range(pdf.Pages.Count):
tables = extractor.ExtractTable(pageIndex)
# 如果有多個表格則迭代
if tables is not None:
for tableIndex in range(len(tables)):
# 獲取一個表格
table = tables[tableIndex]
# 為該表格創(chuàng)建一個工作表
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", "")
# 將單元格的值寫入工作表中的相應單元格
sheet.Range[rowIndex + 1, colIndex + 1].Text = cellText
# 設置表頭行樣式
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ù)據行樣式
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
# 自動調整列寬
for j in range(1, sheet.Columns.Count):
sheet.AutoFitColumn(j)
# 保存工作簿
workbook.SaveToFile("output/PDFTableToExcel.xlsx", FileFormat.Version2016)
workbook.Dispose()
pdf.Close()
結果

本文演示了如何使用Python提取PDF文檔表格數(shù)據到Excel文件中。
到此這篇關于使用Python提取PDF表格到Excel文件的操作步驟的文章就介紹到這了,更多相關Python提取PDF表格到Excel內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python語言檢測模塊langid和langdetect的使用實例
今天小編就為大家分享一篇關于Python語言檢測模塊langid和langdetect的使用實例,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02
在Python的web框架中編寫創(chuàng)建日志的程序的教程
這篇文章主要介紹了在Python的web框架中編寫創(chuàng)建日志的程序的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04
python opencv實現(xiàn)旋轉矩形框裁減功能
這篇文章主要為大家詳細介紹了python opencv實現(xiàn)旋轉矩形框裁減功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Python使用Slider組件實現(xiàn)調整曲線參數(shù)功能示例
這篇文章主要介紹了Python使用Slider組件實現(xiàn)調整曲線參數(shù)功能,結合實例形式分析了Python使用matplotlib與Slider組件進行圖形繪制相關操作技巧,需要的朋友可以參考下2019-09-09

