如何使用python-docx制作表格的单元格边框

问题描述 投票:0回答:5

我想用 python-docx 设置单元格边框。我使用了以下命令,但发生了错误。

document = Document("mydoc.docx")
table = document.add_table(rows=1, cols=3, style='Table Grid')

错误如下;

KeyError: "no style with name 'TableGrid'"
python python-docx
5个回答
2
投票

此错误表明“mydoc.docx”中没有“Table Grid”样式。

您可以在此处的文档中阅读有关潜在样式和一般样式以及行为(例如此)的更多信息:
https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html

这里:
https://python-docx.readthedocs.io/en/latest/user/styles-using.html

基本上你需要:

  1. 用Word打开“mydoc.docx”
  2. 添加表格
  3. 将“表格网格”表格样式应用于新表格
  4. 删除表
  5. 保存文件(同名)

这会将“表格网格”样式添加到该 docx 文件中,然后您的代码应该按预期工作。


2
投票

您不能使用

Table Grid
,因为文档中没有该样式

或者,您可以在 oxml 级别上工作并将边框元素添加到 tableProperty 元素

import docx
document = docx.Document()
table = document.add_table(2,2)
borders = table._tbl.tblPr.get_or_add_tblBorders()
bottom_border = docx.oxml.shared.OxmlElement('w:bottom')
bottom_border.set(docx.oxml.shared.qn('w:val'), 'single')
bottom_border.set(docx.oxml.shared.qn('w:sz'), '4')
borders.append(bottom_border)
document.save('test.docx')


同样,您可以对上、左、右边框执行相同的操作


2
投票

@Obay达巴

get_or_add_tblBorders
似乎不再是一种方法,但我能够让它工作:

borders = OxmlElement('w:tblBorders')
bottom_border = OxmlElement('w:bottom')
bottom_border.set(qn('w:val'), 'single')
bottom_border.set(qn('w:sz'), '4')
borders.append(bottom_border)
table._tbl.tblPr.append(borders)

0
投票

我认为你的在线类型有误:

table = document.add_table(rows=1, cols=3, style='Table Grid')

更新线路:

table = document.add_table(rows=1, cols=3, style='TableGrid')

否则

table.style = 'TableGrid'


0
投票

从 docx 导入文档

doc = 文档()

table = doc.add_table(rows=1, cols=len(data[0]))

table.style = 'Table Grid' # 该样式为表格添加边框

© www.soinside.com 2019 - 2024. All rights reserved.