我有两个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
尽管这确实按预期工作,但这需要很长时间才能执行,因为cookie包含大约7000行,而cream有超过24,000行。
感谢您的帮助
答案 0 :(得分:0)
这是我制定的内容,但请注意,这不使用openpyxl包的任何特殊方法(处理它)。但是,它应该足以加快你的工作。该算法总体上更快(不再是n ^ 2无意义......)并且避免了openpyxl中的一些陷阱(所有单元格的内存分配,请参阅http://openpyxl.readthedocs.org/en/latest/tutorial.html中间的警告)如果有人可以通过各种手段改进它请在评论中告诉我,我还在学习。
ISBN:1.1.1.1
Genre:Thriller
Seller_Company:XYZ
Seller_Broker:Brook
Buyer_Company: NULL
Buyer_Broker:NULL
使用此方法,并通过检查否定值,过滤它等来分析返回的对象
答案 1 :(得分:0)
openpyxl允许您直接访问列,但您仍需要自己检查单元格。你的代码是这样的:
cookies = load_workbook("cookies.xlsx")
cream = load_workbook("cream.xlsx")
ws1 = cookies['sheetname']
ws2 = cream['sheetname2']
cookies_a = ws1.columns[0]
cream_d = ws1.columns[4]
for c1, c2 in zip(cookies_a, cream_d):
if c1.value == c2.value:
break
如果您的文件非常大,这将会很慢。可以使用解析代码在字符串和使用它们的单元格之间创建参考图形,但是最好使用类似xlwings的东西来自动化Excel并使其完成工作。