概述
你好! 这是你一篇学习docx的文档。代码从网上收集,然后修改添加自己的代码。
本学习笔记的
-
Python-docx的官方帮助文档:https://python-docx.readthedocs.io/en/latest/
-
代码仓地址,https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/
-
python-docx 安装,通过清华的镜像安装,飞快:
pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple
- 也可以下载代码仓里的 setup.bat,运行安装docx
创建文档
代码地址:
https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/createDoc.py
函数 add_heading : 添加标题
函数 add_paragraph: 添加文本(段落)
# 文档对象添加标题
document.add_heading('吾十有五而志于学', 0)
# 正文 add_paragraph 文档对象添加文本(段落对象)
document.add_paragraph(u'子曰:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”')
添加图片
代码地址:
https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/createDocPicture.py
函数 add_picture: 添加图片
# 文档对象添加标题
doc.add_picture('in/study.png', width=Inches(5.5))
设定格式,样式等
代码地址:
https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/createDocStructure.py
函数 add_paragraph: 第二个参数设定样式名称
doc.add_paragraph('吾十有五而志于学', 'Title') # 标题
doc.add_paragraph(u'出处', 'Subtitle') # 副标题
doc.add_paragraph(u'出自《论语·为政》', 'Body Text') # Body Text
添加表格
代码地址:
https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/createDocTable.py
函数 add_table: 添加表格
函数 add_row: 添加行
table = doc.add_table(rows=1, cols=3)
....
# 遍历数据并添加内容
for id, age, action in records:
row = table.add_row().cells
row[0].text = str(id)
row[1].text = age
row[2].text = action
输出文件: ./out/createDocTable.docx
读取表格
代码地址:
https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/readDoc.py
doc.paragraphs: 获得段落列表
# 指定docx 文件路径
path = "in/2021-XX-XX 家默单.docx"
# 如果有输出文档,用这个测试:
# path = "out/createDocStructure.docx"
# 实例化docx 对象
doc = Document(path)
# 遍历输出docx 对象涉及段落
for p in doc.paragraphs:
# 输出段落文本长度len(p.text)
# 数据段落引用样式p.style.name
# 文本:p.text
print(len(p.text), ", ", p.style.name, ", ", p.text)
# 会打印出乱码,这个需要在终端中输出,可能是正确的中文
批量修改页面为A5,设置页边距,设置页面尺寸
目的,把Word文档页面变小,页边距变小,用于小的Pad平板或阅读器上查看文档。方便学生进行作业浏览。
代码地址:
批处理程序:
https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/SetSectionBatch.py
封装的函数的程序
https://gitee.com/bigearrabbit/kevinpython/blob/master/kevindocx/kevindocx.py
通过遍历section,然后设定宽度和高度,页边距。
注意,页面需要同时设置width,height才能成功
docx中的长度单位特别,要用给定的函数来转换,例如
输入148mm用:shared.Mm(148)
输入1inches 用shared.Inches(1)
for section in doc.sections:
# size 需要同时设置width,height才能成功
section.page_width = shared.Mm(148)
section.page_height = shared.Mm(210)
# left|right
section.left_margin = shared.Mm(5)
section.right_margin = shared.Mm(5)
# top and bottom
section.top_margin = shared.Mm(15)
section.bottom_margin = shared.Mm(5)
遍历输入文件夹in目录,里面的docx文件都会进行页面修改,然后输出文件到 out目录下,
运行程序后,效果见文件: ./out/2021-XX-XX 家默单.docx