我正在尝试使用python-docx将具有动态行(数量取决于用户)的表导出到Microsoft Word表这是我的docx代码:
doc.add_heading("Findings Summary", level=1)
table_findings = doc.add_table(rows=0, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'ID'
hdr_cells[1].text = 'Description'
hdr_cells[2].text = 'Risk'
test_id1 = self.InformationOverviewTestIDLineEdit.text()
for row_index, row_data in enumerate(c.execute('SELECT Summary_Findings_Name, Summary_Findings_Desc, Summary_Findings_Risk FROM Findings_Summaries WHERE Test_ID=?', [test_id1])):
row_cells = table_findings.add_row().cells
row_cells[0].text = (row_data)
row_cells[1].text = (row_data)
row_cells[2].text = (row_data)
doc.add_page_break()
这只是我需要工作的代码的一部分,其余部分则可以正常工作。那是我的第一次尝试,我认为这样做会更容易。本质上,我想循环数据库以查找Test_ID,并从包含所搜索Test_ID的数据库中提取所有行。该Test_ID将显示在我的PyQT5代码的“行编辑”中。我正在努力的循环部分。如果我按原样运行该代码,它将返回此错误:
元组索引超出范围
line 1080, in Extracting_Report
hdr_cells1[2].text = 'Risk'
IndexError: tuple index out of range
编辑:我设法找到了问题,这是新代码:
doc.add_heading("Findings Summary", level=1)
table_findings = doc.add_table(rows=1, cols=3)
hdr_cells1 = table_findings.rows[0].cells
hdr_cells1[0].text = 'ID'
hdr_cells1[1].text = 'Description'
hdr_cells1[2].text = 'Risk'
test_id1 = self.InformationOverviewTestIDLineEdit.text()
for row_index, row_data in enumerate(c.execute('SELECT Summary_Findings_Name, Summary_Findings_Desc, Summary_Findings_Risk FROM Findings_Summaries WHERE Test_ID=?', [test_id1])):
row_cells = table_findings.add_row().cells
row_cells[0].text = (row_data)
row_cells[1].text = (row_data)
row_cells[2].text = (row_data)
print(row_data)
但是,现在它打印了row_data但没有创建文档,它应该考虑是否删除了这段代码,因此可以很好地创建docx文档
具有零行的表没有单元格。试试: