用Python合并.xlsx文件
大家好,我有两个问题想请教一下。
首先,我一直在寻找一种方法来在Python中读取.xlsx文件。请问xlrd现在能读取.xlsx文件吗?如果不能,那有什么推荐的方法来读写这样的文件呢?
其次,我有两个文件,里面的信息很相似。一个是主要字段,还有一些子字段(比如坐标(主要字段) -> 城市 -> 州 -> 国家)。在旧文件中,这些信息都有一个ID号码,而新文件(有记录被删除或添加)则没有这些ID。我的想法是:1)打开这两个文件 2)检查旧文件的主要字段和新文件的主要字段是否匹配,如果匹配,就把它们的信息合并到一个新文件里。因为文件不大,我不介意O(n^2)的复杂度。我的问题是:在VBA或Excel中,有没有一个明确的方法来做到这一点?我觉得用Excel的库来做似乎太慢,而且我对VBA也不是很在行。
4 个回答
试试这个网站:http://www.python-excel.org/
我犯了个错误 - 我忽略了 .xlsx 这个细节。
我想这其实是个选择的问题:是找一个能直接处理 .xlsx 格式的库更简单,还是把所有的 Excel 表格都保存成 .xls 格式,然后用那些只处理旧格式的库来继续工作更简单。
我经常通过Python和xlrd,或者Python和Excel的COM对象来访问Excel文件。不过,xlrd这个工具不支持xlsx格式,所以在这方面它不太适用。不过没关系,这两种方法其实都太复杂了,不太符合你的需求。简单的Excel公式就能解决你的问题,特别是VLOOKUP函数。
VLOOKUP的意思是“在一个表格的最左边一列中查找一个值,然后返回同一行中你指定的列的值”。
关于VLOOKUP,有几点建议。首先,如果你想要匹配多个单元格,可以创建一个“关键”单元格,把你感兴趣的单元格内容合并在一起(在两个工作簿中都要这样做)。其次,确保在VLOOKUP的最后一个参数设置为FALSE,因为你只想要完全匹配的结果。
关于性能,Excel公式通常运行得非常快。
可以查看VLOOKUP的帮助文件,如果还有其他问题可以在这里问。
补充说明(来自Mark Baker的回答):现在有了一个Python解决方案可以处理xlsx格式。Openpyxl是Eric Gazoni今年创建的,用于读取和写入Excel的xlsx格式。