【Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。

在上次文章中,我们学习了【用python写入excel】,这次我们学习Python写word文档吧!

场景:

有时候,办公室需要按模版生成的固定的文件,模板是固定的,只是每次需要替换信息。如下图的收入证明,模版中所有标黄的都是需要替换的信息:

image

如果手工来做这个事情,每次至少需要10分钟的时间。假如每天要开15份,则至少要花2个半小时,而且手工编辑word很容易出错。

可不可用python写个程序,解决这个问题呢?

结论当然是肯定的!

0.摘要

本文大约需要15分钟,建议在电脑上打开,边阅读边操作。

安装Python读写word模块,python-docx

准备word模板,准备写入word文档内容

编写python代码并运行

4.通过读取excel表格中的信息,批量生成word文件

1.安装python-docx模块

与上篇文章类似,需要在cmd窗口输入pip install python-docx。

image

2.准备word模板,准备写入word文档内容

word模板如上所示,(可以不需要标黄),这里注意,需要替换的文字或数字位置,用"XXXX"来固定替代。保存为个人收入证明.docx。

名称内容姓名张三身份证号104111199009103531职务工程师工作年限10月收入10000大写壹万元整联系人李四单位名称格物致知股份有限公司单位地址珠海市横琴新区宝华路6号105室-67425联系电话0756-8627528

3. 编写python代码并运行

在word模板的同级目录,新建一个writeword.py文件,用记事本或其他文本编辑工具打开。

编程思路:

用python打开对应doc模板

按顺序找到每一个需要替换的位置字符"XXXX",替换为对应的内容

另存为doc为另一个文件

在文本编辑工具中输入如下代码,保存并关闭。

from docx import Document

#准备写入内容

name="张三"

id_code="104111199009103531"

career="工程师"

working_years="10"

salary="10000"

salary_uppercase="壹万元整"

contact="李四"

company="格物厚德股份有限公司"

address="珠海市横琴新区宝华路6号105室-67425"

tel="0756-8627528"

#打开doc

textlist=[name,id_code,career,working_years,salary,salary_uppercase,company,address,contact,tel]

doc = Document("个人收入证明.docx")

count=0

for p in doc.paragraphs:

if 'XXXX' in p.text:

inline = p.runs

for i in range(len(inline)):

if 'XXXX' in inline[i].text:

text = inline[i].text.replace('XXXX', textlist[count])

inline[i].text = text

count+=1

print(count)

doc.save("%s_个人收入证明.docx"%name)

在同级目录,打开cmd,运行writeword.py python writeword.py

生成结果如下:

张三_个人收入证明.docx

image

4.通过读取excel表格中的信息,批量生成word文件

这里生成了对应word文件,但也有几个问题:

对应的日期并没有自动填写,应当填写文件生成时对应的日期

如果是生成大量同样word文档的话,目前的程序也需要一个一个改,并没有提升太多效率

如果您看过我们之前的2篇用python读写excel的文章,您肯定就会想到,可以利用读取excel表格里的内容,批量生成对应的word文档。对,让我们继续吧!

这里再准备一个excel文件,将需要批量写入的信息写在excel中,并保存为income.xlsx在同级目录,如下图:

image

修改python 文件writeword.py

from docx import Document

#准备写入内容

import xlrd

import time

# 当前时间元组

from datetime import datetime

nt=datetime.now()

# 可以输入中文年月日

datestr=nt.strftime('%Y{y}%m{m}%d{d}').format(y='年', m='月', d='日')

xlsx=xlrd.open_workbook('income.xlsx')

sheet=xlsx.sheet_by_index(0)

for row in range(1,sheet.nrows):

doc = Document("个人收入证明.docx")

count=0

textlist=[]

for col in range(0,sheet.ncols):

textlist.append(str(sheet.cell_value(row, col)))

for p in doc.paragraphs:

if 'XXXX' in p.text:

inline = p.runs

for i in range(len(inline)):

if 'XXXX' in inline[i].text:

text = inline[i].text.replace('XXXX', textlist[count])

inline[i].text = text

count+=1

if 'X 年 X 月 X 日' in p.text:

inline = p.runs

for i in range(len(inline)):

if 'X 年 X 月 X 日' in inline[i].text:

text = inline[i].text.replace('X 年 X 月 X 日', datestr)

inline[i].text = text

doc.save("%s_个人收入证明.docx"%textlist[0])

运行后,输入结果:

image

image

python自动化办公模块有哪些-Python 自动化办公|Word文档相关推荐

  1. python批量读取图片并复制入word_提取word文档中的图片并使用Python进行批量格式转换,出,Word,里,利用,python...

    日常工作中,你是否遇到过这样的场景,领导发来一份 Word 文档,要求你将文档中的图片存储到一个文件夹内,并且还要将图片都改成 .jpg 或者 .png,你会怎么办?你是不是一边内心崩溃,一边开始一张 ...

  2. word办公技巧:如何让Excel与Word文档数据同步

    Word和Excel是一对好基友,它们之间的数据信息都是可以关联的.简单来说,就是将Excel数据导入到Word中后,可实现数据同步更新,从而避免我们重复录入或更改数据.那该怎么做呢?今天,小编为大家 ...

  3. 如何将excel表格导入word_word办公技巧:如何让Excel与Word文档数据同步

    编按: Word和Excel是一对好基友,它们之间的数据信息都是可以关联的.简单来说,就是将Excel数据导入到Word中后,可实现数据同步更新,从而避免我们重复录入或更改数据.那该怎么做呢?今天,小 ...

  4. 基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符

      现有多个Word文件,需将其按名称顺序合并为一个新的Word文件,且需保证每一次合并时,都另起一页(即新的Word文件一页中,不能出现两个及以上的原本Word文件的内容).   一般的,实现多个W ...

  5. 使用python调用zabbix接口截取监控图并生成Word文档

    #/usr/bin/python #coding=utf-8 import json,urllib2,time,os,re,shutil from docx import Document from ...

  6. python打印生成word_使用python调用zabbix接口截取监控图并生成Word文档

    #/usr/bin/python #coding=utf-8 import json,urllib2,time,os,re,shutil from docx import Document from ...

  7. python pdf open打开非常慢_openoffice打开大的word文档很慢而且兼容性极差

    你的位置: 问答吧 -> Debian -> 问题详情 openoffice打开大的word文档很慢而且兼容性极差 如题,各位碰到么?我只好用永中,但是永中对于有些图片类的中文(如一些专业 ...

  8. python修改word_有没有办法用pythondocx改变word文档的字体?

    有两种不同的方法来解决这个问题,因为这是一个比最初看起来更复杂的问题.在 Word中文本项的"明显"字体,或者更确切地说是"有效"字体是从样式层次结构计算出来的 ...

  9. 办公知识:有关如何PDF转Word文档的方法分享

    现在我们从网上下载的资料文献大部分都是PDF格式,由于PDF格式无法自由编辑的性质,想要获取文档中的内容只能一字一句复制粘贴过去,这样做不仅耽误工作进度还耗费精力. 这时候其实可以将PDF转换为可编辑 ...

  10. 上海高级会计师职称计算机考试模块,高级会计师《职称计算机》Word文档:绘图画布...

    高级会计备考的征程已经开始,大家准备好了么?中公财经小编为大家整理了高级会计师<职称计算机>Word文档:绘图画布,希望能帮助考生们更加了解高级会计师计算机. 高级会计师<职称计算机 ...

最新文章

  1. C指针4:数组指针(指向数组的指针)
  2. IOS开发常见warning汇总
  3. 初学__Python——Python 变量的作用域
  4. signed distance field 算法
  5. c语言malloc面试题,c语言面试最必考的十道试题,求职必看!!!
  6. 后端工程师面试BAT,被问到了前端?就倒下了?【VUE面试20连问】
  7. php直接的模块接口,api(接口)模块
  8. Win32ASM代码基本模块
  9. 三层交换机LACP协议对 L2/L3端口,报文处理实验
  10. 蓝桥杯web:2.【Bug 调试】修复注册验证问题
  11. 投影幕布尺寸计算器_投影距离和屏幕尺寸计算器Ver1.02.xls
  12. 深度学习教程(14) | 序列模型与RNN网络(吴恩达·完整版)
  13. TUIO学习笔记1-TUIO 1.1 Protocol Specification协议规范/标准
  14. 计算机职业规范学后感,职业生涯规划学后感1000字计算机专业
  15. gerrit git 邮箱不匹配的问题
  16. Shell -----grep
  17. 微滑低的简介。。。。
  18. Jupyter Lab 密码登录、远程访问
  19. live2d sdk java_Unity Live2D SDK的使用方法(一)——载入资源
  20. 杭州网络实名制遇冷:真实身份无规可查

热门文章

  1. 安装Caffe报错:/usr/local/cuda-10.1/targets/x86_64-linux/lib/libcudnn.so.7 is not a symbolic link
  2. 图像处理:Canny边缘检测算法原理(一)
  3. 根据前序、中序构建二叉树
  4. c 并发操作mysql_MySQL并发控制
  5. 小数点保留若干位小数 %.*f
  6. 【转】vue项目重构技术要点和总结
  7. 做网站用UTF-8编码还是GB2312编码?
  8. Android单选中listview中的一项
  9. 排序算法之 Inplace Merge Sort
  10. UVA11878 Homework Checker【文本】