Python-Docx将表导出到Word表

问题描述 投票:0回答:1

我正在尝试使用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文档

python ms-word docx python-docx
1个回答
0
投票

具有零行的表没有单元格。试试:

© www.soinside.com 2019 - 2024. All rights reserved.