2016-04-21 159 views
0

我知道這種問題已被問及接受答案已被給出。但該解決方案對我無效。所以我分開問這個問題。Openpyxl錯誤:Keyerror(工作表<0>不存在)

我在我的文檔目錄2個Excel文件:

  • pythonread.xlsx
  • pythonread.xls

兩者有相同的數字數據。這兩個文件都是由我創建的,以檢查我是否可以運行簡單的基於openpyxl的腳本。 這裏是腳本: -

from xlrd import open_workbook 
from openpyxl import Workbook 
wb = open_workbook('C:\\Users\\patilpb\\Documents\\pythonread.xls') 
wb1 = Workbook('C:\\Users\\patilpb\\Documents\\pythonread.xlsx') 
for s in wb.sheets(): 
    print 'Sheet:',s.name 
    values = [] 
    for row in range(s.nrows): 
     col_value = [] 
     for col in range(s.ncols): 
      value = (s.cell(row,col).value) 
      try : value = str(int(value)) 
      except : pass 
      col_value.append(value) 
     values.append(col_value) 
#print values 
wb1_1 = wb1.get_sheet_by_name('Sheet1') 
wb1_2 = wb1['Sheet2'] 
cell_range = wb1_1['B3':'B100'] 
print cell_range.value 

在運行腳本(蟒蛇目前提示也跑Winpython提示符),我得到以下錯誤:

Traceback (most recent call last): 
wb1_1 = wb1.get_sheet_by_name('Sheet1') 
File "C:\~path~\workbook.py", line 173, in get_sheet_by_name 
    return self[name] 
File "C:\~path~\workbook.py", line 192 in __getitem__ 
    raise KeyError("Worksheet (0) does not exist." .format(key)) 
KeyError: 'Worksheet Sheet1 does not exist.' 

在此之前,對於xlrd進口XLS命令文件執行得很好。並且它會打印默認紙張的名稱(Sheet1,2 & 3)。即使讀取(如果我想)打印數據。但是.xlsx文件不會發生同樣的情況。我做錯了什麼?

+1

什麼的'wb1.get_sheet_names()'返回? – alecxe

+0

您是否嘗試過load_workbook方法? https://openpyxl.readthedocs.org/en/default/tutorial.html#loading-from-a-file – alpert

+0

FWIW xlrd可以很好地讀取XSLX文件。 –

回答