2015-02-24 107 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行)。

相關問題