table = document.add_table(rows=1, cols=1)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
我需要改变一个只有一行和一列的表格中“Qty”文本的字体大小,该如何实现?
table = document.add_table(rows=1, cols=1)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
我需要改变一个只有一行和一列的表格中“Qty”文本的字体大小,该如何实现?
您需要获取单元格中的段落。根据python-docx的文档:
3.5.2 _Cell对象:
class docx.table._Cell (tc, parent)paragraphs
单元格中的段落列表。表格单元格必须包含至少一个块级元素,并以段落结束。默认情况下,新单元格包含一个段落。只读
参考资料:python-docx文档 - Read the Docs
代码:
更改文本“Qty”的字体大小
paragraph =hdr_cells[0].paragraphs[0]
run = paragraph.runs
font = run[0].font
font.size= Pt(30) # font size = 30
更改整个表格的字体大小:
for row in table.rows:
for cell in row.cells:
paragraphs = cell.paragraphs
for paragraph in paragraphs:
for run in paragraph.runs:
font = run.font
font.size= Pt(30)
如何访问表格中段落的参考资料:从表格中提取数据
在user7609283的回答基础上,以下是一个设置单元格加粗的简短版本(在应用格式之前,该单元格必须包含文本,因为它会查找第一段落):
row_cells = table.add_row().cells
row_cells[0].text = "Customer"
row_cells[0].paragraphs[0].runs[0].font.bold = True
在上面的解决方案真的很有帮助。我使用了一段时间。但我发现一个微小的问题:时间。当你的表格变得更大时,构建表格所需的时间也越来越长。所以我进行了改进。删掉两个循环。这是您要的:
代码更改了整个表格
for row in table.rows:
for cell in row.cells:
paragraphs = cell.paragraphs
paragraph = paragraphs[0]
run_obj = paragraph.runs
run = run_obj[0]
font = run.font
font.size = Pt(30)
这种字体更改适用于表格的所有单元格,并且非常简化。在格式化之前,所有单元格必须包含文本,否则会抛出索引超出范围的错误:
for row in table.rows:
for cell in row.cells:
cp = cell.paragraphs[0].runs
cp[0].font.size = Pt(14)
下一个字体更改仅适用于所需的单个单元格,例如此处的左上角单元格:
tc = table.cell(0, 0).paragraphs[0].runs
tc[0].font.size = Pt(14)