2015-05-18 54 views
0

這裏的代碼 -Openpyxl - 收到錯誤 - 沒有數據返回

wb = load_workbook(filename, use_iterators=True) 
    ws = wb.worksheets[0] 

for row in range(1, 4): 
    for col in range(32, 35): 
     print 'Value = ', ws.cell(column=col, row=row, value="%s" % get_column_letter(col)) 

程序的輸出如下 -

Value = <Cell Data.AF1> 
    Value = <Cell Data.AG1> 
    Value = <Cell Data.AH1> 
    Value = <Cell Data.AF2> 

我如何得到正確的值?

我嘗試以下東西 -

print 'Value = ', ws.cell(row = 1, column = 1).value 

O/P is Value = None 

print 'Value = ', ws['A1'].value 

O/P is Value = ExportDate (This is the correct value) 
+0

嗯我看來你已經有了正確的值了。因此,可以像''A','B','C']'然後'ws [「{} {}」格式。(col,row)]。盛大。要得到所有的大寫字母,你可以這樣做:'import string; string.ascii_uppercase'。 –

+0

謝謝Aleksander,但請你詳細解釋我。我想,該方案應自動通過列從32迭代直到最大列 – prj

+0

而(all_cols <(ws.get_highest_column() - 3)): COLT = 0 冷= 0 柯爾特= 32 冷=柯爾特+ 1 cell_name_Target = ws.cell(row = 1,column = ColT).value#Get目標名稱 cell_name_Dis = ws.cell(row = 1,column = ColD).value – prj

回答

0

ws.cell()總是返回Cell對象是你在打印報表看。 .value屬性返回單元格的值。 ws.get_squared_range()將允許您從工作表中獲取一系列單元格。所有這些都在文檔中介紹。

+0

謝謝查理克拉克。我修改爲cell_name_Target = ws(row = 1,column = ColT).value #Get目標名稱 但是,這會返回錯誤 - TypeError:'IterableWorksheet'對象不可調用 – prj

+0

您正在使用哪種版本的openpyxl和python? – prj

+0

請閱讀文檔中的教程。簡單地嘗試一下就行不通了。從2.0版開始,這些方法並沒有改變 –

0

我可能會誤解你的問題,但我認爲這是你想要什麼:

1)不要使用use_iterators。我認爲這是問題的一部分。只是這樣做:

wb = load_workbook(filename) 
ws = wb.worksheets[0] 

2)如果你想要的值,那麼你要問它:

for row in range(1, 4): 
    for col in range(32, 35): 
     print 'Value = ', ws.cell(column=col, row=row).value 
+0

感謝David。 use_iterators是問題 – prj