如何使用 python pandas 获取数据框以覆盖特定单元格中的现有 excel?

How can i get a dataframe to overwrite an existing excel in a specific cell using python pandas?

我写了下面的内容,但似乎没有用。我将 dataframe 定义为 d3,是一个包含 20 行的列,注释为“我的评论”。然后我试图将其添加到单元格 L2 中现有的已保存 excel 文档中。数据框正在打印并且在 IDE 中看起来正确,但不会在 excel 中覆盖。任何帮助将不胜感激,因为我刚开始 python!

from openpyxl import load_workbook
import pandas as pd
import xlsxwriter

#create dataframe to be 19 lines with comment "my comment"
comment = "my comment"
df3 = pd.DataFrame([comment]* 20)
print(df3)
wb = load_workbook(r'H:\myfile.xlsx')

writer = pd.ExcelWriter(r'H:\myfile', engine='xlsxwriter')
df3.to_excel(writer,sheet_name='mysheet', startrow = 2, startcol = 12)
wb.save(r'H:\myfile.xlsx')
print("done")

据我所知,你同时做多件事,这会抵消彼此的影响。你为什么还要使用 openpyxl?

您使用 openpyxl 和 load_workbook 从 excel 文件加载工作簿,然后使用 pandas DataFrame 覆盖 excel 文件,此时输出应该是你想要的。但在那之后,您再次使用在使用 pandas 进行更改之前加载的已加载工作簿的内容覆盖 excel 文件,这会将 excel 文件恢复到其原始状态。

删除涉及 openpyxl 的每一行,它应该可以工作。

import pandas as pd
import xlsxwriter

#create dataframe to be 19 lines with comment "my comment"
comment = "my comment"
df3 = pd.DataFrame([comment]* 20)
print(df3)

writer = pd.ExcelWriter(r'H:\myfile', engine='xlsxwriter')
df3.to_excel(writer,sheet_name='mysheet', startrow = 2, startcol = 12)
print("done")

如果你想用pandas修改你的excel文件,你不需要openpyxl,如果你想用openpyxl修改你的excel,你不需要pandas.

来自文档: “请注意,使用已存在的文件名创建 ExcelWriter 对象将导致删除现有文件的内容”

所以是的,你需要 openpyxl 或创建所有你想在 python.

内的文件中看到的内容