Python读取Word文档中的表格:从入门到精通
Python读取Word文档中的表格:从入门到精通
在日常办公或数据处理中,Word文档中的表格常常包含大量结构化信息,而手动复制粘贴不仅效率低下,还容易出错。本文将带你全面掌握使用Python读取Word表格的技巧,让你的数据提取自动化起来!
一、准备工作:安装python-docx
python-docx 是Python操作Word文档(.docx)的首选库。安装非常简单:
pip install python-docx
注意:该库不支持旧的 .doc 格式,如需处理 .doc 文件,可先用Word另存为 .docx。
二、读取Word文档中的表格
假设我们有一个名为“销售报表.docx”的文档,其中包含多个表格。以下代码将遍历所有表格并打印其内容:
from docx import Document
doc = Document('销售报表.docx')
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
print(cell.text, end='\t')
print() # 换行
三、进阶:获取表格结构
有时我们需要将表格数据转换为更易处理的格式,如列表嵌套字典,或直接转为Pandas DataFrame。以下示例展示如何提取表头和数据:
import pandas as pd
table = doc.tables[0] # 假设我们只处理第一个表格
headers = [cell.text for cell in table.rows[0].cells]
data = []
for row in table.rows[1:]:
row_data = [cell.text for cell in row.cells]
data.append(row_data)
df = pd.DataFrame(data, columns=headers)
print(df)
四、处理合并单元格
合并单元格在Word表格中很常见。python-docx会为每个物理单元格(即使合并后消失)保留位置,但内容可能重复或为空。我们可以通过检测单元格的 tc 元素属性来判断:
def get_cell_text(cell):
# 如果单元格是合并后的一部分,其内容可能为空或与主单元格相同
# 更稳妥的方法:检查vMerge或gridSpan属性
return cell.text if cell.tc and 'vMerge' not in cell.tc.get('w:val') else ''
五、实战:将表格导出为Excel
利用pandas导出到Excel,数据清洗一步到位:
import pandas as pd
# 假设df已经获得
df.to_excel('output.xlsx', index=False)
六、注意事项与常见问题
- 文档格式: 确保是 .docx 格式,.doc 请先转换。
- 表格嵌套: 如果表格嵌套在表格内,需递归处理。
- 性能: 大文档建议逐表处理,避免一次性加载所有表格导致内存占用过高。
- 中文编码: 正常使用无需特殊处理,但若遇到乱码,检查文件编码或系统区域设置。
七、结语
掌握python-docx操作Word表格,可以极大提升文档数据处理效率。结合pandas、Excel等工具,轻松实现办公自动化。现在,就去试试提取你手头Word文档中的表格数据吧!