python如何提取5000份word文档中某个标题下的全部内容到word文档中(包括表格、图片、python自动化办公)

需求是这样子的,上边要求实习生将5000多份年报中主营业务标题下的全部内容保存到一份word文档中。虽然说我是来打杂的,但是啊这5000多份,这不得累死我,如果用手一份一份查找复制的话,一份年报可是有几万行数据的呢,这怎么搞,我一个星期都干不完。

那没办法的了,只能想其他办法的了。肯定是上手比较容易的python的拉,首选就是你的了。

具体实现原理请看:http://t.csdn.cn/Blq9b

提取源文件夹中的5000份word年报中主营业务标题下的所有内容到新的文件夹

 运行结果:

 全部代码:

import win32com.client as win32
from win32com.client import constants
import os
import docx
list_question = []
# 获取内容
def get_content():
    file_name = get_filename()
    for i in range(len(file_name)):
        flag = 0
        flag_1 = 1
        # 打开word应用程序
        word = win32.DispatchEx('Word.Application')
        # 是否可视化
        word.Visible = 0
        # 源文件路径
        file_path = r'D:/源文件/{}'.format(file_name[i])
        print(file_path)
        # 打开
        doc = word.Documents.Open(file_path)
        # 光标start的查找
        # 赋值对象
        search_range = doc.Content
        # 查找内容
        if(search_range.Find.Execute(FindText="报告期内公司从事的主要业务") or search_range.Find.Execute(FindText="报告期内公司从事的业务情况")):
            # 选中查找到的内容
            search_range.Select()
            # 光标左移
            word.Selection.MoveLeft()
            # 将光标位置赋予start
            start = word.Selection.Start.numerator
            print(start)
            flag = 1

            # 光标end的查找  同上
        search_range = doc.Content
        if(search_range.Find.Execute(FindText="三、核心竞争力分析") or search_range.Find.Execute(FindText="四、 报告期内核心竞争力分析")):
            search_range.Select()
            word.Selection.MoveLeft()
            end = word.Selection.Start.numerator
            print(end)
            flag_1 = 1

        if(flag and flag_1):
            if(start < end):
                # 选取光标start到光标end的内容
                doc.Range(start, end).Select()
                # 复制
                word.Selection.Copy()
                # 粘贴的目标文件
                file_name[i] = "业务_" + file_name[i]
                file_path = r'D:/目标文件/{}'.format(file_name[i])
                doc_new = word.Documents.Open(file_path)
                # 粘贴
                doc_new.Application.ActiveDocument.Range().Paste()
                # 关闭两个文件
                doc_new.Close()
                print('复制成功')
            else:
                list_question.append([file_name[i]])
        else:
            list_question.append([file_name[i]])
        doc.Close()
        word.Quit()

# 获取word文件名字
def get_filename():
    file_dir = "D:/源文件"
    for root, dirs, files in os.walk(file_dir, topdown=False):
        # print(dirs)  # 当前目录下所有子目录
        # print(files)  # 当前路径下所有非目录子文件
        return files

# 创建word文件
def build_wordfile():
    file_name = get_filename()
    # 创建文件
    for i in range(len(file_name)):
        file = docx.Document()
        file_name[i] = "业务_" + file_name[i]
        file.save('D:\\目标文件\\{}'.format(file_name[i]))
        print(file_name[i])

get_filename()
build_wordfile()
get_content()
print("提取不了的年报:")
print(list_question)

这个如果是手工的话,搞完应该要好几天吧,虽然是来打杂的,也不至于辣么打杂的吧,竟然这样子我花个10分钟运行完,剩下的几天,勉为其难摸摸鱼,一天交一点上去,嘿嘿又是一天!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值