openpyxl iter_rows() 是否跳过最后一行?
Is openpyxl iter_rows() skipping last row?
我在使用 openpyx 时遇到困难 iter_rows。
来源 excel 在第一列 (A) 中有行:
- header
- 第一个数据行
- ...
- 第32行数据
代码:
start, stop = 0, 1000
for row_index, row in enumerate(source_ws.iter_rows()):
if start < row_index < stop:
# something meaning here
不访问最后的第32行数据,而是在第31行突破。
行与行之间没有空行。
我做了一个邪恶的黑客来规避这种行为,但这不是一个持久的选择。
环境:
- Python 3.4.0(v3.4.0:04f714765c13,2014 年 3 月 16 日,19:25:23)
- jdcal==1.0
- openpyxl==2.1.5
我做错了什么?
ws.iter_rows()
将遍历所有行,除非您另有说明。如果你想限制它那么你可以使用 ws.get_squared_range(1, 1, 32, ws.max_column)
(前 32 行)。
对行索引停止条件使用 'less than or equal' 运算符:
start, stop = 0, 1000
for row_index, row in enumerate(source_ws.iter_rows()):
if start < row_index <= stop:
# something meaning here
或者您可以使用列表理解和 'row' 数字属性来删除枚举。请注意,iter_rows() 是从 1 而不是 0 开始计算行。
start, stop = 1, 1000
for row in [row for row in source_ws.iter_rows() if start < row[0].row <= stop]:
#do something
我在使用 openpyx 时遇到困难 iter_rows。
来源 excel 在第一列 (A) 中有行:
- header
- 第一个数据行
- ...
- 第32行数据
代码:
start, stop = 0, 1000
for row_index, row in enumerate(source_ws.iter_rows()):
if start < row_index < stop:
# something meaning here
不访问最后的第32行数据,而是在第31行突破。 行与行之间没有空行。
我做了一个邪恶的黑客来规避这种行为,但这不是一个持久的选择。
环境:
- Python 3.4.0(v3.4.0:04f714765c13,2014 年 3 月 16 日,19:25:23)
- jdcal==1.0
- openpyxl==2.1.5
我做错了什么?
ws.iter_rows()
将遍历所有行,除非您另有说明。如果你想限制它那么你可以使用 ws.get_squared_range(1, 1, 32, ws.max_column)
(前 32 行)。
对行索引停止条件使用 'less than or equal' 运算符:
start, stop = 0, 1000
for row_index, row in enumerate(source_ws.iter_rows()):
if start < row_index <= stop:
# something meaning here
或者您可以使用列表理解和 'row' 数字属性来删除枚举。请注意,iter_rows() 是从 1 而不是 0 开始计算行。
start, stop = 1, 1000
for row in [row for row in source_ws.iter_rows() if start < row[0].row <= stop]:
#do something