2015-03-31 205 views
0

我想直到最後一個空單元格讀取指定行數。python excel讀取最後一個空單元格

這裏是我的代碼:

for j in xrange(0,REPEAT_CONST,1):    
      if r_sheet.cell_type(row+j,0)== xlrd.XL_CELL_EMPTY: 
        break 

此代碼僅如果單元格前面已經寫東西,刪除的作品。但如果單元格從未編輯過,則不起作用。不知道如何處理這個。 你能幫我做到這一點嗎? 我將不勝感激您的支持。

問候, 帕

回答

0

您遇到的錯誤暗示rowxcolx參數是出界for this sheet的。

In the cell access functions, "rowx" is a row index, counting from zero, and "colx" is a column index, counting from zero. Negative values for row/column indexes and slice positions are supported in the expected fashion.

我只是發現了這一點(之前從未使用過XLRD),但如果您查詢r_sheet.nrows我敢打賭,你會發現值小於row+j。看來xlrd只有讀取工作表的一部分,實際上是Excel的UsedRange

所以你可以使用一些異常處理,或者是try/catch塊或者你可以這樣做。請注意,只要row+j大於該表格的nrows屬性,就應該在布爾表達式的第一部分短路。

if (row+j <= r_sheet.nrows-1) and (r_sheet.cell_value(row+j,0) = ''): 
    break 

或者,甚至與你原來的方法:

if (row+j <= r_sheet.nrows-1) and (r_sheet.cell_type(row+j,0)== xlrd.XL_CELL_EMPTY): 
    break 
+0

沒有它不工作。得到低於錯誤。 C:\ Python26 \ LIB \站點包>蟒蛇xlsread_1.py 回溯(最近通話最後一個): 文件 「xlsread_1.py」,線路243,在 如果r_sheet.cell(行+ J,0 )是xlrd.empty_cell: 文件「C:\ Python26 \ Lib \ site-packages \ xlrd \ sheet.py」,第395行,單元格 xfx = self.cell_xf_index(rowx,colx) 文件「C:\ Python26 \ lib \ site-packages \ xlrd \ sheet.py「,行421,位於cell_xf_index中 xfx = self._cell_xf_indexes [rowx] [colx] IndexError:列表索引超出範圍。 – 2015-03-31 17:07:27

+0

這表示行或列索引超出範圍。我沒有改變你的代碼部分... – 2015-03-31 17:09:54

+0

另外,請注意*兩個*可能的解決方案。你有嘗試過嗎? *兩者*在相同的錯誤失敗? – 2015-03-31 17:10:24