【问题标题】:How to delete empty sheets that have a header row from excel workbook in Python?如何从Python中的excel工作簿中删除具有标题行的空工作表?
【发布时间】:2020-12-18 22:44:39
【问题描述】:

我需要从工作簿中删除所有空工作表,这些工作表有标题,所以它们不是完全空的。只有第 2 行及以后的内容为空,我需要删除这些工作表。

我目前有这个:

def DeleteEmptyColumnsAndRows(filename):
    import pandas as pd
    import pathlib
    full_path = filename
    df = pd.read_excel(full_path, header=None, sheet_name=None)

    # engine can be openpyxl if we need .xlsx ext
    writer = pd.ExcelWriter(new_loc, engine='xlwt') 
    for key in df:
        sheet = df[key].dropna(how="all").dropna(1, how="all")
        sheet.to_excel(writer, key, index=False, header=False)
    writer.save()

这适用于完全空的工作表,但我的工作表有标题。知道如何操纵它来按我的需要工作吗?

提前致谢,不胜感激!

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    sheet = workbookname.Worksheets('Sheet_name')

    sheet.Delete()

    此代码将从工作簿中删除指定的工作表(win32com)

    【讨论】:

    • 不幸的是它必须是动态的。我无法指定工作表名称。它需要遍历整个工作簿并删除所有空的工作表(第一行/标题除外)
    【解决方案2】:

    想通了。这是从工作簿中删除所有工作表的解决方案,其中第一行(标题行)是唯一包含任何数据的行:

    def DeleteEmptyColumnsAndRows(filename):
        import pandas as pd
        full_path = filename
        df_with_header = pd.read_excel(full_path, header=None, sheet_name=None)
        df_without_header = pd.read_excel(full_path, header=0, sheet_name=None)
    
    
        # engine can be openpyxl if we need .xlsx ext
        writer = pd.ExcelWriter(new_loc, engine='xlwt') 
        for key in df_with_header:
            if not df_without_header[key].empty:
                print(df_with_header[key])
                sheet = df_with_header[key].dropna(how="all").dropna(1, how="all")
                sheet.to_excel(writer, key, index=False, header=False)
        writer.save()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多