Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用openpyxl确定Excel工作表是否不包含任何值?_Python_Excel_Python 3.x_Openpyxl - Fatal编程技术网

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

Python 如何使用openpyxl确定Excel工作表是否不包含任何值?,python,excel,python-3.x,openpyxl,Python,Excel,Python 3.x,Openpyxl,我正在编写一个Python 3.7.2脚本来检查Excel文件中未使用的工作表,我需要一种方法来确定当前工作表是否不包含任何值。以前,当我在VBA中编码时,我会查找最后使用的行和最后使用的列来检查工作表是否为“空”,但openpyxl中的max_列和max_行函数考虑了非值数据,如我希望忽略的格式。有没有办法检查给定工作表的所有单元格是否都不包含任何值 以前,当我在VBA中编码时,我会查找最后使用的行和最后使用的列来检查工作表是否为“空”,但openpyxl中的max_列和max_行函数考虑了非

我正在编写一个Python 3.7.2脚本来检查Excel文件中未使用的工作表,我需要一种方法来确定当前工作表是否不包含任何值。以前,当我在VBA中编码时,我会查找最后使用的行和最后使用的列来检查工作表是否为“空”,但openpyxl中的max_列和max_行函数考虑了非值数据,如我希望忽略的格式。有没有办法检查给定工作表的所有单元格是否都不包含任何值

以前,当我在VBA中编码时,我会查找最后使用的行和最后使用的列来检查工作表是否为“空”,但openpyxl中的max_列和max_行函数考虑了非值数据,如我希望忽略的格式


理想情况下,我能够找到一种方法来获取上次使用的列和行,就像我在VBA中使用的一样,但是如果有人能告诉我我可以使用什么工具来构建一个简单的函数,我将不胜感激。在这个函数中,你可以向它传递一个工作表,它根据它是否没有值来判断是真是假。

与我在评论中的建议相反,
ws.get\u cell\u collection()
不推荐使用,但是您可以迭代
openpyxl.sheet.sheet
模块的 属性,自(来自文档):


按行生成工作表中的所有单元格值

类型:发电机

对于包含两个工作表的工作簿
workbook.xlsx
Sheet1
确实包含一些带值的单元格,但是
Sheet2
在所有空单元格中明显为空:

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)
输出空工作表:

尽管这样做有效,但它比仅使用更复杂:

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

尽管已弃用,但仍然有效。

这可能是以下内容的重复:感谢您的回复!不幸的是,API在过去两年中似乎发生了变化,ReadOnlyWorksheet没有属性“\u cells”。如果有什么办法,我可以得到一个表中使用的细胞,这将是伟大的!一行获取所有空工作表名称的列表:
[在wb中为名称命名。如果不是(wb.get\u sheet\u by\u name(name)。get\u cell\u collection())]
,使用
wb=load\u工作簿('workbook.xlsx')
否,这没有捷径:你必须自己检查单元格,你应该提到你是在只读模式下工作的。
empty_sheets = [name for name in wb.get_sheet_names() if not (wb.get_sheet_by_name(name).get_cell_collection())]