首页 > 编程语言 >【python-docx】添加表格、合并单元格、设置样式

【python-docx】添加表格、合并单元格、设置样式

时间:2023-04-17 15:26:27浏览次数:35  
标签:docx python 单元格 style cell table row

1.表格
1.1 添加表格
添加表格很简单,只需要调用一下add_table()即可,返回一个Table对象,参数可以指定行、列、样式

from docx import Document

doc = Document()
# 添加一个5行3列的表格,样式是网格实线
table = doc.add_table(5, 3, style="Table Grid")
doc.save('./test.docx')

1.2 添加行列
from docx import Document
from docx.shared import Cm, RGBColor, Pt
...
table.add_row() # 在最下面添加一行
table.add_column(Pt(25)) # 在最右边添加一列并指定宽度为25磅
1.3 表格样式
...
table.cell(1, 2).text = "冰冷的希望"
table.style.font.size = Pt(15) # 字体大小15磅
table.style.font.color.rgb = RGBColor.from_string("6495ED") # 字体颜色
table.style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 左对齐
2.行列对象
首先是一个表格(Table),表格里有行(Row)和列(Column),行或列里有单元格(Cell)
python-docx中用_Row和_Column分别代表行和列,,用_Rows和_Columns表示多行多列,可以使用Table对象的rows和columns属性获取所有行列,如果想要访问行列里的单元格,可以进一步遍历

from docx import Document

doc = Document()
table = doc.add_table(5, 3, style="Table Grid")
print(table.rows) # 获取所有行
print(table.columns) # 获取所有列
# 按行遍历单元格
for row in table.rows:
for cell in row.cells:
print(cell)
# 按列遍历单元格
for col in table.columns:
for cell in col.cells:
print(cell)
_Rows和_Columns对象里有一个table属性可以返回所属的表格对象

doc = Document()
table = doc.add_table(5, 3, style="Table Grid")

for row in table.rows:
print(row.table)

for col in table.columns:
print(col.table)
通过上面的遍历可以发现其实_Rows和_Columns就是分别包含Row和Column的可迭代对象,可以通过遍历分别取出Row和Column对象,而Row和Column对象也很简单,两者的属性一样的,如下

for row in table.rows:
print(row.cells) # 所有单元格
print(row.height) # 高度
# 第2行高度改为30磅
if row._index == 2:
row.height = Pt(30)
print(row.height_rule) # 指定高度的规则
print(row.table) # 当前表格对象
print(row._index) # 下标
3.单元格对象
3.1 获取Cell对象
python-docx中用Cell代表单元格,获取单元格对象的方式除了上面的嵌套循环,还可以通过下标获取

doc = Document()
table = doc.add_table(5, 3, style="Table Grid")

# 获取第1行第3列的单元格(下标从0开始)
cell1 = table.cell(0, 2)
3.2 修改单元格文本
如果想要修改单元格的文本,可以直接修改Cell对象的text属性,其实它也是获取单元格的段落然后修改,所以有两种方式

from docx import Document

doc = Document()
table = doc.add_table(5, 3, style="Table Grid")

# 获取第1行第3列的单元格(下标从0开始)
cell1 = table.cell(0, 2)
cell1.text = "冰冷的希望"

cell2 = table.cell(1, 2)
paragraph= cell2.paragraphs[0]
run = paragraph.add_run("冰冰很帅")
3.3 合并单元格
...
cell3 = table.cell(2, 1)
cell4 = table.cell(3, 2)
cell3.merge(cell4)
3.4 单元格样式
可以设置整个表格的样式,也可以单独设置单元格的样式,优先显示单元格样式

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm, RGBColor, Pt

...

cell2 = table.cell(1, 2)
paragraph = cell2.paragraphs[0]
run = paragraph.add_run("冰冰很帅")

# 设置单元格样式
run.font.color.rgb = RGBColor.from_string("00FFFF") # 字体颜色
run.font.size = Cm(1) # 字体大小,1厘米
paragraph.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 居中对齐

# 设置表格样式,但单元格样式优先显示
table.style.font.size = Pt(15) # 字体大小15磅
table.style.font.color.rgb = RGBColor.from_string("6495ED") # 字体颜色
table.style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT # 左对齐
3.5 宽高度
...
# 以同一行或同一列的最大值为准
table.cell(0, 0).width = Cm(3)
table.rows[0].height = Cm(2)

————————————————
原文链接:https://blog.csdn.net/qq_39147299/article/details/125414499

标签:docx,python,单元格,style,cell,table,row
From: https://www.cnblogs.com/x666-6/p/17325932.html

相关文章

  • 盘点Python内置函数sorted()高级用法实战
    今日鸡汤清川带长薄,车马去闲闲。大家好,我是Python进阶者。一、前言前几天在Python钻石交流群有个叫【emerson】的粉丝问了一个Python排序的问题,这里拿出来给大家分享下,一起学习下。其实这里【瑜亮老师】、【布达佩斯的永恒】等人讲了很多,只不过对于基础不太好的小伙伴们来说,还是有......
  • python中列表常见的操作方法
    一、添加元素的方法1.append()方法#l.append()用于在列表末尾添加新的对象,返回值:该方法无返回值,但是会修改原来的列表l=[1,2,3,4,5]l1=[6,7,8]l2={"age":"12"}l3='年后,nihao'l4=('height','name')#增加列表l.append(l1)print(l)#......
  • python s12 day13 JavaScript、Dom和jQuery
    1.JavaScriptJavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。1、JavaScript代码存在形式<!--方式一--><scripttype"text/javascript"src="JS文件"></script>......
  • m1--安装python2
    brewinstallpyenv##这样更快如果在国外这步可以跳过cd~/.pyenvwgethttps://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xzmkdircachecpPython-2.7.18.tar.xzcache##安装pyenvinstall2.7.18exportPATH="$(pyenvroot)/shims:${PATH}"pyenvglobal......
  • python7 用于高级数据类型操作的公共方法
    1.+,*,in‘+’通过此方法可以连接两个数据‘*’通过此方法可以倍数型的复制数据‘in’通过此方法可以查询数据中是否有我们的目标查询数据,返回一个布尔值strA='123'strB='456'print(strA+strB)print(strA*2)print('1'instrA) 注:字符串,列表,元组,字典都可以使用这三种方法......
  • Python Web 深度学习实用指南:第四部分
    原文:Hands-OnPythonDeepLearningfortheWeb协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c第4节:生产中的深度学习(智能Web应用)本节......
  • python+playwright 学习-52 iframe 定位与操作元素,监听事件,执行JS脚本总结
    前言本篇全面总结关于iframe的定位,iframe上元素的操作(输入框,点击等),iframe上的事件监听与iframe上执行JS脚本的总结。iframe对象的定位定位iframe对象,总的来说有四种方法page.frame_locator(selector)通过page对象直接定位iframe对象,传selector选择器参数page.loca......
  • 【迭代器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介迭代器模式(IteratorPattern),是一种结构型设计模式。给数据对象构建一套按顺序访问集合对象元素的方式,而不需要知道数据对象的底层表示。迭代器模式是与集合共存的,我们只要实现一个集合,就需要同时提供这个集合的迭代器,就像Java中的Collection,List、Set、Map等,这些集合都有自......
  • Python 深度学习架构实用指南:第三、四、五部分
    原文:Hands-OnDeepLearningArchitectureswithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c第3节:序列建模在本节中,我们将学习......
  • python学习之-加密字体反扒
    #coding=utf-8'''#获取实习僧招聘信息#(https://www.shixiseng.com/interns?page=2&type=intern&keyword=%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98&area=&months=&days=°ree=&official=&enterprise=&salary=-0&publishTime=......