Python 的 python-docx
库是一个用于创建和更新 Microsoft Word (.docx) 文件的Python库。它允许你添加和修改文档内容,包括文本、图像、表格等。这个库对于自动化文档生成和数据处理非常有用,尤其是在需要生成报告或者批量处理文档的场景中。
以下是一些基本的使用示例:
安装:你可以使用pip来安装python-docx
库:
pip install python-docx
创建一个新的Word文档:
from docx import Document
doc = Document()
doc.add_heading('Hello World') # 添加标题
doc.add_paragraph('This is a paragraph.') # 添加段落
doc.save('hello.docx') # 保存文档
读取现有的Word文档:
doc = Document('existing.docx')
for para in doc.paragraphs:
print(para.text) # 打印文档中每个段落的文本
添加表格:
table = doc.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Header 1'
hdr_cells[1].text = 'Header 2'
hdr_cells[2].text = 'Header 3'
for i, row in enumerate(table.add_rows(3)):
for j in range(3):
row.cells[j].text = 'Row {} Column {}'.format(i + 1, j + 1)
添加图片:
doc = Document('existing.docx')
for para in doc.paragraphs:
if 'Python' in para.text:
para.text = para.text.replace('Python', 'Python-Docx')
doc.save('existing_modified.docx')
替换图片:
#加载文档
from docx import Document
doc = Document('your_document.docx')
#查找图片
for inline in doc.inline_shapes:
if inline.shape_type == 13: # 13 代表图片类型
print(inline._inline.graphic.graphic_data.image)
#替换图片
from docx.shared import Inches
# 假设你已经找到了要替换的图片的 inline 或者 other 属性
image_inline = some_image_inline
# 删除旧图片
parent = image_inline.parent
parent._element.remove(image_inline._element)
# 在相同位置插入新图片
new_image = doc.add_picture('path_to_new_image.jpg', width=Inches(2)) # 可以指定新图片的尺寸
new_image._inline = image_inline._inline # 保留原有的内联属性
调整图片大小:
from docx import Document
from docx.shared import Inches
doc = Document('your_document.docx')
for shape in doc.inline_shapes:
if shape.shape_type == 13: # 13 代表内联图片
shape.width = Inches(2) # 设置图片宽度为2英寸
shape.height = Inches(1.5) # 设置图片高度为1.5英寸
#对于浮动图片(如文本框中的图片),可以使用 Shapes 集合中的 Shape 对象:
for shape in doc.shapes:
if shape.shape_type == 13: # 13 代表图片
shape.width = Inches(4) # 设置图片宽度为4英寸
shape.height = Inches(3) # 设置图片高度为3英寸
调整图片位置:
for shape in doc.inline_shapes:
if shape.shape_type == 13:
shape.left = Inches(1) # 设置图片左边距为1英寸
shape.top = Inches(0.5) # 设置图片顶部距为0
#对于浮动图片,位置的调整方式类似:
for shape in doc.shapes:
if shape.shape_type == 13:
shape.left = Inches(2) # 设置图片左边距为2英寸
shape.top = Inches(1) # 设置图片顶部距为1英寸