提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
今天接到了个单子,就是完成自动批量替换文件夹中所有word和excel中的内容,而且还要基于win32,我就不想写了,后来一想接都接了,那就写吧
`
一、win32是什么?
就是一个库,几乎满足windows系统里的基础应用的库,可以调用一些应用,常见的就是调用office
二、使用步骤
1.引入库
代码如下(示例):
import win32com.client
import os
2.读入数据
因为客户的是txt文件,我就规范了下格式,这样读取起来不会有问题。
代码如下(示例):
with open(a, "r") as f:#a就是txt的路径
for line in f.readlines():
line = line.strip("\n")
line = line.split("|")
data.append(line)
这是word的替换
def replace_main(path, old_text, new_text):
word = win32com.client.Dispatch("Word.Application") # 模拟打开 office
doc = word.Documents.Open(path)
word.Selection.Find.ClearFormatting()
word.Selection.Find.Replacement.ClearFormatting()
# 1.True--区分大小写,2.True--完全匹配的单词,并非单词中的部分(全字匹配)3.True--使用通配符,
# 4.True--同音,5.True--查找单词的各种形式,6.True--向文档尾部搜索,7.True--带格式的文本。
# 2 - -替换个数(0表示不替换,1 表示只替换匹配到的第一个,2 表示全部替换)True--区分大小写,不可省略
# word.Selection.Find.Execute(old_text, False, False, False, False, False, True, 1, False, new_text, 2)
word.Selection.Find.Execute(old_text, False, False, False, False, False, True, 1, False, new_text, 2)
doc.Close(SaveChanges=True)
word.Quit()
这是excel的替换
def replace_key_word(file_name, find_str, new_str):
'''搜索并删除excel中指定关键字'''
try:
# 创建excel实例
app = win32com.client.Dispatch('Excel.Application')
app.Visible = False
app.DisplayAlerts = False
# 打开指定文档
work_book = app.Workbooks.Open(file_name)
work_sheets = work_book.Worksheets
work_sheets_total = work_sheets.Count
# 注意:打包前后sheet_index存在差别,打包前index从1开始,打包后index从0开始
for sheet_index in range(0, work_sheets_total):
# 选择当前工作表
work_sheets[sheet_index].Select()
# 替换关键字
app.Selection.Replace(find_str, new_str)
# 保存文档并关闭excel进程
work_book.Save()
app.Quit()
except:
app.Quit()
raise Exception("文件 %s 处理过程中遇到了错误。" % file_name)
主函数啥的我就不贴了,过段时间我会发到我的github上
所有代码文件我先上传到csdn,作为新手真的不会git上传,而且今天太晚了。
资源链接:https://download.csdn.net/download/weixin_54651077/85113387
总结
这些都是在网上找的源码,简单修改了一下,真的抱歉忘了搬的哪些大佬的源码了,下次一定记着,并且贴上链接