在日常工作中,我们经常需要将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 openpyxl
def 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()
import tkinter as tk
from tkinter import filedialog
from docx import Document
import openpyxl
- tkinter:用于创建图形用户界面(GUI)。
word_file = filedialog.askopenfilename(filetypes=[("Word files", "*.docx")])
if not word_file:
return
- 使用filedialog.askopenfilename方法让用户选择要转换的Word文件。如果用户没有选择文件,程序将返回,不继续执行。
workbook = openpyxl.Workbook()
sheet = workbook.active
- 使用openpyxl.Workbook()创建一个新的Excel工作簿,并获取活动的工作表。
doc = Document(word_file)
- 使用Document类读取用户选择的Word文档。
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文档中的每个段落,检查段落是否为空。
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_file = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")])
if excel_file:
workbook.save(excel_file)
- 使用filedialog.asksaveasfilename方法让用户选择保存的Excel文件名和位置。如果用户选择了文件名,则保存工作簿。
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()
- 创建主窗口,设置窗口标题和大小。