当前位置: 首页 > news >正文

python——python-docx

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')

解释:

  • bolditalic:设置粗体和斜体。
  • 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库进行文档处理。

相关文章:

  • ffmpeg视频转切片m3u8并加密videojs播放hls.js播放dplayer播放(弹幕效果)
  • Mysql集群
  • 大模型时代下,软件检测行业将如何发展?
  • 我问Chat GPT:怎么提交app到苹果商店审核
  • 清除系统缓存提高写盘速度的tips
  • RedisTemplate集成+封装RedisUtil
  • 简述Glide的源码
  • 010 OSS文件上传
  • 【HarmonyOS】鸿蒙应用蓝牙功能实现 (三)
  • 【C++ Primer Plus习题】7.4
  • 源代码编译,Apache DolphinScheduler前后端分离部署解决方案
  • 【面试经验】美团基础研发部产品经理面试经验
  • 【HuggingFace Transformers】BertSelfOutput 和 BertOutput源码解析
  • 如何在路由器中抓包分析
  • 纯原生-如何在不破解情况下使用Android监听支付宝微信收款消息
  • JavaScript中DOW和BOW;笔记分享;知识回顾
  • 欧科云链: Web3浪潮下合规是“必选项”, 技术创新成发展重点
  • 手把手教你用jmeter做压力测试(详图)
  • 夜深了,赶紧根据软件系统建模建设一个房屋租赁服务系统,坐上收租大佬宝座,走上人生巅峰
  • 【React】Redux-toolkit 处理异步操作
  • 鲁迅先生儿媳、周海婴先生夫人马新云女士逝世,享年94岁
  • 东风着陆场近日气象条件满足神舟十九号安全返回要求
  • 广西干旱程度有所缓解,未来一周旱情偏重地区降水量仍不足
  • 在循环往复的拍摄中,重新发现世界
  • 马上评丨机械停车库成“僵尸库”,设计不能闭门造车
  • 中国贸促会:有近50%的外贸企业表示将减少对美业务