python-docx表格设置

获得文档的所有表格

#方法一:创建表格时设置
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm
from docx.shared import RGBColor
doc=Document()
table = doc.add_table(rows=4, cols=3,style ='Table Grid')
#方法二:创建表格后,再设置
doc=Document()
table = doc.add_table(rows=4, cols=3)
table.style ='Table Grid'

博客中记载了相关表格的代码

设置表格列宽 & 行高

可以设置每个单元格的宽,同列单元格宽度相同,如果定义了不同的宽度将以最大值准 table.cell(0,0).width=Cm(10) #设置行高 table.rows[0].height=Cm(2)

表格数据写入

cell=table.cell(0, 1) cell.text = 'i-search' cell=table.cell(0,0) p=cell.paragraphs[0] run = p.add_run("RPA")

表格文本格式设置

#单个单元格设置
run.font.color.rgb = RGBColor(255, 0, 0)  # 颜色设置,这里是用RGB颜色
run.font.size = Pt(15)  # 字体大小设置,和word里面的字号相对应
p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER    #设置对齐方式
#设置整个表格字体属性
table.style.font.size=Pt(18)
table.style.font.color.rgb=RGBColor(255, 0, 0)
table.style.paragraph_format.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER

合并单元格

cell_1=table.cell(1, 0)
cell_2=table.cell(2, 1)
cell_1.merge(cell_2)
table.add_row()
#有时候,简单的添加行列,会导致表格设置的样式不会延续,此时,需要深度复制一行或者一列
new_row=deepcopy(table.rows[-1])
table.rows[-1]._tr.addnext(new_row._element)#在最后一行后面添加
table.rows[-1]._tr.addprevious(new_row._element)
width:列宽
table.add_column(width=Cm(1))
# 运行结果
# [<docx.table._Cell object at 0x000000000B311C88>,
# <docx.table._Cell object at 0x000000000B311AC8>,
# <docx.table._Cell object at 0x000000000B311B08>,
# <docx.table._Cell object at 0x000000000B311A48>]
# 获取一列的单元格对象列表
col_0_cells = table1.column_cells(0)
print(col_0_cells)
# 运行结果
# [<docx.table._Cell object at 0x000000000B312F88>,
# <docx.table._Cell object at 0x000000000B312CC8>,
# <docx.table._Cell object at 0x000000000B31A108>]

设置单元格字体及大小的其他方法

单元格内其实也是有 paragraph 对象的,即对单元格内字体设置方式,和对段落中文字格式设置方法一样。

cell_par = cell_new.paragraphs[0] # 获取到对象
# 设置对齐方式
from docx.enum.text import WD_ALIGN_PARAGRAPH
cell_par.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
# 获取 run 对象
cell_run = cell_new.paragraphs[0].runs[0]
# 设置字体
cell_run.font.name = 'Times New Roman'
from docx.oxml.ns import qn
cell_run.font.element.rPr.rFonts.set(qn('w:eastAsia'),'楷体')
# 设置字体颜色
from docx.shared import RGBColor
cell_run.font.color.rgb = RGBColor(255,55,55) # 红色

复制表格,并插入在文档指定段落中插入复制的表格

from copy import deepcopy #导入copy模块
from docx import Document
document=Document("report_yang.docx")#读取已有的文档
tables = document.tables#获取文档中所有的表格