2016-10-19 37 views
1

我需要在數百個excel中的單元格中查找值。 直到現在我通過迭代每一行來解析每個excel文件,但它太長(excell文件超過3000行)。 但在excel中使用ctrl + f時,結果是瞬時的。在不使用迭代的情況下在Python中查找單元格

我的問題:如何在包含多行的excel文件中快速(比迭代更快)找到值。

感謝您的幫助。

+0

看看這個http://stackoverflow.com/questions/34054272/openpyxl-optimizing-cells-search-speed。 – Nurjan

回答

0

繼努爾然評論,這裏是答案(以Excel文件複製在一個矩陣,然後找到3個條件中的矩陣的值):

matrix = numpy.zeros(shape=(sheet2.max_row+,23),dtype=object) 
j=1 
for row in sheet2: 
    i=1 
    for cell in row:     
     matrix[j][i] = cell.value 
     i=i+1 
    j=j+1 



for i in range(sheet2.max_row-50,1,-1): 
    if Model==matrix[i][9] and matrix[i][12] != None and "A" in matrix[i][1] : # 
      Var1 = matrix[i][1] 
      Var2 = matrix[i][9] 
      Var3 = matrix[i][12] 
      break 

通過重複在Excel中它的3000行大約25秒,現在通過應對矩陣中的數據,結果不到一秒鐘。

1

這樣做的方法是使用com自動化。

安裝pythonnet以訪問公共語言運行庫(CLR)。有預建的二進制文件在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonnet

https://github.com/pythonnet/pythonnet

我沒有Excel,所以我不能爲你提供一個功能的例子,但你的代碼最終會像這裏的例子:https://discourse.mcneel.com/t/close-an-excel-session-with-python/613

+0

COM對象目前不能從pythonnet直接訪問。但我最近爲我的直接用例做了一個簡單的包裝:https://github.com/pythonnet/pythonnet/issues/260 – denfromufa

相關問題