【python】将word文档内容转换为excel表格

        在日常工作中,我们经常需要将Word文档中的内容提取并转换为Excel表格,以便进行数据分析和处理。本文将介绍如何使用Python编写一个简单的程序,将Word文档中的内容转换为Excel表格。

一.实例

        使用以下word文档作为例子:

【python】将word文档内容转换为excel表格_第1张图片

        工具界面如下:

【python】将word文档内容转换为excel表格_第2张图片

        第一个弹窗选择对应的文档后选择打开:

【python】将word文档内容转换为excel表格_第3张图片

        第二个弹窗选择保存路径以及excel表格的名字:

        生成后的效果如下:

【python】将word文档内容转换为excel表格_第4张图片

二.环境准备

        我们将使用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()

四.代码解析

1.导入库:

   import tkinter as tk
   from tkinter import filedialog
   from docx import Document
   import 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()

- 创建主窗口,设置窗口标题和大小。

  • 创建一个按钮,用户点击按钮即可开始转换。
  • 运行主循环,保持窗口显示。

你可能感兴趣的:(python,word,excel,python)