使用Python合并.xlsx文件

时间:2010-10-22 14:22:44

标签: python excel vba

这里有双头问题,

首先,我一直在尝试寻找一种在python中读取.xlsx文件的方法。 xlrd现在读取.xlsx文件吗?如果没有,推荐的读/写文件的方法是什么?

其次,我有两个信息相似的文件。带有范围子字段的一个主要字段(如坐标(主要字段) - >“城市” - >“状态” - >“国家/地区”)。在旧文件中,信息被赋予ID号,而较新的文件(删除/添加记录)没有这些ID。在python中,我1)打开两个文件2)检查较旧文件的主要字段与新文件的主要字段,如果匹配则将它们的信息合并到新文件中。鉴于它不是太大的文件,我不介意O(n ^ 2)的复杂性。我的问题是:在VBA或Excel中有没有明确定义的方法?我想到使用excel的库的一切看起来都太慢了,我对VBA并不是很优秀。

4 个答案:

答案 0 :(得分:4)

我经常通过python和xlrd,python和Excel COM对象访问excel文件。对于这项工作,xlrd将无法工作,因为它不支持xlsx格式。但无论如何,这两种方法都无法满足您的需求。简单的Excel公式将提供您想要的,特别是VLOOKUP。

VLOOKUP“在表的最左列中查找值,然后从指定的列中返回同一行中的值”。

有关VLOOKUP的一些建议,首先,如果要在多个单元格上进行匹配,请创建一个“关键”单元格,用于连接您感兴趣的单元格(在两个工作簿中)。其次,确保将VLOOKUP的最后一个参数设置为FALSE,因为您只需要完全匹配。

关于性能,excel公式通常非常快。

阅读VLOOKUP上的帮助文件,并在此处提出进一步的问题。

延迟编辑(来自Mark Ba​​ker的回答):现在有一个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的答案:

您可能希望能够将查找值放在最左边的列中。在这些情况下,IndexMatch函数会派上用场。 请参阅:http://www.mrexcel.com/articles/excel-vlookup-index-match.php