python - 用 pandas 数据框覆盖 Excel 工作表而不影响其他工作表

标签 python excel pandas openpyxl

我想用 Pandas 数据框覆盖 excel 文件中的现有工作表,但不希望对同一文件的其他工作表进行任何更改。如何做到这一点。
我尝试了下面的代码,但不是覆盖,而是将数据附加到“Sheet2”中。

import pandas as pd
from openpyxl import load_workbook

book = load_workbook('sample.xlsx')
writer = pd.ExcelWriter('sample.xlsx', engine = 'openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, 'sheet2', index = False)
writer.save()

最佳答案

除了这个,我没有找到任何其他选择,这对你来说是一个快速的解决方案。
我相信仍然没有直接的方法可以做到这一点,如果我错了,请纠正我。这就是我们需要使用这种合乎逻辑的方式的原因。

import pandas as pd

def write_excel(filename,sheetname,dataframe):
    with pd.ExcelWriter(filename, engine='openpyxl', mode='a') as writer: 
        workBook = writer.book
        try:
            workBook.remove(workBook[sheetname])
        except:
            print("Worksheet does not exist")
        finally:
            dataframe.to_excel(writer, sheet_name=sheetname,index=False)
            writer.save()

df = pd.DataFrame({'Col1':[1,2,3,4,5,6], 'col2':['foo','bar','foobar','barfoo','foofoo','barbar']})

write_excel('PRODUCT.xlsx','PRODUCTS',df)
如果您觉得这有帮助,请告诉我,如果您需要任何其他更好的解决方案,请告诉我。

关于python - 用 pandas 数据框覆盖 Excel 工作表而不影响其他工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62618680/

相关文章:

python - 读取h5数据集python的一部分

python - 指向 c_int 的 ctypes 指针与 c_int 数组

excel - 如何删除超过一个月的工作表?

python - 使用 Pandas 获取空单元格的行和列

Python pandas,多行的绘图选项

python - 两个 pandas DataFrame 之间每日数据的每月相关性

python - 如何通过 C++ 在 Python 函数中传递字符串参数

python - 在类中定义 __iter__ 的多个方差

excel - 如何用零替换Excel负数?

json - 从包含 JSON 的 CSV 文件创建 Pandas DataFrame