使用pandas修改excel书籍中的Excel工作表

时间:2018-01-14 17:56:30

标签: excel pandas

针对包含多个工作表的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)

1 个答案:

答案 0 :(得分:0)

在具有多个工作表的工作簿的现有工作表中,可以使用xlwings插入已被熊猫修改的工作表。请参见以下示例。首先,使用.clear()清除特定的工作表,然后将修改后的数据框插入该工作表。

mat =aloc_matrix(n, v);
print_matrix(n, v, mat);