在数据处理和文档分析的过程中,有时我们需要从多个 Word 文档中提取特定的表格信息并将其保存为一个 Excel 文件。通过自动化处理,我们可以节省大量的时间并提高工作效率。本文将介绍如何使用 Python 来批量读取 Word 文档中的特定表格,并将其保存为 Excel 文件。
环境准备
在开始之前,我们需要安装一些必要的库。可以使用 pip
安装 python-docx
和 pandas
这两个库:
pip install python-docx pandas openpyxl
python-docx
是一个用于读取和写入 Word 文档的库。pandas
是一个强大的数据处理库,用于处理表格数据。openpyxl
是用于读取和写入 Excel 文件的库。
代码示例
以下是一个示例代码,用于批量读取 Word 文档中的特定表格,并将数据保存到 Excel 文件中:
import os
from docx import Document
import pandas as pd
def extract_table_from_docx(docx_path, table_index):
"""从指定的 Word 文档中提取特定的表格数据."""
doc = Document(docx_path)
# 检查文档中是否有表格
if len(doc.tables) > table_index:
table = doc.tables[table_index]
data = []
# 遍历表格中的每一行
for row in table.rows:
row_data = [cell.text.strip() for cell in row.cells]
data.append(row_data)
return data
else:
print(f"文档 {docx_path} 中没有找到指定的表格.")
return None
def main(folder_path, table_index, output_excel):
"""从指定文件夹中的所有 Word 文档中提取表格,并保存为 Excel 文件."""
all_data = [] # 用于保存所有提取的数据
for filename in os.listdir(folder_path):
if filename.endswith('.docx'):
docx_path = os.path.join(folder_path, filename)
print(f"正在处理: {docx_path}")
table_data = extract_table_from_docx(docx_path, table_index)
if table_data:
all_data.extend(table_data)
# 将合并的数据转换为 DataFrame
df = pd.DataFrame(all_data)
# 将数据保存为 Excel 文件
df.to_excel(output_excel, index=False, header=False)
print(f"数据已保存至: {output_excel}")
if __name__ == "__main__":
folder_path = 'path/to/your/docx/files' # 替换为你的文件夹路径
table_index = 0 # 指定你想提取的表格索引(从0开始)
output_excel = 'output.xlsx' # 指定输出的 Excel 文件名
main(folder_path, table_index, output_excel)
代码说明
- extract_table_from_docx 函数:
- 此函数接受 Word 文档路径和表格索引,通过
Document
类读取文档。 -
检查文档中表格的数量,如果指定的表格存在,则提取该表格的内容,并返回一个列表形式的数据。
-
main 函数:
- 此函数遍历指定文件夹中的所有
.docx
文件,提取每个文件中指定索引的表格数据。 -
所有提取的数据都存储在
all_data
列表中,并在最后将其转换为DataFrame
,然后保存为 Excel 文件。 -
执行部分:
- 设置文档保存路径、表格索引和输出 Excel 文件名,最后调用
main
函数。
总结
通过以上代码示例,我们可以轻松地批量读取 Word 文档中的特定表格,并将其保存为 Excel 文件。这种方法适用于需要处理大量文档数据的场景,可以显著提高工作效率。希望本文能够帮助你更好地掌握 Word 和 Excel 文件的自动化处理。