这里有双头问题,
首先,我一直在尝试寻找一种在python中读取.xlsx文件的方法。 xlrd现在读取.xlsx文件吗?如果没有,推荐的读/写文件的方法是什么?
其次,我有两个信息相似的文件。带有范围子字段的一个主要字段(如坐标(主要字段) - >“城市” - >“状态” - >“国家/地区”)。在旧文件中,信息被赋予ID号,而较新的文件(删除/添加记录)没有这些ID。在python中,我1)打开两个文件2)检查较旧文件的主要字段与新文件的主要字段,如果匹配则将它们的信息合并到新文件中。鉴于它不是太大的文件,我不介意O(n ^ 2)的复杂性。我的问题是:在VBA或Excel中有没有明确定义的方法?我想到使用excel的库的一切看起来都太慢了,我对VBA并不是很优秀。
答案 0 :(得分:4)
我经常通过python和xlrd,python和Excel COM对象访问excel文件。对于这项工作,xlrd将无法工作,因为它不支持xlsx格式。但无论如何,这两种方法都无法满足您的需求。简单的Excel公式将提供您想要的,特别是VLOOKUP。
VLOOKUP“在表的最左列中查找值,然后从指定的列中返回同一行中的值”。
有关VLOOKUP的一些建议,首先,如果要在多个单元格上进行匹配,请创建一个“关键”单元格,用于连接您感兴趣的单元格(在两个工作簿中)。其次,确保将VLOOKUP的最后一个参数设置为FALSE,因为您只需要完全匹配。
关于性能,excel公式通常非常快。
阅读VLOOKUP上的帮助文件,并在此处提出进一步的问题。
延迟编辑(来自Mark Baker的回答):现在有一个xlsx的python解决方案。今年由Eric Gazoni创建Openpyxl来读写Excel的xlsx格式。
答案 1 :(得分:2)
今天早上我只听说过这个项目,所以我没有机会看到它,也不知道它是什么样的;但看看Eric'Gazoni的openpyxl项目。代码可以在bitbucket找到。这背后的驱动力是从Python读取/写入xlsx文件的能力。
答案 2 :(得分:0)
尝试http://www.python-excel.org/
我的错误 - 我错过了.xlsx细节。
我想这是一个更容易的问题:查找或编写一个本地处理.xlsx格式的库,或者将所有Excel电子表格保存为.xls,然后继续使用仅处理旧格式的库。
答案 3 :(得分:0)
补充Steven Rubalski的答案:
您可能希望能够将查找值放在最左边的列中。在这些情况下,Index
和Match
函数会派上用场。
请参阅:http://www.mrexcel.com/articles/excel-vlookup-index-match.php