2017-09-24 4 views
1

열린 docx-file을 사용하는 것에 관한 작은 질문이 있습니다. 이 내 코드의 일부입니다python-docx에서 테이블 작업하기

doc = Document(self.fileName[0]) 

for paragraph in doc.paragraphs: 
    self.cursor.insertText(paragraph.text + '\n') 

for table_index, table in enumerate(doc.tables): 
    self.cursor.insertText('Таблица {0}\n'.format(table_index+1)) 
    for row_index in range(len(table.rows)): 
     for column_index in range(len(table.columns)): 
     self.cursor.insertText(table.cell(row_index, column_index).text + '\t') 
     self.cursor.insertText('\n') 
    self.cursor.insertText('\n') 

테이블이 원래 문서에 physicaly 배치되어 내가 알 수있다 질문? 문과 같은 순서로 단락과 표를 표시해야합니다.

답변

0

이 작업은 아직 API python-docx에서 직접 지원되지 않습니다. 그러나 여기서 해결 방법을 찾을 수 있습니다 : https://github.com/python-openxml/python-docx/issues/40 'python-docx iter block items'에서 검색하면 더 많은 정보를 얻을 수 있습니다.

기본적으로 Word 용 Microsoft API에는 블록 수준 항목을 문서 순서로 반복하는 메서드가 포함되어 있지 않다는 점이 기본 문제입니다. Word의 블록 수준 항목은 단락 및 표 개체입니다. python-docx은 시작 지점으로 MS API를 모델링 했으므로 Document.paragraphsDocument.tables 속성이 처음 구현되었습니다. Document.iter_block_items() 또는 아마도 Document.block_items은 아직 구현되지 않았지만 자주 요청되기 때문에 다른 많은 기능보다 향상 목록의 상단에 가깝습니다.

그 동안 자신의 코드에 해결 방법 기능을 구현해야합니다.

+0

감사합니다. 링크 코드가 완벽하게 작동합니다. –