Python-docx - 如何更改表格字体大小?

8
table = document.add_table(rows=1, cols=1)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'

我需要改变一个只有一行和一列的表格中“Qty”文本的字体大小,该如何实现?


如果您计划进行大量的样式设置,可以考虑使用 https://github.com/elapouya/python-docx-template。 - click here
4个回答

12

您需要获取单元格中的段落。根据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)

如何访问表格中段落的参考资料:从表格中提取数据


感谢您的解决方案! - huba183
你救了我的一天! - user1931780
2
这也帮助了我,谢谢!如果整个表格的字体大小能像我可以一次性设置整个表格的字体名称和字体斜体/粗体类型那样容易就好了。无法以这种方式设置字体大小似乎是不合逻辑的。这真的是唯一的方法吗? - Sjoerd C. de Vries

3

在user7609283的回答基础上,以下是一个设置单元格加粗的简短版本(在应用格式之前,该单元格必须包含文本,因为它会查找第一段落):

    row_cells = table.add_row().cells
    row_cells[0].text = "Customer"
    row_cells[0].paragraphs[0].runs[0].font.bold = True

3

在上面的解决方案真的很有帮助。我使用了一段时间。但我发现一个微小的问题:时间。当你的表格变得更大时,构建表格所需的时间也越来越长。所以我进行了改进。删掉两个循环。这是您要的:

代码更改了整个表格

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)

当您切割两轮时,可以节省时间。

0

这种字体更改适用于表格的所有单元格,并且非常简化。在格式化之前,所有单元格必须包含文本,否则会抛出索引超出范围的错误:

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接