gir*_*eux 13 ms-word column-width python-docx
如何在表格中设置单元格宽度?到目前为止,我得到了:
from docx import Document
from docx.shared import Cm, Inches
document = Document()
table = document.add_table(rows=2, cols=2)
table.style = 'TableGrid' #single lines in all cells
table.autofit = False
col = table.columns[0]
col.width=Inches(0.5)
#col.width=Cm(1.0)
#col.width=360000 #=1cm
document.save('test.docx')
Run Code Online (Sandbox Code Playgroud)
没有我在col.width中设置的数量或单位,其宽度不会改变.
sca*_*nny 19
简答:单独设置单元格宽度.
for cell in table_columns[0].cells:
cell.width = Inches(0.5)
Run Code Online (Sandbox Code Playgroud)
python-docx当你设置列宽时,你会告诉它做什么.问题是Word忽略了它.其他客户端(如LibreOffice)尊重列宽设置.
甲.docx文件是XML格式(因此在文件的扩展名的"x"后缀).表的XML词汇表有一个列宽的位置和一个单元格宽度的位置.在谈到这个细节时,谁会关注什么有点烦恼.一个共同点是每个人都尊重在单个细胞水平设置的显式宽度.它对我来说没有多大意义,但这是使它工作所需要的.在程序中使用一个能够处理细节的函数可能是有意义的:
def set_col_widths(table):
widths = (Inches(1), Inches(2), Inches(1.5))
for row in table.rows:
for idx, width in enumerate(widths):
row.cells[idx].width = width
Run Code Online (Sandbox Code Playgroud)
如果你的表有合并的单元格,这会变得有点复杂,这实际上可能是Word忽略列宽的原因; 它们在某些合并单元情况下是模棱两可的.
对于 LibreOffice 我必须设置:
table.autofit = False
table.allow_autofit = False
Run Code Online (Sandbox Code Playgroud)
接下来,设置给定的列和单元格宽度
table.columns[0].width = Inches(1.0)
table.rows[0].cells[0].width = Inches(1.0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11228 次 |
| 最近记录: |