简介:本文详解如何使用Python的python-docx库高效操作Word文档中的表格与文字,涵盖表格创建、文字编辑、样式调整及复杂场景处理,提供完整代码示例与实用技巧。
python-docx是Python中操作Word文档(.docx格式)的核心库,支持表格创建、文字格式调整、段落管理等。其底层基于Office Open XML标准,通过解析XML结构实现文档操作。
安装步骤:
pip install python-docxfrom docx import Document无报错即成功Document:代表整个Word文档Table:表格对象,包含行、列、单元格Paragraph:段落对象,包含文字、样式Run:文字片段,可单独设置字体、颜色等
from docx import Documentdoc = Document()table = doc.add_table(rows=3, cols=3) # 创建3x3表格# 填充表格内容for i in range(3):for j in range(3):table.cell(i, j).text = f"行{i+1}列{j+1}"doc.save("基础表格.docx")
关键点:
add_table()方法通过行数、列数创建表格cell(row, col)定位单元格,text属性直接赋值处理动态数据时,需根据数据长度调整表格结构:
data = [["姓名", "年龄", "职业"],["张三", "28", "工程师"],["李四", "32", "设计师"]]doc = Document()table = doc.add_table(rows=len(data), cols=len(data[0]))for i, row in enumerate(data):for j, cell_value in enumerate(row):table.cell(i, j).text = cell_valuedoc.save("动态表格.docx")
优化技巧:
enumerate()同时获取索引与值通过Table对象的style属性应用内置样式:
table.style = "Table Grid" # 带边框的表格# 或自定义样式from docx.shared import Pt, RGBColorstyle = doc.styles["Normal"]font = style.fontfont.name = "微软雅黑"font.size = Pt(12)
样式选项:
Table Grid:带边框Light Shading:浅色底纹Medium List 1:中等列表样式通过paragraphs属性遍历文档所有段落:
doc = Document("示例.docx")for para in doc.paragraphs:if "关键字" in para.text:print(f"找到段落:{para.text}")
精准定位:
runs属性处理段落内部分文字:
for para in doc.paragraphs:for run in para.runs:if "特定文字" in run.text:run.font.bold = True # 加粗
使用Font对象设置字体属性:
from docx.shared import Pt, RGBColorpara = doc.add_paragraph("示例文字")run = para.add_run("加粗红色文字")run.bold = Truerun.font.color.rgb = RGBColor(255, 0, 0) # 红色run.font.size = Pt(14)
常用格式属性:
bold:加粗italic:斜体underline:下划线color.rgb:字体颜色size:字号(Pt单位)在表格前后添加说明文字:
doc = Document()doc.add_paragraph("以下是员工信息表:")table = doc.add_table(rows=2, cols=2)table.cell(0, 0).text = "姓名"table.cell(0, 1).text = "部门"table.cell(1, 0).text = "王五"table.cell(1, 1).text = "市场部"doc.add_paragraph("表格结束,共2条记录。")doc.save("混合排版.docx")
使用merge()方法合并单元格:
doc = Document()table = doc.add_table(rows=2, cols=4)# 合并第一行的后两列cell = table.cell(0, 2)cell.merge(table.cell(0, 3))cell.text = "合并单元格"doc.save("合并单元格.docx")
注意事项:
text属性
doc = Document("现有文档.docx")for table in doc.tables:for row in table.rows:for cell in row.cells:print(cell.text, end="\t")print() # 换行
数据提取技巧:
data = [[cell.text for cell in row.cells] for table in doc.tables for row in table.rows]
IndexError防止表格越界示例:高效表格生成:
def generate_report(data, filename):doc = Document()table = doc.add_table(rows=len(data), cols=len(data[0]))for i, row in enumerate(data):for j, value in enumerate(row):table.cell(i, j).text = str(value)doc.save(filename)# 调用示例data = [["A", "B", "C"], [1, 2, 3], [4, 5, 6]]generate_report(data, "高效报告.docx")
paragraph_format调整对齐方式docx2python等替代库总结:python-docx库为Word文档操作提供了强大的Python接口,通过掌握表格创建、文字格式调整及复杂场景处理,可高效完成自动化文档生成任务。建议结合实际需求,灵活运用样式复用、批量操作等技巧提升效率。