我需要在數百個excel中的單元格中查找值。 直到現在我通過迭代每一行來解析每個excel文件,但它太長(excell文件超過3000行)。 但在excel中使用ctrl + f時,結果是瞬時的。在不使用迭代的情況下在Python中查找單元格
我的問題:如何在包含多行的excel文件中快速(比迭代更快)找到值。
感謝您的幫助。
我需要在數百個excel中的單元格中查找值。 直到現在我通過迭代每一行來解析每個excel文件,但它太長(excell文件超過3000行)。 但在excel中使用ctrl + f時,結果是瞬時的。在不使用迭代的情況下在Python中查找單元格
我的問題:如何在包含多行的excel文件中快速(比迭代更快)找到值。
感謝您的幫助。
繼努爾然評論,這裏是答案(以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秒,現在通過應對矩陣中的數據,結果不到一秒鐘。
這樣做的方法是使用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。
COM對象目前不能從pythonnet直接訪問。但我最近爲我的直接用例做了一個簡單的包裝:https://github.com/pythonnet/pythonnet/issues/260 – denfromufa
看看這個http://stackoverflow.com/questions/34054272/openpyxl-optimizing-cells-search-speed。 – Nurjan