如何使用openpyxl确定Excel工作表是否不包含值?

2024-05-14 11:08:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python3.7.2脚本来检查Excel文件中未使用的工作表,我需要一种方法来确定当前工作表是否不包含值。以前当我在VBA中编码时,我会找到last used row和last used column来检查工作表是否为“空”,但是openpyxl中的max_column和max_row函数考虑了非值数据,比如我想忽略的格式。有什么方法可以检查给定工作表的单元格中是否没有包含任何值?在

以前当我在VBA中编码时,我会找到last used row和last used column来检查工作表是否为“空”,但是openpyxl中的max_column和max_row函数考虑了非值数据,比如我想忽略的格式。在

理想的情况下,我可以找到一种方法来获得last_used_列和last_used_行,就像我在VBA中使用过的那样,但是如果有人能告诉我,我可以使用什么工具来构建一个简单的函数,在这个函数中,你把一个工作表传递给它,它会根据它是否没有值而显示真或假。在


Tags: 数据方法函数脚本编码格式columnvba
1条回答
网友
1楼 · 发布于 2024-05-14 11:08:42

与我在评论中的建议相反,ws.get_cell_collection()是不推荐使用的,但是您可以在openpyxl.worksheet.worksheet模块上进行迭代 values属性,因为(来自文档):

values
Produces all cell values in the worksheet, by row

Type: generator

如果工作簿workbook.xlsx包含两个工作表,Sheet1确实包含一些带值的单元格,但是{}显然是空的,所有单元格都是空的:

wb = load_workbook('workbook.xlsx')

for name in wb.get_sheet_names():
    isempty = False
    for row in wb.get_sheet_by_name(name).values:
        if all(value == None for value in row):
            isempty = True
        else:
            isempty = False
    if isempty:
        print(name)

输出(空):

^{pr2}$

虽然这是可行的,但它比仅使用更复杂:

empty_sheets = [name for name in wb.get_sheet_names() if not (wb.get_sheet_by_name(name).get_cell_collection())] 

虽然已经弃用,但仍然有效。在

相关问题 更多 >

    热门问题