python提取文档中表格
时间: 2025-06-29 14:11:42 浏览: 25
### 使用Python从文档中提取表格数据
#### 方法一:使用`python-docx`处理Word文档(.docx)
对于`.docx`格式的Word文档,可以利用`python-docx`库来读取并解析其中的表格内容。此方法适用于现代版本的Office Word文档。
```python
from docx import Document
def extract_tables_from_docx(doc_path):
document = Document(doc_path)
all_data = []
for table in document.tables:
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
all_data.extend(data)
return all_data
```
上述函数遍历指定路径下的Word文档内的所有表格,并将其每一行的数据转化为字典形式存储起来[^2]。
#### 方法二:借助`Spire.Doc for Python`实现更复杂操作
除了基本的功能外,如果项目需求涉及到更多复杂的场景,则可以选择更为强大的工具——`Spire.Doc for Python`。该库不仅能够轻松完成表格数据抽取的任务,而且提供了丰富的API接口用于定制化开发[^1]。
安装命令如下:
```bash
pip install spire.doc
```
下面是一个简单的例子展示如何用它获取Word里的表格信息:
```python
import Spire.Doc as Doc
from Spire.Doc.Documents import *
def get_table_info(file_name):
# 加载文档
document = Doc.LoadFromFile(file_name)
tables = []
for section in document.Sections:
for paragraph in section.Paragraphs:
childObjects = paragraph.ChildObjects
for obj in childObjects:
if isinstance(obj, Table):
rows = [[cell.Text for cell in row.Cells] for row in obj.Rows]
tables.append(rows)
return tables
```
这段代码会返回一个列表,里面包含了各个表格对应的二维数组表示法,每个子列表代表一行记录。
#### 处理PDF文件中的表格
当面对的是PDF类型的文件时,可采用专门针对此类格式设计的解决方案。例如,`PyPDF2`可用于初步定位页面上的表格区域;而像Tabula这样的专用软件则更适合进一步精确抓取表格结构及其内部的文字内容[^3]。
```python
from PyPDF2 import PdfFileReader
from tabula.io import read_pdf
pdf = PdfFileReader(open("example.pdf", "rb"))
total_pages = pdf.getNumPages()
tables = read_pdf("example.pdf", pages="all", multiple_tables=True)
for page_num, df_list in zip(range(1, total_pages + 1), tables):
for idx, df in enumerate(df_list):
print(f"Page {page_num}, Table {idx}")
print(df.head())
```
这里先通过`PyPDF2`统计页数,再调用`tabula-py`按页码逐个检索可能存在的多张表格,并打印前几条样例行以便验证结果正确性。
阅读全文
相关推荐


















