【问题标题】:Check if a Excel Sheet is empty检查 Excel 工作表是否为空
【发布时间】:2017-09-12 14:43:48
【问题描述】:

我有一个包含多张工作表的 Excel 工作簿。我需要删除完全空的工作表,因为我的代码在处理时发现空白工作表失败。

os.chdir(path)
list_file=[]
for file in glob.glob("*.xlsx"):
    print(file)
    list_file.append(file)

我在这里列出了所有可用的文件。

AB_list=[s for s in list_file if "India" in s]
CD_list=[s for s in list_file if "Japan" in s]

然后,我根据要求将文件名存储为列表。现在我需要从这些 excel 文件中删除空工作表,然后再将它们移动到数据框。然后循环读取文件到单独的数据帧中。

【问题讨论】:

  • 好的,到目前为止你尝试了什么?
  • 我知道 - workbook.remove_sheet(name_of_sheet) 将使用 openpyxl 删除工作表。但我不知道如何确定工作表是否为空。

标签: python excel pandas openpyxl


【解决方案1】:

你已经标记了openpyxl,所以我假设你正在使用它。

# workbook is opened MS Exel sheet opened with openpyxl.Workbook
empty_sheets = []
for name in workbook.get_sheet_names():
    sheet = workbook.get_sheet_by_name(name)
    if not sheet.columns():
        empty_sheets.append(sheet)

map(workbook.remove, empty_sheets)

【讨论】:

  • 您需要保存工作簿才能写回更改,对吧?
【解决方案2】:

ws.max_rowws.max_column 应该给你最后使用的单元格位置。基于此,您可以确定工作表是否为空。还要检查这是否适合您ws.calculate_dimension(),它应该返回一个范围。

所有功能均来自您已经熟悉的openpyxl

【讨论】:

    【解决方案3】:

    您可以使用我也在使用的 pandas 轻松完成此操作。 here

    代码看起来像

    import pandas as pd
    

    df = pd.read_csv(filename)# 或

    pd.read_excel(filename) 用于 xls 文件 df.empty

    【讨论】:

    • 它不会删除空工作表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多