2015-03-25 149 views
0

我有以下代碼可以打印Excel文件中的所有項目。我想要做的是輸入一個名稱,然後在電子表格中搜索該名稱,並在列D中顯示相應名稱的價格。名稱列在列A中。我在電子表格中的列是(列A :玩家,列B:團隊,列C:點,列D:成本,列E:職位)。使用OPENPYXL從EXCEL文件中提取數據

我想要做的是搜索玩家名稱並打印此玩家的價格。

from openpyxl import load_workbook 

print ("Going to execute the script") 

workbook = load_workbook("LeaguePlayers.xlsx", use_iterators = True) 

name = print(input("Enter player name: ")) 

for worksheet in workbook: 
    for row in worksheet.iter_rows(): 
     for cell in row: 
      if(cell.value != None): 
       print (cell.value)   

print ("End of script execution") 
+0

什麼實際問題?在處理非常大的文件時,您只需要使用只讀模式。 – 2015-03-25 16:05:37

+0

我有一個Excel文件,其中包含玩家姓名和各種屬性,例如魯尼,曼聯,前鋒,126英鎊,12.6英鎊。成本在E列中。我可以從Excel文件中提取所有信息,就像您從上面看到的一樣。我想要做的只是輸入玩家的名字,例如魯尼,它應該從Excel文件中的列E拉動球員的價格並顯示它。 – Moridiin 2015-03-25 17:04:31

回答

0

那麼,你可以做這樣的事情:

player = raw_input("Enter player name") 
wb = load_workbook("LeaguePlayers.xlsx") 
ws = wb.active 
for cell in ws.columns[0]: # get first column 
    if cell.value == player: 
     cost = cell.offset(column=4).value 
     print("{0} costs {1}".format(player, cost)) 
     break 
+0

嗨,感謝您的建議,我可以看到代碼正在做什麼,但是在中斷之後它會拋出無效的語法錯誤 – Moridiin 2015-03-25 18:12:35

+0

它是一種僞代碼,可讓您瞭解如何解決問題。你也可以使用'ws.iter_rows(max_col = 1)'。取決於數據集的大小。 – 2015-03-25 18:41:17

+0

錯誤是由於2.2中已知的(並且是固定的)錯誤造成的。使用'pip install openpyxl == 2.1.5'直到2.2.1發佈。 – 2015-03-25 18:44:31

相關問題