专栏首页华章科技入门干货:Python操作Word文件经验分享

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

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

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

作者:老A

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

01 模块的安装和导入

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

pip install python-docx

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

import docx
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 os
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 os
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_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,项目管理师,专业兴趣研究方向:大数据、计算机软件、通信工程。个人业余爱好是研究无人机制作,银元鉴赏与收藏。

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

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

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

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

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

本文分享自微信公众号 - 大数据(hzdashuju)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • django 模板语言

    在内置的方法满足不了我们的需求的时候,就需要自己定义属于自己的方法了,自定义方法分别分为filter和simple_tag

    晴天Online
  • 100篇泛癌研究文献解读之lincRNA的生存分析情况

    为了分析不同类型、组织起源肿瘤的共性、差异以及新课题。TCGA于2012年10月26日-27日在圣克鲁兹,加州举行的会议中发起了泛癌计划。参考:https://...

    生信技能树
  • saltstack 自动化平台 - 日常管理

    初始化环境: http://ops.attacker.club/Automatic/salt_init.html 线上服务部署: http://ops.atta...

    晴天Online
  • FSWD_1_BasicHtmlCss

    本文是香港中文大学《Full Stack Web Development》系列课程中的笔记

    用户1147754
  • 服务器入侵排除命令

    https://attacker.club/detail/33.html https://attacker.club/detail/34.html

    晴天Online
  • tf-idf

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u012436149/article/detail...

    ke1th
  • Gatsby入门指南—使用GraphQL解析Markdown(2)

    GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户...

    前端大彬哥
  • Python读写csv文件专题教程(2)

    如果我想修改age列的数据类型为float,read_csv时可以使用dtype调整,如下:

    double
  • SpringBoot 2.0 配置错误页面 原

    北漂的我
  • nginx 自定义日志记录请求时间

    传统办法是使用PHP在项目的入口文件和输出的分别计算时间,然后计算时间差值。但是这种的话,非常麻烦,而且需要修改项目文件,改动较大。如果你对nginx比较了解的...

    魔王卷子

扫码关注云+社区

领取腾讯云代金券