在没有迭代的情况下在Python中查找单元格

我需要在几百个excel中的单元格中find值。 直到现在我parsing每个Excel文件迭代每行,但它太长(Excel文件超过3000行)。 但是在excel中使用ctrl + f时,结果是瞬间的。

我的问题是:如何快速(比迭代更快)在一个有许多行的excel文件中find一个值。

谢谢你的帮助。

这样做的方法是使用com自动化。

安装pythonnet以访问公共语言运行库(CLR)。 在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonnet上有预build的二进制文件。

https://github.com/pythonnet/pythonnet

我没有excel,所以我不能提供给你一个function的例子,但是你的代码最终会像这里的例子一样: https : //discourse.mcneel.com/t/close-an-excel-session-with-python/ 613 。

遵循Nurzhan评论,这里是答案(将Excel文件复制到一个matrix中,然后在3个条件下findmatrix中的值):

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秒,现在通过应对matrix中的数据,结果不到一秒钟。