批处理word文件及excel文件----从文件中提取信息为word重命名

title: 批处理word文件及excel文件

categories:

  • [兴趣,编程语言,python]

tags:

  • python
  • work
  • note

date: 2021-05-29 22:01:57
password:
top:

原文链接

Python批量处理Word文档(.doc/.docx)——批量获取文档标题并以标题重命名文件_Lee_Natuo的博客->CSDN博客

原文使用的是python2,在实际应用过程中修改了下代码.

将文件另存为其他格式

word文件另存为代码

修改文件目录即可直接使用

import os
from win32com import client as wc  # 导入win32com.client模块并设置别名wc
word = wc.Dispatch("Word.Application")  # 模拟打开 office-word

ul = r"D:\\Users\\liuzh\\Desktop\\报验\\开挖初支\\一工区\\资料\\资料\\一工区测量开挖放样资料全部\\2.0"  # 设置需要处理的文件所在文件夹目录,使用/或\\
file_name_list = os.listdir(ul)  # 将文件夹目录下的文件名放入列表
print(len(file_name_list))  # 瞄一眼文件数量对不对
for file in range(len(file_name_list)):  # for循环开始处理文件,python3没有xrange了
    doc = word.Documents.Open(ul + "\\" + file_name_list[file])  # 打开文件
    rename = os.path.splitext(file_name_list[file])  # os.path.splitext(): 分离文件名与扩展名,用rename[0]只取文件名
    # print(rename) # 瞄一眼元组
    doc.SaveAs(ul + "\\" + rename[0] + ".docx", 16)  # 另存为.docx
    doc.Close()
word.Quit()

word另存为文件格式

想要把文件另存的格式

wdFormatDocument = 0
wdFormatDocument97 = 0
wdFormatDocumentDefault = 16
wdFormatDOSText = 4
wdFormatDOSTextLineBreaks = 5
wdFormatEncodedText = 7
wdFormatFilteredHTML = 10
wdFormatFlatXML = 19
wdFormatFlatXMLMacroEnabled = 20
wdFormatFlatXMLTemplate = 21
wdFormatFlatXMLTemplateMacroEnabled = 22
wdFormatHTML = 8
wdFormatPDF = 17
wdFormatRTF = 6
wdFormatTemplate = 1
wdFormatTemplate97 = 1
wdFormatText = 2
wdFormatTextLineBreaks = 3
wdFormatUnicodeText = 7
wdFormatWebArchive = 9
wdFormatXML = 11
wdFormatXMLDocument = 12
wdFormatXMLDocumentMacroEnabled = 13
wdFormatXMLTemplate = 14
wdFormatXMLTemplateMacroEnabled = 15

参考

  1. Python 使用 win32com 模块对 word 文件进行操作 – ”竹先森゜ – 博客园 (cnblogs.com)
  2. python批量操作word文档实战_记录一次Python批量处理doc文件_weixin_39599342的博客-CSDN博客
  3. 工具(五)–将doc格式文件批量转为docx_a18612039484的博客-CSDN博客

重命名

word文件重命名

修改文件目录即可直接使用…那是不可能的!!!

看一下怎么对字符串切片

import os
import time
from docx import Document
from win32com import client as wc  # 导入win32com.client模块并设置别名wc


def 另存为():  # 模块docx不支持对doc文件的修改,先另存一下.直接改后缀名是不行的.
    name = os.path.splitext(file_name_list[file])  # os.path.splitext(): 分离文件名与扩展名,用name[0]只取文件名
    docx = word.Documents.Open(ul + "\\" + file_name_list[file])  # 打开文件
    docx.SaveAs(ul + "\\" + name[0] + ".docx", 16)  # 另存为.docx
    docx.Close()  # 随开随关


def 重命名():
    name = os.path.splitext(file_name_list[file])  # os.path.splitext(): 分离文件名与扩展名,用name[0]只取文件名
    if name[1] == '.docx':  # 对docx文件的操作
        docx = word.Documents.Open(ul + "\\" + file_name_list[file])  # 打开文件
        docx2 = Document(ul + "\\" + file_name_list[file])  # 建立文本对象
        s = docx2.tables[0].rows[2].cells[0].text  # 获取文章内数据,大致翻译为 文本对象的第一个表格的第三行的第一个元素的文本内容
        a = s.find("已完成")   # 开始对获取的字符串文本做切片工作,找到目标文本
        b = s.find("内容")
        c = s.find("部位")
        ret = s[a:b]
        ret = ret.split(")")
        ret = ret[0].split("(")
        rat = s[c + 2:b]
        rename = ret[1] + "_" + rat.strip() + "_" + name[0][5:]  # 将目标文本赋值存起来
        docx.SaveAs(ul + "\\" + rename.strip() + ".docx", 16)  # 先把文本中的空格去掉(strip),然后另存为.docx
        docx.Close()  # 随用随关
        os.remove(ul + "\\" + name[0] + ".doc")
        os.remove(ul + "\\" + name[0] + ".docx")


start = time.time()  # 记录程序开始时间

word = wc.Dispatch("Word.Application")  # 打开 office-word应用
ul = r"D:\\Users\\liuzh\\Desktop\\报验\\开挖初支\\一工区\\资料\\资料\\一工区测量开挖放样资料全部\\5.0"  # 设置需要处理的文件所在文件夹目录,使用/或\\
docx_num = 0
file_name_list = os.listdir(ul)  # 将文件夹目录下的文件名放入列表
for file in range(len(file_name_list)):  # for循环开始处理文件,判断下文件是不是已经处理过了
    name0 = os.path.splitext(file_name_list[file])  # os.path.splitext(): 分离文件名与扩展名,用name[0]只取文件名
    if name0[1] == '.docx':
        docx_num += 1
if not docx_num:  # 如果文件没被处理过
    file_name_list = os.listdir(ul)  # 将文件夹目录下的文件名放入列表
    for file in range(len(file_name_list)):  # for循环开始处理文件,另存为
        另存为()
    file_name_list = os.listdir(ul)  # 将文件夹目录下的文件名放入列表
    for file in range(len(file_name_list)):  # for循环开始处理文件,重命名
        重命名()
    word.Quit()

stop = time.time()  # 记录程序结束时间
print(stop-start)  # 打印时间


# for i in range(2):
# ul = r"D:\\Users\\liuzh\\Desktop\\报验\\开挖初支\\一工区\\资料\\资料\\一工区测量开挖放样资料全部\\2.0" # 设置需要处理的文件所在文件夹目录,使用/或\\
# file_name_list = os.listdir(ul) # 将文件夹目录下的文件名放入列表
# # print(len(file_name_list)) # 瞄一眼文件数量对不对
# for file in range(len(file_name_list)): # for循环开始处理文件,python3没有xrange了
# docx = word.Documents.Open(ul + "\\" + file_name_list[file]) # 打开文件
# name = os.path.splitext(file_name_list[file]) # os.path.splitext(): 分离文件名与扩展名,用name[0]只取文件名
# if name[1] == ".docx":
# docx2 = Document(ul + "\\" + file_name_list[file])
# s = docx2.tables[0].rows[2].cells[0].text
# a = s.find("已完成")
# b = s.find("内容")
# c = s.find("部位")
# ret = s[a:b]
# ret = ret.split(")")
# ret = ret[0].split("(")
# rat = s[c + 2:b]
# rename = ret[1] + "_" + rat.strip() + "_" + name[0][5:]
# docx.SaveAs(ul + "\\" + rename.strip() + ".docx", 16) # 另存为.docx
# docx.Close()
# os.remove(ul + "\\" + name[0] + ".doc")
# os.remove(ul + "\\" + name[0] + ".docx")
# else:
# docx.SaveAs(ul + "\\" + name[0] + ".docx", 16) # 另存为.docx
# docx.Close()
# word.Quit()
    原文作者:谨礼
    原文地址: https://blog.csdn.net/qq_37828104/article/details/117394858
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞