在日常工作中,我们经常需要将Word文档中的内容提取并转换为Excel表格,以便进行数据分析和处理。本文将介绍如何使用Python编写一个简单的程序,将Word文档中的内容转换为Excel表格。
一.实例
使用以下word文档作为例子:
工具界面如下:
第一个弹窗选择对应的文档后选择打开:
第二个弹窗选择保存路径以及excel表格的名字:
生成后的效果如下:
二.环境准备
我们将使用tkinter库创建一个图形用户界面(GUI),使用python-docx库读取Word文档,并使用openpyxl库将内容写入Excel文件。
pip install python-docx openpyxl
三.代码实现
以下是完整的代码示例:
import tkinter as tk
from tkinter import filedialog
from docx import Document
import openpyxldef convert_word_to_excel_full():# 选择Word文件word_file = filedialog.askopenfilename(filetypes=[("Word files", "*.docx")])if not word_file:return# 创建Excel工作簿workbook = openpyxl.Workbook()sheet = workbook.active# 读取Word文档doc = Document(word_file)for paragraph in doc.paragraphs:if paragraph.text.strip(): # 只处理非空段落# 检查段落中是否包含#符号parts = paragraph.text.split("#")# 处理以#分割的内容for part in parts:if part.strip(): # 只处理非空部分sheet.append([part.strip()]) # 将每个部分写入单独的单元格# 添加一个空行以分隔不同段落sheet.append([""]) # 添加空行以分隔段落# 遍历文档中的表格for table in doc.tables:# 在表格前添加一个空行以分隔段落和表格sheet.append([""]) # 添加空行以分隔for row in table.rows:row_data = []for cell in row.cells:row_data.append(cell.text)sheet.append(row_data) # 将表格行写入Excel# 保存Excel文件excel_file = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")])if excel_file:workbook.save(excel_file)# 创建主窗口
root = tk.Tk()
root.title("Word to Excel Converter")
root.geometry("400x250") # 设置窗口大小# 创建按钮
convert_button_full = tk.Button(root, text="Word文档转换为Excel", command=convert_word_to_excel_full, width=30)
convert_button_full.pack(pady=50) # 增加上下间距# 运行主循环
root.mainloop()
四.代码解析
1.导入库:
import tkinter as tkfrom tkinter import filedialogfrom docx import Documentimport openpyxl
- tkinter:用于创建图形用户界面(GUI)。
- filedialog:用于打开文件选择对话框。
- Document:来自python-docx库,用于读取Word文档。
- openpyxl:用于创建和操作Excel文件。
2.选择Word文件:
word_file = filedialog.askopenfilename(filetypes=[("Word files", "*.docx")])if not word_file:return
- 使用filedialog.askopenfilename方法让用户选择要转换的Word文件。如果用户没有选择文件,程序将返回,不继续执行。
3.创建Excel工作簿:
workbook = openpyxl.Workbook()sheet = workbook.active
- 使用openpyxl.Workbook()创建一个新的Excel工作簿,并获取活动的工作表。
4. 读取Word文档:
doc = Document(word_file)
- 使用Document类读取用户选择的Word文档。
5. 处理段落内容:
for paragraph in doc.paragraphs:if paragraph.text.strip(): # 只处理非空段落parts = paragraph.text.split("#")for part in parts:if part.strip(): # 只处理非空部分sheet.append([part.strip()]) # 将每个部分写入单独的单元格sheet.append([""]) # 添加空行以分隔段落
- 遍历Word文档中的每个段落,检查段落是否为空。
- 使用split("#")方法将段落内容按“#”符号分割。
- 对于每个分割后的部分,检查是否为空,如果不为空,则将其写入Excel的单独单元格。
- 在每个段落处理完后,添加一个空行以分隔不同段落,确保Excel中的内容结构与Word文档一致。
6.处理表格内容:
for table in doc.tables:sheet.append([""]) # 添加空行以分隔for row in table.rows:row_data = []for cell in row.cells:row_data.append(cell.text)sheet.append(row_data) # 将表格行写入Excel
- 遍历Word文档中的表格,在表格前添加一个空行以分隔段落和表格。
- 对于每个表格的行,遍历每个单元格,将其内容写入Excel。
7.保存Excel文件:
excel_file = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")])if excel_file:workbook.save(excel_file)
- 使用filedialog.asksaveasfilename方法让用户选择保存的Excel文件名和位置。如果用户选择了文件名,则保存工作簿。
8.创建GUI:
root = tk.Tk()root.title("Word to Excel Converter")root.geometry("400x250") # 设置窗口大小convert_button_full = tk.Button(root, text="Word文档转换为Excel", command=convert_word_to_excel_full, width=30)convert_button_full.pack(pady=50) # 增加上下间距root.mainloop()
- 创建主窗口,设置窗口标题和大小。
- 创建一个按钮,用户点击按钮即可开始转换。
- 运行主循环,保持窗口显示。