python - 如何使用 openpyxl 确定 Excel 工作表是否不包含任何值?
问题描述
我正在编写一个 Python 3.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_column 和 last_used_row 就像我以前在 VBA 中一样,但如果有人能告诉我我可以用来构建一个简单函数的任何工具,我将不胜感激。工作表,它会根据它是否没有值吐出 True 或 False。
解决方案
与我在评论中的建议相反,ws.get_cell_collection()
不推荐使用,但您可以迭代openpyxl.worksheet.worksheet
模块的
values属性,因为(来自文档):
values
按行生成工作表中的所有单元格值类型:发电机
对于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)
输出空工作表:
Sheet2
尽管这可行,但它比仅使用要复杂一些:
empty_sheets = [name for name in wb.get_sheet_names() if not (wb.get_sheet_by_name(name).get_cell_collection())]
尽管已弃用,但它仍然有效。
推荐阅读
- visual-studio - 固定 Fortran 延续行中无法识别的标记“&”
- css - 通过将鼠标悬停在触发器上更改 CSS 正文设置
- javascript - 使用 Twilio API、PHP 和 HTML 调用变量
- javascript - 正则表达式在找到结束之前找到开始而不是任何字符
- java - JTable getModel().setValueAt 从数组中删除第一个元素
- c++ - c ++中的模板通用引用无法编译
- javascript - 尝试使用 forloop 在 html dom 中创建乘法 div
- reactjs - 如何解决在地图函数中获取更多数据的问题
- django - CircleCI 上的 Selenium 测试失败
- sql - 获取 SQL 查询的结果并将其移动到另一个表