前情提要

单位要写交流报告,上交材料要公文格式,但是打印出来要打印在A5纸张上,为了快速将公文格式转为可打印在A5纸张上的格式,使用python-docx库实现。

项目目标

通过项目,可批量实现以下功能:

  • 修改纸张大小
  • 修改页边距
  • 修改文字大小
  • 修改段落行距
  • 删除不需要的问题

所需库

  • lxml(处理文件的必备库)
  • python-docx(docx文件处理)
  • win32com(将doc自动另存为docx)
  • re(判断文件类型)
  • os(批量读取处理文件)

核心功能(docx库的文件处理)

#导入所需库
#导入Document用以打开docx文件
from docx import Document as dc
#导入qn进行文字的样式处理
from docx.oxml.ns import qn
#导入Pt、Cm、Inches等计量单位对应磅、厘米、英寸
from docx.shared import Pt,Cm,Inches
#定义删除文字段落函数
def delete_pg(pg):p = pg._elementp.getparent().remove(p)pg._p = pg._element = None
#定义文档处理函数
def getdoc(k):doc = dc(k)#文字处理获取段落,形成列表pg = doc.paragraphs#由于段落是列表,遍历,并对每一段落进行处理实现全文修改for i in range(0,len(pg)):#修改段落行间距pg_f = pg[i].paragraph_formatpg_f.line_spacing = Pt(24)#将段落分成内容块,形成内容块列表contents = pg[i].runs#遍历内容块列表进行修改实现对全段落修改for con in contents:#修改字号,12代表的是小四     con.font.size=Pt(12)#删除不需要的段落delete_pg(pg[0])#页面处理,页面需要按节处理,获取第一节section = doc.sections[0]#修改页面高、宽,单位厘米section.page_width = Cm(14.8)section.page_height = Cm(21)#修改页面上下左右边距,单位厘米section.top_margin = Cm(1.51)section.bottom_margin = Cm(1.1)section.left_margin = Cm(1.5)section.right_margin = Cm(1.0)#另存为新的文件doc.save("新"+k)

批量处理(OS使用)

#导入库
import os
import re
#获取当前路径(增强移植性)
path = os.getcwd()
#遍历当前路径下的文件,正则匹配docx文件并使用函数处理
for k in os.listdir(path):if re.match('.+\.docx',k):getdoc(k)

附加功能(doc转docx)

#导入客户端调用功能
from win32com import client as wc
#打开WPS客户端
word = wc.Dispatch("Kwps.Application")
#定义转换函数,逻辑为打开之后另存为
def zhuanhuan(file):doc = word.Documents.Open(file)doc.SaveAs(path+"\\"+j+".docx",12)doc.Close
#批量处理
for j in os.listdir(path):#匹配doc文件if re.match('.+\.doc$',j):#处理,此处使用绝对路径避免错误zhuanhuan(path+"\\"+j)

在整个过程中,出现过很多错误和问题,最后也都成功解决了,但由于过程没有截图,现在也不好描述,如果参考中有任何问题可以留言评论,看到会解答。

python-docx库实战修改word文档格式相关推荐

  1. python docx修改word文档格式

    修改word文档格式,包括修改目录字体字号间距,修改一级标题字体字号间距,二级标题字体字号间距....正文字体字号间距,表格中的文字的字体字号间距,以图或表开头的图名称和表名称的字体字号间距. wor ...

  2. Python3-word文档操作(三):利用python修改word文档的内容

    前两篇博文中,学习了是用python的docx库创建一个word文档,并且编辑了标题和正文,以及利用python来获取word文档的内容.本篇学习利用python修改word文档的内容. 修改word ...

  3. java填充wordxml格式,java xml转成word文档格式

    xml格式如何转换成doc格式文件 通过jodconveter来实现转化(http://www.artofsolving.com/opensource/jodconverter). 这种方式实现起来比 ...

  4. vbsedit无法创建空文档_如何用Python快速优雅的批量修改Word文档样式?

    一.前言 大家好,又到了办公自动化系列! 之前讲过很多基于Excel的数据及样式调整案例,今天分享一个Python操作Word的真实自动化需求实现过程: 「使用Python批量修改Word样式」 主要 ...

  5. 如何用Python快速优雅的批量修改Word文档样式?

    一.前言 大家好,又到了办公自动化系列! 之前讲过很多基于Excel的数据及样式调整案例,今天分享一个Python操作Word的真实自动化需求实现过程: 「使用Python批量修改Word样式」 主要 ...

  6. python修改word字体颜色_如何用Python快速优雅的批量修改Word文档样式?

    作者:陈熹 来源:早起Python 大家好,又到了办公自动化系列!之前讲过很多基于Excel的数据及样式调整案例,今天分享一个Python操作Word的真实自动化需求实现过程: 「使用Python批量 ...

  7. Python动态修改Word文档内容,保留格式样式,并批量生成PDF

    Python动态修改Word文档内容,保留格式样式,并批量生成PDF 前言 一.需要安装的库 二.核心逻辑-替换 前言 假如你有一个Word模版文档,要在里面填写人员信息,但人员有成百上千个,手动填起 ...

  8. python批量修改word文档内容

    实现的目标 批量修改word文档内容,此脚本直接修改文件,不是另存为,建议先copy再修改.多级目录结构对脚本没有影响,脚本会遍历"path"下所有目录以docx结尾文档. 用到的 ...

  9. Python3-word文档操作(五):利用python修改word文档中的表格数据

    1. 简介: 本篇继续学习python操作word文档的相关知识.本篇主要学习: 1)如何获取一个已经存在文档中的表格的内容: 2)如何修改一个已经存在文档中的表格的内容: 2. 获取word文档中的 ...

最新文章

  1. 矩阵乘法无需相乘,速度提升100倍,MIT开源最新近似算法 | ICML 2021
  2. 【声源定位】 球面散乱数据插值方法/似然估计hybrid spherical interpolation/maximum likelihood (SI/ML) 麦克风阵列声源定位
  3. Device eth0 does not seem to be present, delaying initialization.转载
  4. 你在看Netflix,Netflix也在看你
  5. leveldb java实例_EZDB首页、文档和下载 - LevelDB 的 Java 封装 - OSCHINA - 中文开源技术交流社区...
  6. Java之static的内容
  7. Windows安装ActiveMQ记录
  8. NET委托:一个C#睡前故事
  9. RecalcLayout的作用
  10. MapControl与PageLayoutControl联动
  11. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.26
  12. 结构相似度索引(SSIM)全攻略:理论+代码(PyTorch)
  13. 快收藏!最适合计算机大学生的Java毕业设计项目--高校食堂点餐系统
  14. 【基于51】红外寻迹智能小车-硬件篇
  15. linux清除回收站权限错误,在Ubuntu 14.04 中修复无法清空回收站的问题
  16. 手机显示主服务器连接异常怎么办,手机主服务器连接配置异常
  17. 围城书评_书评:关于HTML5的真相
  18. 用C语言打印一个等腰三角形
  19. 全球与中国户外楼梯升降机市场现状及未来发展趋势
  20. 夏天多吃这4种食材,去暑祛火又预防疾病!

热门文章

  1. Python基本数据类型大集合
  2. 虚拟机中无ens33文件的解决办法
  3. ICCV 2021 |首届 SoMoF 人体序列预测比赛冠军方案分享
  4. xv6 6.S081 Lab5: cow
  5. 服务器文件夹怎么找回来,文件过期了怎么恢复(教你一招找回微信过期文件)...
  6. python语句print(type(1j))的输出结果_Python 语句print(type(1J))的输出结果是:_学小易找答案...
  7. 【PotPlayer】采集Switch图像及录制
  8. 企业“招投标”一般需要办理哪些体系认证?
  9. html5怎么引入苹方简,css 引入苹方字体
  10. 2019 ICPC南昌网络赛 E题 Magic Master 【双向队列】