如何在表格中設置單元格寬度?到目前為止,我得到了:
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')
沒有我在col.width中設置的數量或單位,其寬度不會改變.
簡答:單獨設置單元格寬度.
for cell in table_columns[0].cells: cell.width = Inches(0.5)
設置列寬時,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
如果你的表有合並的單元格,這會變得有點復雜,這實際上可能是Word忽略列寬的原因;它們在某些合並單元情況下是模棱兩可的.