2015-02-24 106 views
0

我在使用openpyx iter_rows时遇到了困难。是openpyxl iter_rows()跳过最后一行吗?

源Excel具有在第一列中的行(A):

  • 第一数据行
  • ...
  • 第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

我在这里做错了什么?

+0

真的需要一个文件来说,但它可能是文件有不正确的“尺寸”。 – 2015-02-24 10:19:02

+0

这工作: '为ROW_INDEX,排在枚举(source_ws.iter_rows(),启动= 1): #什么意思这里 ' 所以openpyxl工作正常。我知道我做错了 – numibialainen 2015-02-24 12:18:45

+0

如果取决于你想要做什么。如果您希望row_index代表工作表中的一行,那么它将需要从1开始; Python使用基于0的索引,基于Excel 1。 – 2015-02-24 13:58:13

回答

1

ws.iter_rows()将循环遍历所有行,除非您另行说明。如果你想限制它,那么你可以使用ws.get_squared_range(1, 1, 32, ws.max_column)(前32行)。

相关问题