【问题标题】:Exporting to Excel Using Openpyxl - specific rows and columns使用 Openpyxl 导出到 Excel - 特定的行和列
【发布时间】:2021-08-01 07:27:40
【问题描述】:

我已尝试使用 Pandas 成功填充 QTableWidget 中的数据。 现在我想将特定的行和列导出到现有的 excel,这样我就不会丢失这个 excel 中的样式表和其他数据。请帮助我找到正确运行它的解决方案。

目标是使用 OpenPyxl 导出到 excel 到特定的行和列,行范围从 7 到 30,列从 1 到 13,以仅修改现有 excel 的值。我知道“追加”意味着在excel底部添加整个数据表,我不知道用什么函数代替。

  def kalkuacje_exportuj(self):
    columnHeaders = []

    # create column header list
    for j in range(self.ui.tableWidget.model().columnCount()):
        columnHeaders.append(self.ui.tableWidget.horizontalHeaderItem(j).text())

    df = pd.DataFrame(columns=columnHeaders)

    # create dataframe object recordset
    for row in range(self.ui.tableWidget.rowCount()):
        for col in range(self.ui.tableWidget.columnCount()):
            df.at[row, columnHeaders[col]] = self.ui.tableWidget.item(row, col).text()



    from openpyxl import Workbook
    wb = Workbook()
    wb = load_workbook ('OFERTA_SZABLON.xlsx')
    # ws1 = wb.sheetnames()
    ws1 = wb["DETALE wyceniane osobno"]

    # for row in ws1.iter_rows(min_row=7,
    #                 max_row=30,
    #                 min_col=1,
    #                 max_col=13):
    for row in range(7, 30):
        for col in range(1, 13):
            for r in dataframe_to_rows(df, index=False, header=False):
                ws1.append(r)
        # for cell in row:
        #     print(cell)


    wb.save('OFERTA_SZABLON.xlsx')

【问题讨论】:

  • 有人知道这个问题的答案吗?我当时正在寻找答案,但我不能再进一步了:(

标签: python excel pandas openpyxl qtablewidget


【解决方案1】:

我解决了这样的问题:

from openpyxl import Workbook
wb = Workbook()
wb = load_workbook ('OFERTA_SZABLON.xlsx')
# ws1 = wb.sheetnames()
ws1 = wb["DETALE wyceniane osobno"]

# for r in dataframe_to_rows(df, index=False, header=False):
#     ws1.append(r)
offset_row = 5        
offset_col = 0

row = 1
for row_data in dataframe_to_rows(df, index=False, header=False):
    col = 1
    for cell_data in row_data:

        ws1.cell(row + offset_row, col + offset_col, cell_data)

        col += 1

    row += 1



wb.save('OFERTA_SZABLON.xlsx')

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 2016-05-07
  • 2016-09-05
相关资源
最近更新 更多