Python的python-docx
库:完整说明
python-docx
是一个用于创建、修改和操作Word文档的Python库。本文将全面介绍如何使用python-docx
进行文档创建、格式化、表格操作、图像插入及高级用法。
一、安装
首先,需要安装python-docx
库。可以通过pip安装:
pip install python-docx
二、创建和保存文档
1. 创建文档
from docx import Document
# 创建一个新的Word文档
doc = Document()
# 添加标题
doc.add_heading('Document Title', level=1)
# 添加段落
doc.add_paragraph('This is a paragraph in the document.')
# 保存文档
doc.save('example.docx')
2. 添加段落
doc.add_paragraph('This is another paragraph.')
doc.add_paragraph('This paragraph has some bold text.', style='BodyText')
解释:
add_heading(text, level)
:添加标题,level
决定标题的级别(1-5)。add_paragraph(text, style)
:添加段落,可以设置样式。
三、格式化文本
1. 基本格式化
from docx import Document
from docx.shared import Pt
from docx.oxml.ns import qn
doc = Document()
# 添加带有格式的段落
p = doc.add_paragraph()
p.add_run('Bold Text').bold = True
p.add_run(' and ').add_run('Italic Text').italic = True
# 设置字体大小
run = p.add_run(' and Large Text')
run.font.size = Pt(20)
doc.save('formatted_text.docx')
解释:
bold
、italic
:设置粗体和斜体。Pt(size)
:设置字体大小。
四、表格操作
1. 创建表格
from docx import Document
doc = Document()
# 创建一个2行3列的表格
table = doc.add_table(rows=2, cols=3)
# 设置表格样式
table.style = 'Table Grid'
# 填充表格数据
table.cell(0, 0).text = 'Header 1'
table.cell(0, 1).text = 'Header 2'
table.cell(0, 2).text = 'Header 3'
table.cell(1, 0).text = 'Data 1'
table.cell(1, 1).text = 'Data 2'
table.cell(1, 2).text = 'Data 3'
doc.save('basic_table.docx')
2. 设置表头
from docx import Document
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
doc = Document()
# 创建一个带有表头的表格
table = doc.add_table(rows=2, cols=3)
table.style = 'Table Grid'
# 设置表头
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 cell in hdr_cells:
cell.text = cell.text.upper() # 表头文字大写
cell.font.size = Pt(12)
cell.font.bold = True
cell.font.color.rgb = RGBColor(255, 255, 255) # 白色
cell._element.get_or_add_tcPr().append(qn('w:shd')).set(qn('w:fill'), '000000') # 黑色背景
# 填充表格数据
data_cells = table.rows[1].cells
data_cells[0].text = 'Data 1'
data_cells[1].text = 'Data 2'
data_cells[2].text = 'Data 3'
doc.save('table_with_header.docx')
3. 合并单元格
from docx import Document
doc = Document()
# 创建一个3x3的表格
table = doc.add_table(rows=3, cols=3)
# 填充表格内容
table.cell(0, 0).text = 'Merged Cell'
table.cell(0, 0).merge(table.cell(0, 2)) # 合并第一行的第二列和第三列
table.cell(1, 0).text = 'Row 2, Column 1'
table.cell(1, 1).text = 'Row 2, Column 2'
table.cell(1, 2).text = 'Row 2, Column 3'
table.cell(2, 0).text = 'Row 3, Column 1'
table.cell(2, 1).text = 'Row 3, Column 2'
table.cell(2, 2).text = 'Row 3, Column 3'
doc.save('merged_cells.docx')
4. 自定义表格样式
from docx import Document
from docx.oxml import OxmlElement
doc = Document()
# 创建一个3x3的表格
table = doc.add_table(rows=3, cols=3)
# 设置表格样式
table.style = 'Table Grid'
# 自定义表格边框
tbl = table._tbl
tblPr = tbl.tblPr
tblBorders = tblPr.tblBorders
tblBorders.top.set(qn('w:val'), 'single')
tblBorders.left.set(qn('w:val'), 'single')
tblBorders.bottom.set(qn('w:val'), 'single')
tblBorders.right.set(qn('w:val'), 'single')
tblBorders.insideH.set(qn('w:val'), 'single')
tblBorders.insideV.set(qn('w:val'), 'single')
doc.save('custom_table_style.docx')
五、插入图像
1. 插入图像
from docx import Document
from docx.shared import Inches
doc = Document()
# 插入图像
doc.add_picture('example_image.png', width=Inches(2))
doc.save('document_with_image.docx')
解释:
add_picture(image_path, width)
:插入图像并设置宽度。
六、处理复杂格式
1. 表格中的复杂格式
from docx import Document
from docx.shared import Pt, RGBColor
doc = Document()
# 创建表格
table = doc.add_table(rows=2, cols=2)
# 设置表头
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Quantity'
hdr_cells[1].text = 'Price'
# 设置格式
for cell in hdr_cells:
cell.text = cell.text.upper() # 大写
cell.font.size = Pt(12)
cell.font.bold = True
cell.font.color.rgb = RGBColor(255, 255, 255) # 白色
cell._element.get_or_add_tcPr().append(qn('w:shd')).set(qn('w:fill'), '000000') # 黑色背景
# 插入数据
data_cells = table.rows[1].cells
data_cells[0].text = '10'
data_cells[1].text = '$20.00'
doc.save('table_with_format.docx')
解释:
- 使用
cell.font.size
,cell.font.bold
, 和cell.font.color.rgb
来设置字体的大小、粗细和颜色。 - 使用
cell._element.get_or_add_tcPr().append(qn('w:shd')).set(qn('w:fill'), '000000')
来设置背景颜色。
2. 高级用法:插入表格后创建复杂格式
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Inches
doc = Document()
# 创建表格
table = doc.add_table(rows=2, cols=2)
table.style = 'Table Grid'
# 填充表头
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Header 1'
hdr_cells[1].text = 'Header 2'
# 合并单元格
table.cell(1, 0).merge(table.cell(1, 1))
# 填充数据
table.cell(1, 0).text = 'Merged Cell'
# 自定义表格样式
tbl = table._tbl
tblPr = tbl.tblPr
tblBorders = tblPr.tblBorders
tblBorders.top.set(qn('w:val'), 'single')
tblBorders.left.set(qn('w:val'), 'single')
tblBorders.bottom.set(qn('w:val'), 'single')
tblBorders.right.set(qn('w:val'), 'single')
# 插入图像
doc.add_picture('example_image.png', width=Inches(2))
doc.save('complex_format.docx')
解释:
- 在创建表格后,可以使用
cell.merge()
方法合并单元格。 - 使用
tblBorders
自定义表格边框。
七、查找更多示例和文档
要查
找更多关于python-docx
库的API和使用示例,可以访问python-docx Documentation。这里提供了详细的文档和更多使用案例。
总结
python-docx
库提供了创建和操作Word文档的强大功能。通过本指南,你可以了解如何创建和格式化文档,操作表格,插入图像,以及处理复杂格式。希望这些示例和说明能够帮助你更好地利用python-docx
库进行文档处理。