将数据框添加到特定单元格中的 Excel
Add Data Frame to Excel in Specific Cell
我正在使用 openpyxl 将 pandas 数据框写入 excel 电子表格。我正在从模板中读取 excel 工作簿,因为客户需要特定的 header、格式等。
如果我想添加从第 17 行开始的 table,我该如何修改下面的代码来实现?第 1 行到第 16 行中有格式化的合并单元格,所以当我尝试以当前形式保存时,它会给我 AttributeError: 'MergedCell' object attribute 'value' is read-only
。我看到了一个类似的堆栈问题,但受访者建议在添加数据框之前添加一堆空白单元格——这个解决方案对我不起作用。
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
wb = load_workbook('proto_temp.xlsx')
ws_rq = wb["Results Query"]
rows = dataframe_to_rows(df)
for r_idx, row in enumerate(rows, 1):
for c_idx, value in enumerate(row, 1):
ws_rq.cell(row=r_idx, column=c_idx, value=value)
wb.save("df_to_xl.xlsx")
问题:
after第17行有数据吗?
如果回答 == 否,则见下文
for r in dataframe_to_rows(df, index=True, header=True):
ws.append(r)
如果答案 == 是,那么答案稍微复杂一些。
选项
- 构建您的代码,以便您 运行 上面的代码,之前 其他单元格写在下面。
- 将XLSX读入DF,修改后再写回。
- 最后,您可以遍历一个范围并逐个单元格地编写(感觉计算量太大了 - 但我想我还是建议这样做)。
sheet.cell(row=2, column=2).value = 2
希望这能提供价值:)
我正在使用 openpyxl 将 pandas 数据框写入 excel 电子表格。我正在从模板中读取 excel 工作簿,因为客户需要特定的 header、格式等。
如果我想添加从第 17 行开始的 table,我该如何修改下面的代码来实现?第 1 行到第 16 行中有格式化的合并单元格,所以当我尝试以当前形式保存时,它会给我 AttributeError: 'MergedCell' object attribute 'value' is read-only
。我看到了一个类似的堆栈问题,但受访者建议在添加数据框之前添加一堆空白单元格——这个解决方案对我不起作用。
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
wb = load_workbook('proto_temp.xlsx')
ws_rq = wb["Results Query"]
rows = dataframe_to_rows(df)
for r_idx, row in enumerate(rows, 1):
for c_idx, value in enumerate(row, 1):
ws_rq.cell(row=r_idx, column=c_idx, value=value)
wb.save("df_to_xl.xlsx")
问题: after第17行有数据吗?
如果回答 == 否,则见下文
for r in dataframe_to_rows(df, index=True, header=True):
ws.append(r)
如果答案 == 是,那么答案稍微复杂一些。
选项
- 构建您的代码,以便您 运行 上面的代码,之前 其他单元格写在下面。
- 将XLSX读入DF,修改后再写回。
- 最后,您可以遍历一个范围并逐个单元格地编写(感觉计算量太大了 - 但我想我还是建议这样做)。
sheet.cell(row=2, column=2).value = 2
希望这能提供价值:)