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

        在日常工作中,我们经常需要将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()

四.代码解析

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()

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

  • 创建一个按钮,用户点击按钮即可开始转换。
  • 运行主循环,保持窗口显示。
  • 作者:师兄师兄怎么办

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【python】将word文档内容转换为excel表格

    发表回复