繁体   English   中英

如何使用openpyxl枚举具有(非空)值的Excel工作表中的所有单元格?

[英]How to enumerate all cells in an Excel sheet with a (non-empty) value using openpyxl?

我需要使用openpyxl编程方式分析 Excel 工作表 (.xslx) 的内容。

我的问题是一些 Excel 工作表有大量的空行,例如下面的3. Access Control工作表有 1048534 行和 16384 列,尽管只有前 100 行是非空的。 这会导致数十亿个单元格,这根本无法枚举,例如:

for i in range(ws.max_row + 1):
   for j in range(ws.max_column + 1):
      value = ws.cell(i, j)
      ...

我想避免溢出信息,例如跳过索引 10000 处存在的非空行。因此,仅分析前 N 行的解决方案根本不适用于我的用例。

openpyxl是否支持过滤所有这些多余行的方法,并且只返回至少包含一个非空单元格的一组行?

>>> for ws in wb.worksheets:
...     print(ws.title, ws.max_row, ws.max_column)
...
0. Intro 16 7
1. Solution Profile 63 8
2. Solution Diagram 6 4
1.BE 18 29
3. Access Control 1048534 16384.    <-- PROBLEM
4. Systems Development 46 21
5. Operational Security 43 14
6. Data Communication 11 14
7. Other 27 16
3-7.BE 6 3
8. Risk Assessment 15 29
8.BE 20 16
9. Conclusions 36 8
EBA Risk Statement 51 13
Vulnerabilities 86 5
Threats 44 4
Sample IT Risks 167 6
9.BE 5 1
Risk matrix 19 11
9. Document change log 28 6
>>> (1048534 * 16384) / 1000000
17179.181056

这取决于你在做什么。 您可以将每个工作表加载到 Pandas Dataframe 中,该数据帧具有处理此问题的方法。 否则,以下内容应该会有所帮助:

for row in ws.iter_rows(values_only=True):
    if not any(row):
       continue

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM