2017-03-27 6 views
2

은?, 지금까지 내가 가지고 :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') 

없음 이잖아요 어떤 번호 또는 내가 col.width에서 설정 한 단위, 폭은 변경되지 않습니다.

답변

3

짧은 대답 : 셀 폭을 개별적으로 설정하십시오.

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 

을; 특정 병합 된 셀 상황에서는 모호합니다.

+0

'for 셀, 너비가 zip 인 행 (row.cells, Inches (1), Inches (2), Inches (1.5)))을 사용하여 색인을 건너 뛸 수 있습니다. cell.width = width' – altendky