首页 > 编程语言 >python——python-docx

python——python-docx

时间:2024-08-31 19:25:20浏览次数:13  
标签:docx python doc cells cell text table

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库进行文档处理。

标签:docx,python,doc,cells,cell,text,table
From: https://blog.csdn.net/pumpkin84514/article/details/141504831

相关文章

  • Python的Matplotlib库详解
    Python的Matplotlib库详解Matplotlib是Python中功能强大的数据可视化库,广泛应用于科研、数据分析、报告生成等领域。它能创建各种类型的图表,帮助用户直观地展示数据。一、使用场景1.数据探索和分析:在数据科学领域,Matplotlib经常被用来绘制各种图表,如折线图、散点图、......
  • python字符画
    fromPILimportImageimportargparse#命令行输入参数处理parser=argparse.ArgumentParser()parser.add_argument('file')#输入文件parser.add_argument('-o','--output')#输出文件parser.add_argument('--width',type=int,de......
  • Python基础知识-7(打包成EXE)
    (目录)一、python处理各种格式文件的模块csv处理CSV文件。xml.etree.ElementTree,xml.dom,xml.sax处理XML文件。前两者会将整个XML文件载入内存,最后一个是循序读入。json处理JSON文件。yaml处理YAML文件tablib处理:CSV,JSON,YAML,Excel,PandasDataFrameconfigparser处理Wi......
  • Python如何进行ADF(Augmented Dickey-Fuller)检验
    microPythonPython最小内核源码解析NI-motion运动控制c语言示例代码解析python编程示例系列python编程示例系列二python的Web神器Streamlit如何应聘高薪职位ADF(AugmentedDickey-Fuller)检验用于检查时间序列数据是否具有单位根,从而判断该序列是否平稳。主要用途平......
  • 【基于python tkinter的本地音乐播放器优化版】
    系列文章目录本地音乐播放器初版本地小说阅读器初版本地小说阅读器优化版文章目录系列文章目录前言一、功能介绍二、使用注意项三、界面展示1)菜单分类:2)关键字搜索3)拓展项4)临时列表四、附件前言前面写了一文,学习开发本地音乐播放器,小试牛刀,界面小气、粗糙且羞涩......
  • 【大数据】Java与Python的无缝对接:探讨Java调用Python的方法与原理
    文章目录一、引言二、Java调用Python的原理1.JNI(JavaNativeInterface)2.Jython3.进程间通信三、Java调用Python的实现方法及示例1.使用JNI调用Python2.使用Jython调用Python3.使用进程间通信调用Python4.性能和安全性考虑5.实际应用场景6.最佳实践四、总结一、......
  • python如何输出对称数
    1.什么是回文数/对称数回文数(PalindromeNumber)是指一个正整数,它从左向右读和从右向左读是完全相同的。换句话说,这个数关于其中心点是对称的。例如,数字12321是一个回文数,因为它从左读(12321)和从右读(12321)都是相同的。回文数可以是任何进制的数,但通常我们在讨论回文数时,指的......
  • 如何开发针对不平衡分类的成本敏感神经网络 python
    如何开发针对不平衡分类的成本敏感神经网络深度学习神经网络是一类灵活的机器学习算法,可以在各种问题上表现良好。神经网络使用误差反向传播算法进行训练,该算法涉及计算模型在训练数据集上产生的误差,并根据这些误差的比例更新模型权重。这种训练方法的局限性在于,每个类别......
  • 算法题技巧之“枚举右维护左“--套路详细讲解带例题和易懂代码(Python,C++)
    本文参考:灵茶山艾府-力扣(LeetCode)        分享丨【题单】常用数据结构(前缀和/差分/栈/队列/堆/字典树/并查集/树状数组/线段树)-力扣(LeetCode)    本文主要讲解关于”枚举右维护左“这个刷算法题的技巧,包括简单的原理讲解和两个简单的例题(之后我也会总......
  • python 基础习题7--for循环练习
    1.编写一个程序,判断输入的一个数字是否为偶数。示例输入:3返回:yes示例输入:4返回:no2.编写一个程序,找出列表中的大于50的数,并输出该数及其在列表中的索引位置。该列表可以自己写,例如:[23,78,1,56,35,60,90]输出:7815636059063.编写一个程序,统计一个字符串中字母"a"出现的次数......