Python Docx表列宽

时间:2017-05-03 00:23:19

标签: python python-3.6 docx python-docx

我知道我错过了一些简单的东西,但它并没有沉入其中。我知道我必须在每个单独的单元格上设置宽度。

我想在Word docx中构建一个表,其中第一列为1.2英寸,第二列为5.3英寸。当我尝试以下操作时,第一列为0.63英寸,第二列为1.72英寸。对于宽度尺寸我似乎并不重要。我在第一列上尝试了3.0,它仍然显示为0.63英寸。我在这里缺少什么?

import docx

doc = docx.Document()
doc.add_heading('Name: ', level=1)

table = doc.add_table(rows=4, cols=2)
table.cell(0,0).width = 1.2
table.cell(1,0).width = 1.2
table.cell(2,0).width = 1.2
table.cell(3,0).width = 1.2
table.cell(0,1).width = 5.3
table.cell(1,1).width = 5.3
table.cell(2,1).width = 5.3
table.cell(3,1).width = 5.3

table.cell(0,0).text = 'Time Zone'
table.cell(1,0).text = 'Link'
table.cell(1,1).text = 'https://www.google.com/'
table.cell(2,0).text = 'Website'
table.cell(3,0).text = 'Facebook'

doc.save('test.docx')

2 个答案:

答案 0 :(得分:3)

单元格对象的宽度在EMU中,而不是以英寸为单位:https://python-docx.readthedocs.io/en/latest/api/table.html#docx.table._Cell.width

一英寸有914400个动车组,所以转换你的代码如下,它应该工作:

table.cell(0,0).width = 1097280     # 1.2 * 914400
table.cell(1,0).width = 1097280
table.cell(2,0).width = 1097280
table.cell(3,0).width = 1097280
table.cell(0,1).width = 4846320    # 5.3 * 914400 
table.cell(1,1).width = 4846320
table.cell(2,1).width = 4846320
table.cell(3,1).width = 4846320

答案 1 :(得分:3)

你可以这样使用英寸:

table.cell(0,0).width = Inches(1.0)