Python自动化办公神器:10分钟学会用python-docx,让Word文档处理效率翻倍!

文摘   2024-11-12 11:00   上海  

哈喽,大家好!我是风哥,一个资深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(25500)  # 红色

段落对齐

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(00)
9cell_2 = table.cell(01)
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文档自动化任务!

如果觉得对你有帮助,别忘了点赞关注!有任何问题都可以在评论区留言,我们一起交流进步!

py学习基地ai
分享生活百态,情感故事,了解不一样的人生
 最新文章