Estou tentando definir as larguras das colunas da tabela, mas não consigo.
De acordo com os tópicos que pesquisei aqui, algo assim deve definir a largura da célula. Não tenho certeza do que é EMU, mas acredito que Mm(10) converte 10mm em EMU.
table.cell(0,0).width = 1097280
Fiz uma tabela bem simples, com apenas 1 linha. Achei que isso deveria definir as larguras das colunas, mas tudo que consigo são 3 colunas de largura igual! Tentei muitas abordagens diferentes.
EDIT: esqueci de colocar os dados
from docx import Document
from docx.shared import Pt, Mm, Cm, Inches
from docx.enum.table import WD_ALIGN_VERTICAL, WD_TABLE_ALIGNMENT
filename = "/home/pedro/myPython/docxFiles/example_table.docx"
doc = Document()
heading = 'Shiny new but awkward table" \n\n'
doc.add_heading(heading, 4)
table = doc.add_table(rows=1, cols=3)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
table.autofit = False
table.allow_autofit = False
table.style = 'Table Grid'
headers = ["Name", "Age", "Occupation"]
widths = [15.9, 11.8, 26.7]
for col, col_data in enumerate(headers):
print(col, col_data)
table.cell(0,col).text = col_data
for col, width in enumerate(widths):
print(col, width)
table.cell(0, col).width = Mm(widths[col])
doc.save(filename)
Claro, quero obter a largura máxima da string em uma coluna e definir a largura da coluna para esse valor ou para um valor máximo, mas por enquanto, mesmo definir valores absolutos não funciona para mim.
O que estou fazendo de errado? Talvez porque eu abro com o Libre Office, não com o MS Word?
Alguma dica, por favor?
Ao abrir o documento utilizando MSWORD2013, e utilizando SaveAs, aparece a seguinte tela:
Ao escolher OK e abrir o documento no LibreOffice (versão 7.6.2) parece OK:
Já existe um bug no docx, consulte: Nenhuma maneira possível de realmente definir a largura preferencial da tabela