用Python合并.xlsx文件

1 投票
4 回答
4473 浏览
提问于 2025-04-16 05:55

大家好,我有两个问题想请教一下。

首先,我一直在寻找一种方法来在Python中读取.xlsx文件。请问xlrd现在能读取.xlsx文件吗?如果不能,那有什么推荐的方法来读写这样的文件呢?

其次,我有两个文件,里面的信息很相似。一个是主要字段,还有一些子字段(比如坐标(主要字段) -> 城市 -> 州 -> 国家)。在旧文件中,这些信息都有一个ID号码,而新文件(有记录被删除或添加)则没有这些ID。我的想法是:1)打开这两个文件 2)检查旧文件的主要字段和新文件的主要字段是否匹配,如果匹配,就把它们的信息合并到一个新文件里。因为文件不大,我不介意O(n^2)的复杂度。我的问题是:在VBA或Excel中,有没有一个明确的方法来做到这一点?我觉得用Excel的库来做似乎太慢,而且我对VBA也不是很在行。

4 个回答

0

试试这个网站:http://www.python-excel.org/

我犯了个错误 - 我忽略了 .xlsx 这个细节。

我想这其实是个选择的问题:是找一个能直接处理 .xlsx 格式的库更简单,还是把所有的 Excel 表格都保存成 .xls 格式,然后用那些只处理旧格式的库来继续工作更简单。

2

我今天早上才听说这个项目,所以还没机会去了解,不太清楚它的具体情况。不过你可以看看Eric Gazoni的openpyxl项目。这个项目的代码可以在bitbucket上找到。这个项目的主要目的是让Python能够读取和写入xlsx文件。

4

我经常通过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格式。

撰写回答