Python:覆盖 Excel 文件中现有的 sheet
Python: overwriting an existing sheet in Excel file
我正在使用以下方法重写一个包含数据源的 Excel sheet(保留所有其他 sheet 的枢轴、图表等) :
from openpyxl import load_workbook
def excel_rewriter(data_source, df_name, target_file):
book = load_workbook(data_source)
writer = pd.ExcelWriter(data_source, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df_name.to_excel(writer, 'Data', index=False)
writer.save()
os.rename(data_source, target_file)
初始文件是 data_source,我将数据 sheet 与我的 DF (df_name) 交换并将文件名更改为 target_file。
我的问题是 - Excel 文件中的数据 sheet 在交换之前不会 "erase" 本身,所以如果之前在 table数据 sheet 包含的列或行多于我在 sheet 中插入的 DF,其他行保持原样,弄乱了结果。
如何修改此方法,使其在将我的 DF 放回原位之前先删除数据 sheet?
提前致谢!
嗯,所要做的就是再添加一行代码:
book.remove(book['Data'])
所以它看起来像:
def excel_rewriter(data_source, df_name, target_file):
book = load_workbook(data_source)
book.remove(book['Data'])
writer = pd.ExcelWriter(data_source, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df_name.to_excel(writer, 'Data', index=False)
writer.save()
os.rename(data_source, target_file)
案件结案。
我正在使用以下方法重写一个包含数据源的 Excel sheet(保留所有其他 sheet 的枢轴、图表等) :
from openpyxl import load_workbook
def excel_rewriter(data_source, df_name, target_file):
book = load_workbook(data_source)
writer = pd.ExcelWriter(data_source, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df_name.to_excel(writer, 'Data', index=False)
writer.save()
os.rename(data_source, target_file)
初始文件是 data_source,我将数据 sheet 与我的 DF (df_name) 交换并将文件名更改为 target_file。
我的问题是 - Excel 文件中的数据 sheet 在交换之前不会 "erase" 本身,所以如果之前在 table数据 sheet 包含的列或行多于我在 sheet 中插入的 DF,其他行保持原样,弄乱了结果。
如何修改此方法,使其在将我的 DF 放回原位之前先删除数据 sheet?
提前致谢!
嗯,所要做的就是再添加一行代码:
book.remove(book['Data'])
所以它看起来像:
def excel_rewriter(data_source, df_name, target_file):
book = load_workbook(data_source)
book.remove(book['Data'])
writer = pd.ExcelWriter(data_source, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df_name.to_excel(writer, 'Data', index=False)
writer.save()
os.rename(data_source, target_file)
案件结案。