使用Python提取PDF表格到Excel文件的操作步驟
引言
在對(duì)PDF中的表格進(jìn)行再利用時(shí),除了直接將PDF文檔轉(zhuǎn)換為Excel文件,我們還可以提取PDF文檔中的表格數(shù)據(jù)并寫(xiě)入Excel工作表。這樣做可以避免一些不必要的文本和格式帶來(lái)的干擾,獲得更易于分析和處理的表格數(shù)據(jù),并方便進(jìn)行更多的格式設(shè)置。利用Python,我們可以實(shí)現(xiàn)對(duì)PDF表格數(shù)據(jù)的批量提取,并寫(xiě)入Excel工作表中,實(shí)現(xiàn)高效的提取寫(xiě)入操作。本文將介紹如何使用Python提取PDF文檔中的表格并寫(xiě)入Excel文件中。
本文所使用的方法需要用到Spire.PDF for Python和Spire.XLS for Python,PyPI:pip install spire.pdf, spire.xls。
Python提取PDF表格數(shù)據(jù)寫(xiě)入Excel工作表
提取表格需要用到Spire.PDF for Python中的PdfTableExtractor類(lèi)。我們可以使用載入的PDF文檔創(chuàng)建一個(gè)PdfTableExtractor對(duì)象,然后使用PdfTableExtractor.ExtractTable()方法直接提取指定頁(yè)面的所有表格返回為列表。然后,我們可以使用PdfTable.GetText()來(lái)獲取表格指定單元格的文本,再使用Spire.XLS for Python新建工作表并寫(xiě)入讀取的數(shù)據(jù)到工作表中的相應(yīng)位置。最后,對(duì)工作表進(jìn)行合適的格式設(shè)置,即可完成PDF表格數(shù)據(jù)到Excel工作表的提取。
以下是詳細(xì)操作步驟:
- 導(dǎo)入所需模塊。
- 創(chuàng)建
PdfDocument對(duì)象,并使用PdfDocument.LoadFromFile()方法加載PDF文檔。 - 創(chuàng)建一個(gè)
Workbook對(duì)象,并使用Workbook.Worksheets.Clear()方法清除默認(rèn)工作表。 - 為加載的PDF文檔創(chuàng)建一個(gè)
PdfTableExtractor對(duì)象。 - 使用
PdfTableExtractor.ExtractTable()方法提取文檔中每一頁(yè)的表格。 - 遍歷每個(gè)表格
- 使用
Workbook.Worksheets.Add()方法為每個(gè)表格在工作簿中添加一個(gè)工作表。 - 使用
Table.GetText()方法遍歷各行各列以獲取單元格值,并通過(guò)Worksheet.Range[].Text屬性將其插入工作表的相應(yīng)位置。 - 設(shè)置單元格格式。
- 使用
- 使用
Workbook.SaveToFile()方法保存工作簿。 - 釋放資源。
代碼示例
from spire.pdf import *
from spire.xls import *
# 創(chuàng)建一個(gè) PdfDocument 對(duì)象
pdf = PdfDocument()
# 加載一個(gè) PDF 文檔
pdf.LoadFromFile("示例.pdf")
# 創(chuàng)建一個(gè) Workbook 對(duì)象
workbook = Workbook()
# 清除默認(rèn)工作表
workbook.Worksheets.Clear()
# 創(chuàng)建一個(gè) PdfTableExtractor 對(duì)象
extractor = PdfTableExtractor(pdf)
# 從每個(gè) PDF 頁(yè)面提取表格
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", "")
# 將單元格的值寫(xiě)入工作表中的相應(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解使用python的logging模塊在stdout輸出的兩種方法
這篇文章主要介紹了詳解使用python的logging模塊在stdout輸出的相關(guān)資料,需要的朋友可以參考下2017-05-05
一文深入學(xué)習(xí)Python中的os.listdir函數(shù)
這篇文章主要給大家介紹了關(guān)于Python中os.listdir函數(shù)的相關(guān)資料,os.listdir是 Python中的一個(gè)函數(shù),它的意思是返回指定目錄下的文件和文件夾的名稱(chēng)的列表,需要的朋友可以參考下2023-10-10
解決python 出現(xiàn)unknown encoding: idna 的問(wèn)題
這篇文章主要介紹了解決python出現(xiàn) unknown encoding: idna 的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
python實(shí)現(xiàn)計(jì)算倒數(shù)的方法
這篇文章主要介紹了python實(shí)現(xiàn)計(jì)算倒數(shù)的方法,涉及Python針對(duì)數(shù)學(xué)運(yùn)算操作的相關(guān)技巧,需要的朋友可以參考下2015-07-07
python 阿里云oss實(shí)現(xiàn)直傳簽名與回調(diào)驗(yàn)證的示例方法
這篇文章主要介紹了python 阿里云oss實(shí)現(xiàn)直傳簽名與回調(diào)驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python 文件數(shù)據(jù)讀寫(xiě)的具體實(shí)現(xiàn)
這篇文章主要介紹了Python 文件數(shù)據(jù)讀寫(xiě)的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Django ORM filter() 的運(yùn)用詳解
這篇文章主要介紹了Django ORM filter() 的運(yùn)用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
深度解析Python裝飾器常見(jiàn)用法與進(jìn)階技巧
Python 裝飾器(Decorator)是提升代碼可讀性與復(fù)用性的強(qiáng)大工具,本文將深入解析 Python 裝飾器的原理,常見(jiàn)用法,進(jìn)階技巧與最佳實(shí)踐,希望可以幫助大家寫(xiě)出更具專(zhuān)業(yè)水準(zhǔn)的 Python 代碼2025-06-06

