入门干货:Python操作Word文件经验分享

本文分享了如何使用Python的python-docx模块进行Word文件的读写与内容替换,包括批量替换、数据模板填充,以及从Excel读取数据写入Word的实践技巧,帮助简化重复工作。
摘要由CSDN通过智能技术生成

640?wx_fmt=gif

导读:Microsoft Word在当前使用中是占有巨大优势的文字处理器,这使得Word专用的档案格式Word 文件(.docx)成为事实上最通用的标准。


在日常工作中,有些时候会有很多重复的工作,比如批量的替换、报名表、合同、邀请函等很多格式一样的文件,要对这些文件进行读写与汇总,程序员的智慧就是把重复的工作简单化,下面介绍一些经验汇总,请读者注意,程序学习最重要的是思想。

 
 


作者:老A

如需转载请联系大数据(ID:hzdashuju)



01 模块的安装和导入


python-docx模块安装需要在cmd命令行中输入:


pip install python-docx



02 读取已存在的一个事先有内容的测试文件test1.docx代码


 
 
import docxfile=docx.Document("/test/test1.docx")print("段落数:"+str(len(file.paragraphs))) for para in file.paragraphs:    print(para.text)for i in range(len(file.paragraphs)):print("第"+str(i)+"段的内容是:"+file.paragraphs[i].text)
file=docx.Document("/test/test1.docx")
print("段落数:"+str(len(file.paragraphs))) 
for para in file.paragraphs:
    print(para.text)
for i in range(len(file.paragraphs)):
print("第"+str(i)+"段的内容是:"+file.paragraphs[i].text)



03 文档中内容批量替换


首先程序是读取文件夹下文件名称,获取绝对路径,按绝对路径读取文件,把读取的文件中指定内容进行替换,最后把替换后的内容保存到另外的文件夹中:


 
 
import osxmldir='D:/test /test'xmllist=os.listdir(xmldir)for xml in xmllist:    if '.txt ' in txt       fo=open(xmldir+'/'+'new_{}'.format(txt),'w')      print('{}'.format(txt))      fi=open(xmldir+'/'+'{}'.format(txt),'r')      content=fi.readlines()      for line in content:         line=line.replace('替换前的内容','替换后的内容')         fo.write(line)      fo.close()      print('替换完成')
xmldir='D:/test /test'
xmllist=os.listdir(xmldir)
for xml in xmllist:
    if '.txt ' in txt 
      fo=open(xmldir+'/'+'new_{}'.format(txt),'w')
      print('{}'.format(txt))
      fi=open(xmldir+'/'+'{}'.format(txt),'r')
      content=fi.readlines()
      for line in content:
         line=line.replace('替换前的内容','替换后的内容')
         fo.write(line)
      fo.close()
      print('替换完成')



04 利用docxtpl将指定数据


本经验是从test/exce.csv文件中读完并写入到test/合同例子.docx中保存输出。


 
 
import osfrom docxtpl import DocxTemplatetpl = DocxTemplate('test/合同例子.docx')context = {   "name": name,   "department": department,   "position": position,   "time": time,   "id": id_card,   "addr": addr,}tpl.render(context)tpl.save("{}的合同.docx".format(name))
from docxtpl import DocxTemplate
tpl = DocxTemplate('test/合同例子.docx')
context = {
   "name": name,
   "department": department,
   "position": position,
   "time": time,
   "id": id_card,
   "addr": addr,}
tpl.render(context)
tpl.save("{}的合同.docx".format(name))



05 将所有受邀者的公司名和代表姓名填入路径为test/test_name_list.xlsx的表格


在需要填字的地方打上“***”,然后Python来填字,最后保存为test/邀请函.docx,下面代码段为读入信息,然后写入word文件中。


 
 
from openpyxl import load_workbookwb=load_workbook('teset/test_name_list.xlsx')ws=wb['name']names=[]for row in range(2,ws.max_row+1):    company=ws["A"+str(row)].value    name=ws["B"+str(row)].value    names.append(" {} {} ".format(company,name))doc=docx.Document('test/邀请函.docx')for name in names:    doc.paragraphs[1].runs[2].text=namedoc.save('test/邀请函_{}.docx'.format(name))import load_workbook
wb=load_workbook('teset/test_name_list.xlsx')
ws=wb['name']
names=[]
for row in range(2,ws.max_row+1):
    company=ws["A"+str(row)].value
    name=ws["B"+str(row)].value
    names.append(" {} {} ".format(company,name))
doc=docx.Document('test/邀请函.docx')
for name in names:
    doc.paragraphs[1].runs[2].text=name
doc.save('test/邀请函_{}.docx'.format(name))


word是坐在电脑前百分之九十的人都会用的办公软件,word东西少还好说,手动打开那样存入表格也简单,但是当数据达到几万几十万、几百万大数据级那就恐怖了,如果全靠手动,那么至少要连上一个月的班了,不能停息的那种!


每天重复一样的操作,恐怖吗?想想都可怕,这时候就是真正体现技术方面的能力了,很多东西都可以自动实现,如果手动的话,真不知道搞到猴年马月,耗时没有什么意义!


学习永不停牌,今天一小步明天一大步!


关于作者:老A,项目管理师,专业兴趣研究方向:大数据、计算机软件、通信工程。个人业余爱好是研究无人机制作,银元鉴赏与收藏。


本文为「大数据」内容合伙人之「鉴书小分队」活动读书笔记,由大数据粉丝原创,转载请与我们取得联系。


640?


「大数据」内容合伙人之「鉴书小分队」上线啦!


最近,你都在读什么书?有哪些心得体会想要跟大家分享?


数据叔最近搞了个大事——联合优质图书出版商机械工业出版社华章公司发起鉴书活动。


简单说就是:你可以免费读新书,你可以免费读新书的同时,顺手码一篇读书笔记就行。详情请在大数据公众号后台对话框回复合伙人查看。


640?


延伸阅读《利用Python进行数据分析(原书第2版)

点击上图了解及购买

转载请联系微信:togo-maruko


推荐语:Python数据分析经典畅销书全新升级,第1版中文版累计销售100000册。针对Python 3.6进行全面修订和更新,涵盖新版的pandas、NumPy、IPython和Jupyter。


640?


有话要说?


Q: Python还能搞定哪些重复性的工作?

欢迎留言与大家分享


猜你想看? 



更多精彩? 


在公众号对话框输入以下关键词

查看更多优质内容!


PPT | 报告 | 读书 | 书单 | 干货 

大数据 | 揭秘 | Python | 可视化

AI | 人工智能 | 5G | 区块链

机器学习 | 深度学习 | 神经网络

1024 | 段子 数学 | 高考


据统计,99%的大咖都完成了这个神操作

? 


640?wx_fmt=png


觉得不错,请把这篇文章分享给你的朋友

转载 / 投稿请联系:baiyu@hzbook.com

更多精彩,请在后台点击“历史文章”查看

640?wx_fmt=jpeg

640?wx_fmt=gif点击阅读原文,了解更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值