我有两个XLSX文件(Cookies和Cream),我想知道A列(Cookie中)中每一行中的值是否存在于D列(Cream中)的某一行中。在
使用openpyxl,我得到了以下代码:
for mrow in range(1, Cookies.get_highest_row() +1):
for arow in range(1, Cream.get_highest_row() +1):
if cookies['A' + str(mrow)].value == cream['D' + str(arow)].value:
print(cookies['A' + str(mrow)].value)
break
尽管这确实如预期的那样工作,但这需要很长时间才能执行,因为cookies包含大约7000行,cream有24000多行。在
谢谢你的帮助
openpyxl允许您直接访问列,但是您仍然需要自己检查单元格。你的代码应该是这样的:
如果你有非常大的文件,这将是缓慢的。可以使用解析代码在字符串和使用它们的单元格之间创建一个引用图,但最好使用xlwings之类的工具来自动化Excel并使其完成工作。在
下面是我的解决方案,但请注意,这并没有使用openpyxl包的任何特殊方法(正在处理这个问题)。不过,这应该足以加速你的工作。该算法总体上更快,并且避免了openpyxl(所有单元的内存分配,请参阅有关中途的警告:http://openpyxl.readthedocs.org/en/latest/tutorial.html)
使用此方法,通过检查负数、过滤等方式来分析返回的对象
相关问题 更多 >
编程相关推荐