工作中经常和数据打交道,也避免不了使用Excel整理或者汇总一些数据,业务经常会给到一些excel,要求把这些数据怎么样怎么样,既然学了Python,就打算写个脚本处理这些数据,于是看了些操作excel的模块(xlrd&xlwt、XlsxWriter、OpenPyXL、Microsoft Excel API)。这里对相关基础用法做些总结。
(一)xlrd&xlwt
xlrd用来读取excel文件,xlwt用来写excel文件,它们合作来对excel进行操作。
官方文档:http://www.python-excel.org/
xlrd官方介绍:https://pypi.python.org/pypi/xlrd/1.0.0
xlwt官方介绍:https://pypi.python.org/pypi/xlwt/1.1.2
xlutils官方介绍:https://pypi.python.org/pypi/xlutils
安装后引用:
xlrd用来读取excel文件,大致的简单操作参考如下:
xlwt用来写excel文件,大致的简单操作如下:
(二)XlsxWriter
Xlsx是python用来构造xlsx文件的模块,可以向excel2007+中写text,numbers,formulas 公式以及hyperlinks超链接。
Xlsx是python用来构造xlsx文件的模块,可以向excel2007+中写text,numbers,formulas 公式以及hyperlinks超链接。
官网Tutorial:http://xlsxwriter.readthedocs.io/tutorial
大致的简单操作如下:
同时在写入时可以使用公式,并且可以自定义格式:
(三)OpenPyXL
OpenPyXL是比较综合的一个工具,能读能写能修改,功能还算可以但也有很大的缺陷。不支持XLS,不支持读取公式。
由于没有什么亮点和优势,所以自己没有亲自去尝试。
OpenPyXL的工作模式跟XlsxWriter和xlwt有很大的区别,它用的是getter/setter模式。你可以随时读取某个单元格的内容,并根据其内容进行相应的修改,OpenPyXL会帮你记住每个单元格的状态。
特别需要注意的一点:虽然它支持修改已有文件,但由于其所支持的功能有限,读入文件时会忽略掉它所不支持的内容,再写入时,这些内容就丢失了。因此使用时一定要慎重。比如下面的缺点中提到它无法读入公式,那如果你修改一个带有公式的文件,保存之后,所有的公式就都没有了。
(四)Microsoft Excel API
大部分Windows环境的开发人员都会选择Microsoft Excel API。实际上不仅仅是Python,几乎各种语言都有相应的方法使用它,因为核心的逻辑完全是由MicrosftExcel自身提供的。语言相关的部分只是负责跟Windows的COM组件进行通信。
在Python中首先需要安装Python for Windows extensions(pywin32),具体的文档可以查阅Win32 Modules和Python COM。
当然你还必须要安装某一个版本的Microsoft Office Excel,它内部的DLL负责实际的操作。
但是有两个致命的缺点:慢到死和平台限制。
因为以前尝试过,所以也没有亲自实践,但MSDN上的文档绝对详细,要处理操作复杂的Excel的话可以考虑使用。
(五)总结
在google了一番和尝试之后,最终决定使用xlrd来读(既支持XLS,也支持XLSX),用XlsxWriter来写。目前使用下来还是这个搭配基本上解决了我操作Excel的需求。