针对包含多个工作表的excel文件中修改现有工作表的问题,有一些建议的解决方案: How to save a new sheet in an existing excel file, using Pandas?和https://github.com/pandas-dev/pandas/issues/3441,但提议的解决方案都不起作用。他们要么添加额外的纸张来替换所有其他纸张。我已经完成了下面的功能,但这是非常迂回的,也是解决问题的非常糟糕的方法。有没有关于如何更好地做到这一点的想法?
def modify_sheet(file_name,sheet_to_change,new_sheet):
"""Add or modify sheets in an excel book
Args:
file_name (str): Name of the xlsx file
sheet_to_change (str): Name of the sheet in question
new_sheet (pd.DataFrame): The new dataframe
"""
with pd.ExcelWriter(file_name, engine='xlsxwriter') as writer:
df = pd.read_excel(file_name, sheetname=None, header=None, skiprows=0)
if sheet_to_change not in df.keys():
keys = list(df.keys())
keys.append(sheet_to_change)
else:
keys = df.keys()
for key in keys:
if sheet_to_change == key:
new_sheet.to_excel(writer, sheet_name=str(key), header= False, index =False)
else:
df[key].to_excel(writer, sheet_name=str(key), header= False, index =False)
writer.close()
writer.save()
file_name = "blub.xlsx"
sheet_to_change = 'DKSheet1'
new_sheet = pd.DataFrame(np.random.rand(20,6))
modify_sheet(file_name,sheet_to_change,new_sheet)
答案 0 :(得分:0)
在具有多个工作表的工作簿的现有工作表中,可以使用xlwings插入已被熊猫修改的工作表。请参见以下示例。首先,使用.clear()清除特定的工作表,然后将修改后的数据框插入该工作表。
mat =aloc_matrix(n, v);
print_matrix(n, v, mat);