吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1153|回复: 35
收起左侧

[Python 原创] python批量将word文档提取到excel表格

[复制链接]
矢岛舞美 发表于 2024-11-1 15:53
本帖最后由 矢岛舞美 于 2024-11-4 11:06 编辑

某天工作中需要将大量word文档中的内容提取到excel表格里面来进行处理,所以便有了这个东西。

[Python] 纯文本查看 复制代码
import os
from docx import Document
import openpyxl
from tkinter import Tk, filedialog


def extract_text_from_docx(docx_path):
    doc = Document(docx_path)
    paragraphs = doc.paragraphs
    title = paragraphs[0].text if paragraphs else ''
    content = ''.join([f'<p>{p.text}</p>' for p in paragraphs[1:]])
    return title, content


def create_excel(excel_path):
    wb = openpyxl.Workbook()
    ws = wb.active
    ws.append(["标题", "内容"])
    wb.save(excel_path)
    return excel_path


def append_to_excel(data, excel_path):
    wb = openpyxl.load_workbook(excel_path)
    ws = wb.active

    for title, content in data:
        ws.append([title, content])

    wb.save(excel_path)


def main():
    # 使用Tkinter打开文件夹选择对话框
    root = Tk()
    root.withdraw()  # 隐藏主窗口
    folder_path = filedialog.askdirectory(title="选择包含Word文档的文件夹")

    if not folder_path:
        print("未选择文件夹,程序退出。")
        return

    excel_path = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")],
                                              title="保存Excel文件")

    if not excel_path:
        print("未选择保存路径,程序退出。")
        return

    # 创建Excel文件
    create_excel(excel_path)

    # 使用os.walk递归遍历文件夹
    for root_dir, _, files in os.walk(folder_path):
        data = []
        for filename in files:
            if filename.endswith(".docx"):
                docx_path = os.path.join(root_dir, filename)
                title, content = extract_text_from_docx(docx_path)
                data.append((title, content))

        # 将数据追加到Excel文件
        append_to_excel(data, excel_path)

    print(f"数据已成功保存到 {excel_path}")


if __name__ == "__main__":
    main()


优化版本,解决提取后内容有标签的问题

[Python] 纯文本查看 复制代码
import os
from docx import Document
import openpyxl
from tkinter import Tk, filedialog

def extract_text_from_docx(docx_path):
    doc = Document(docx_path)
    paragraphs = doc.paragraphs
    title = paragraphs[0].text if paragraphs else ''
    content = '\n'.join([p.text for p in paragraphs[1:]])
    return title, content

def create_excel(excel_path):
    wb = openpyxl.Workbook()
    ws = wb.active
    ws.append(["标题", "内容"])
    wb.save(excel_path)

def append_to_excel(data, excel_path):
    wb = openpyxl.load_workbook(excel_path)
    ws = wb.active

    for title, content in data:
        ws.append([title, content])

    wb.save(excel_path)

def main():
    # 使用Tkinter打开文件夹选择对话框
    root = Tk()
    root.withdraw()  # 隐藏主窗口
    folder_path = filedialog.askdirectory(title="选择包含Word文档的文件夹")

    if not folder_path:
        print("未选择文件夹,程序退出。")
        return

    excel_path = filedialog.asksaveasfilename(defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")],
                                              title="保存Excel文件")

    if not excel_path:
        print("未选择保存路径,程序退出。")
        return

    # 创建Excel文件
    create_excel(excel_path)

    # 使用os.walk递归遍历文件夹
    for root_dir, _, files in os.walk(folder_path):
        data = []
        for filename in files:
            if filename.endswith(".docx"):
                docx_path = os.path.join(root_dir, filename)
                title, content = extract_text_from_docx(docx_path)
                data.append((title, content))

        # 将数据追加到Excel文件
        append_to_excel(data, excel_path)

    print(f"数据已成功保存到 {excel_path}")

if __name__ == "__main__":
    main()

免费评分

参与人数 4吾爱币 +9 热心值 +4 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Flanders + 1 + 1 谢谢@Thanks!
wangpj520 + 1 + 1 用心讨论,共获提升!
serlinna + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Flanders 发表于 2024-11-1 16:59
001.png 试了下 转换出来是这个效果,楼主能科普下doc内的内容格式改怎么写吗 这是我测试的文档 该如何正确修改 请教一下 doc_excel.zip (14.46 KB, 下载次数: 8)
Flanders 发表于 2024-11-1 17:03
另外有没有大神有示例可以把 xlsx的数据“标题、内容、结论”批量提取到word文档保存吗
jalonewy 发表于 2024-11-1 16:21
gumu880310 发表于 2024-11-1 16:28
感谢楼主,留个脚印。
wusim 发表于 2024-11-1 16:32
请问有没已编译的程序
greatzdl 发表于 2024-11-1 16:32
学习了 很小巧实用
hkkuup 发表于 2024-11-1 16:38
在哪里?怎么用??
cku 发表于 2024-11-1 16:41
表格也可以搬过去吗
zhaoysh1004 发表于 2024-11-1 16:44
感谢分享,每天一个编程小技巧
flylujun 发表于 2024-11-1 16:56
WORD中的表格,文本,图片都可以搬过去吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 17:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表