首页 > 解决方案 > 如何在输出前自动过滤excel表

问题描述

我正在为从 api 获取数据的脚本制作函数,该 api 会将数据框输出到 excel 表。我需要自动过滤(作为可选参数)。

我快完成了,但不断收到属性错误,说明如下“工作表”对象没有属性“自动过滤器”

这是我一直在尝试的代码

def generate_xls(df, file_name, sheet_name, column_names=None, auto_filter=True):

    if column_names != None:
        df.columns = column_names

    print("appending the data in order...")   

    print("\nCreating excel-file")

    writer = pd.ExcelWriter(file_name + '.xls')    

    df.to_excel(writer,sheet_name,index=False)

    if auto_filter == True:
        for worksheet in writer.sheets.values():  
            worksheet.autofilter(df.columns)            

    writer.save()
    print("Excel-file generated.")

没有自动过滤它可以正常工作,但拥有它对我来说真的很重要,因为还有其他人可能需要它。任何建议都会很棒!

标签: pythonpandas

解决方案


感谢您的输入。我在 writer 对象中使用 pandas 和 xlsxwriter 引擎解决了这个问题:

    if auto_filter == True:
        for worksheet in writer.sheets.values():
            row_count = len(df.index)
            column_count = len(df.columns)
            worksheet.autofilter(0, 0, row_count-1, column_count-1)                                
    writer.save()
    print("Excel-file generated.")

推荐阅读