办公自动化少不了要处理Word文档,要是能用Python来批量处理Word文档,那工作效率就能提升好几倍。Python-docx这个库就是专门用来处理Word文档的神器,上手简单,功能强大。
安装特别简单,一行命令就搞定:
pip install python-docx
要是遇到网络问题装不上,换个国内镜像源试试:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx
from docx import Document
# 创建新文档
doc = Document()
doc.add_paragraph('你好,Python-docx!')
doc.save('hello.docx')
# 打开已有文档
existing_doc = Document('old.docx')
温馨提示:save方法要是给了一个已存在的文件名,会直接覆盖原文件,小心丢数据
段落是Word里最基本的元素,加个段落就跟我们平时按回车键一样:
para = doc.add_paragraph('我是一个段落')
para.add_run('加粗的文字').bold = True
para.add_run('斜体的文字').italic = True
# 设置段落对齐方式
from docx.enum.text import WD_ALIGN_PARAGRAPH
para.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中对齐
文字样式设置可以玩出花来,字体、颜色、大小都能改:
run = para.add_run('漂亮的文字')
run.font.name = '微软雅黑'
run.font.size = docx.shared.Pt(14)
run.font.color.rgb = docx.shared.RGB(255, 0, 0) # 红色文字
表格在文档里也是常见得很:
# 创建3行2列的表格
table = doc.add_table(rows=3, cols=2)
# 填充数据
cell = table.cell(0, 0)
cell.text = '单元格内容'
# 遍历填充
data = [['苹果', '5'], ['香蕉', '3'], ['橘子', '4']]
for row in range(3):
for col in range(2):
table.cell(row, col).text = data[row][col]
温馨提示:表格的行列数从0开始计数,和Python的列表索引一样
文档里插图片也不在话下:
doc.add_picture('image.jpg', width=docx.shared.Inches(5))
图片大小可以用英寸(Inches)或厘米(Cm)来指定,随你喜欢。要是不设置尺寸,就会用图片原始大小。
批量替换文本内容:
def replace_text(doc, old_text, new_text):
for p in doc.paragraphs:
if old_text in p.text:
inline = p.runs
for item in inline:
if old_text in item.text:
item.text = item.text.replace(old_text, new_text)
doc = Document('template.docx')
replace_text(doc, '旧文本', '新文本')
doc.save('new.docx')
这招特别好用,比如做合同模板,把里面的甲方乙方名字批量替换。
Python-docx还能玩出很多花样,比如设置页眉页脚、制作目录、调整页面布局等。不过这些基本操作已经能应付80%的日常办公需求了。多写点代码多试试,慢慢就能上手了。
记住一点,Word文档处理没有想象的那么难,Python-docx帮我们搞定了复杂的底层操作,我们只要调用现成的方法就行。写代码时多查查文档,遇到不会的就查查例子,照葫芦画瓢就能整出不少实用的小工具。