哈喽,大家好!我是风哥,一个资深Python工程师。今天要给大家介绍一个超强的Word文档处理库——python-docx!它能让你轻松实现Word文档的自动化处理,效率提升10倍!
1. 基础使用
安装库
1# pip install python-docx
2from docx import Document
3from docx.shared import Inches, Pt, RGBColor
4from docx.enum.text import WD_ALIGN_PARAGRAPH
创建新文档
1# 创建新文档
2doc = Document()
3
4# 添加标题
5doc.add_heading('Python自动化办公指南', 0)
6
7# 添加段落
8p = doc.add_paragraph('这是一个示例段落,演示python-docx的基本用法。')
9
10# 保存文档
11doc.save('demo.docx')
打开已有文档
1# 打开现有文档
2doc = Document('existing.docx')
3
4# 读取所有段落
5for para in doc.paragraphs:
6 print(para.text)
2. 文本格式化
段落样式
1# 添加带格式的段落
2paragraph = doc.add_paragraph()
3run = paragraph.add_run('这是加粗文本')
4run.bold = True
5
6run = paragraph.add_run('这是斜体文本')
7run.italic = True
8
9# 设置字体
10run = paragraph.add_run('自定义字体')
11run.font.name = '微软雅黑'
12run.font.size = Pt(14)
13run.font.color.rgb = RGBColor(255, 0, 0) # 红色
段落对齐
1paragraph = doc.add_paragraph('居中对齐的段落')
2paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
3
4paragraph = doc.add_paragraph('右对齐的段落')
5paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
3. 表格操作
创建表格
1# 创建3x3表格
2table = doc.add_table(rows=3, cols=3)
3
4# 填充数据
5for row in range(3):
6 for col in range(3):
7 cell = table.cell(row, col)
8 cell.text = f'单元格 ({row},{col})'
9
10# 应用表格样式
11table.style = 'Table Grid'
表格操作
1# 添加行
2row = table.add_row()
3
4# 获取单元格
5cell = table.rows[0].cells[0]
6
7# 合并单元格
8cell_1 = table.cell(0, 0)
9cell_2 = table.cell(0, 1)
10cell_1.merge(cell_2)
4. 图片操作
插入图片
1# 插入图片
2doc.add_picture('image.png', width=Inches(5.0))
3
4# 带标题的图片
5doc.add_picture('image.png', width=Inches(4.0))
6last_paragraph = doc.paragraphs[-1]
7last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER
8doc.add_paragraph('图 1: 示例图片').alignment = WD_ALIGN_PARAGRAPH.CENTER
5. 页面设置
页面格式
1from docx.shared import Mm
2from docx.enum.text import WD_LINE_SPACING
3
4section = doc.sections[0]
5section.page_height = Mm(297) # A4纸高度
6section.page_width = Mm(210) # A4纸宽度
7
8# 设置页边距
9section.left_margin = Inches(1)
10section.right_margin = Inches(1)
11section.top_margin = Inches(1)
12section.bottom_margin = Inches(1)
6. 实用案例
生成报告模板
1def create_report(title, content, author):
2 doc = Document()
3
4 # 添加标题
5 doc.add_heading(title, 0)
6
7 # 添加作者信息
8 p = doc.add_paragraph(f'作者:{author}')
9 p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
10
11 # 添加日期
12 from datetime import datetime
13 p = doc.add_paragraph(f'日期:{datetime.now().strftime("%Y-%m-%d")}')
14 p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
15
16 # 添加正文
17 doc.add_paragraph(content)
18
19 # 保存文档
20 filename = f'report_{datetime.now().strftime("%Y%m%d")}.docx'
21 doc.save(filename)
22 return filename
23
24# 使用示例
25report = create_report(
26 '项目周报',
27 '本周完成了以下工作:\n1. 功能开发\n2. 测试用例编写\n3. 文档更新',
28 '张三'
29)
批量处理Word文档
1import os
2
3def process_all_docs(folder_path):
4 for filename in os.listdir(folder_path):
5 if filename.endswith('.docx'):
6 doc_path = os.path.join(folder_path, filename)
7 doc = Document(doc_path)
8
9 # 处理文档
10 for paragraph in doc.paragraphs:
11 # 示例:将所有文本转为大写
12 for run in paragraph.runs:
13 run.text = run.text.upper()
14
15 # 保存修改
16 doc.save(os.path.join(folder_path, f'processed_{filename}'))
17
18# 使用示例
19process_all_docs('./documents')
7. 高级技巧
样式管理
1def apply_custom_style(doc):
2 # 创建自定义样式
3 style = doc.styles.add_style('CustomStyle', WD_STYLE_TYPE.PARAGRAPH)
4 font = style.font
5 font.name = '微软雅黑'
6 font.size = Pt(12)
7 font.bold = True
8
9 # 应用样式
10 paragraph = doc.add_paragraph('使用自定义样式的段落', style='CustomStyle')
11 return paragraph
页眉页脚
1def add_header_footer(doc, header_text, footer_text):
2 section = doc.sections[0]
3
4 # 添加页眉
5 header = section.header
6 header_para = header.paragraphs[0]
7 header_para.text = header_text
8 header_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
9
10 # 添加页脚
11 footer = section.footer
12 footer_para = footer.paragraphs[0]
13 footer_para.text = footer_text
14 footer_para.alignment = WD_ALIGN_PARAGRAPH.CENTER
8. 性能优化
批量操作优化
1def efficient_doc_processing(doc):
2 # 创建段落列表
3 paragraphs = []
4 for i in range(1000):
5 paragraphs.append(f'段落 {i}')
6
7 # 批量添加段落
8 for text in paragraphs:
9 doc.add_paragraph(text)
10
11 # 一次性保存
12 doc.save('large_document.docx')
实战技巧与注意事项
处理中文时,建议使用支持中文的字体,如"微软雅黑"、"宋体"等
操作大文件时,注意及时保存,避免内存占用过大
处理批量文件时,建议加入错误处理机制
好啦!今天的python-docx入门教程就到这里了。掌握这些基础知识,你就能轻松处理80%的Word文档自动化任务!
如果觉得对你有帮助,别忘了点赞关注!有任何问题都可以在评论区留言,我们一起交流进步!