Excel表格类型
当前,Excel文件主要有如下两种格式:
- .xls格式,主要应用于Excel 2003及以下版本。
- .xlsx格式,主要应用于Excel 2007及以上版本。
读取Excel
xlrd
- xlrd 2.0 版本及以上只支持xls格式读取,xlrd 2.0版本以下同时支持xls格式、xlsx格式读取。因此,如果需要用该库读取xlsx格式的文件时,必须控制在xlrd 2.0 版本以下。
- 该库读取Excel方式类似于读取数组的方式,读取速度较快。
- 侧重对Excel的精细化读取,可以精细到单元格的层级,适用性强。
- xlrd最大支持读取1048574行的数据(不分xlsx还是xls格式),耗时63秒左右。
openpyxl
- 仅支持xlsx格式,不支持xls格式。
- 利用sheet.cell(row, column)定位单元格较慢,普通模式读取数据较慢。
- 如果用该库读取Excel数据且对读取速度要求高,可将读取模式设置成只读模式,如下:
load_workbook(path, read_only=True)
pandas
- 需依赖于xlrd库或openpyxl库。pandas读取Excel文件的时候底层会根据Excel文件的后缀名分别调用xlrd库或者openpyxl库来实现读取数据。
- pandas的read_excel()读取,耗时巨大,而且不适合作为调试工具。
写入Excel
xlwt
- 写入Excel文件的先驱,特性稳定成熟,但只支持xls格式。
- 单个sheet最大写入行数是65535行,最大列数是256列。
- 单次最大保存数据量为32767个字符。
xlsxwriter
- 功能丰富,支持图片/表格/图表/筛选/格式/公式等。
- 支持xlsx、xls格式,但保存为xls格式后打开时有告警信息。
- 适合写入超大文件(百万级别),速度快,写入200万数据耗时160秒左右,占用内存空间较小。
openpyxl
- 只支持xlsx格式,且最大行数达到1048576行。
- 简单易用,功能丰富,如单元格格式/图片/表格/公式/筛选/批注/文件保护。
pandas
依赖于xlwt库或openpyxl库。写入xlsx后缀的excel文件时底层需调用openpyxl库,写入xls后缀的Excel文件时底层需调用xlwt库。
修改Excel
修改Excel文件的常用库主要包含xlutils、openpyxl。当前,python中涉及Excel修改操作的库基本上都不支持“原地编辑与保存”,而当前修改Excel文件的方式实际上是一种将原文件“另存为”的方式,且指定保存到原文件的话,原Excel文件会被覆盖掉,如xlutils、openpyxl均如此。
以xlutils为例,一般只用到copy模块,需要从xlutils模块导入copy,用于修改另存为Excel文件。具体实现步骤如下:
首先,将需要更改的Excel文件打开,用xlutils包的copy模块将Excel文件拷贝一份,然后进行修改操作,最后保存与原Excel文件相同的文件路径和文件名,达到修改Excel的目的。
另外,不建议针对大规模的Excel文件直接进行修改,否则会容易出现要保存的对象数目超过限定范围进而导致无法保存现象。针对大规模Excel文件的修改,可通过“读改分离”的方式实现,即通过xlrd、openpyxl等库高效的读取excel数据,然后将刚刚读取的数据替换成需要的修改内容后,重新利用xlsxwriter、xlwt、openpyxl等库高效的写入excel文件中来达到修改Excel的目的。
应用场景
不同的Excel库各有所长,实际开发过程中可根据自己的需求和生产环境,选择合适的 Excel 库进行读写操作,如下:
- 如果数据量不大,对Excel格式无要求,追求稳定性,可以使用xlwt + xlrd组合。
- 如果想要在Excel中完成图片/表格/图表/筛选/格式/公式等丰富功能操作,可选用openpyxl或xlsxwriter。
- 如果需要进行科学计算,处理大量数据,可使用 pandas + xlsxwriter 或者 pandas+openpyxl。
- 如果对读、写、改Excel要求只能用一种模块,可考虑openpyxl、pandas。
- 如果想在Excel中直接运行脚本(如Python脚本),同时对VBA有一定基础,可考虑 xlwings 或 DataNitro。
- 如果对功能和性能都要求极高,且掌握windows 编程经验,可考虑win32com。
安装Excel库
为了实现利用Python语言来对Excel进行读写改操作,因此,必须将对应excel库安装在Python库目录中,方便直接调用。除了使用常见的pip命令安装Excel外,本文介绍一种可以指定版本号的手动安装方式,以安装XlsxWriter、xlrd、xlutils库为例,先在https://pypi.org/search/官网搜索对应的XlsxWriter、xlrd、xlutils安装包,然后将刚下载的安装包上传到/usr/local/python3/lib目录下,分别进行解压操作,最后进入各自解压后的文件夹执行安装脚本,如下:
XlsxWriter安装:
tar -zxvf XlsxWriter-3.0.2.tar.gz
cd XlsxWriter-3.0.2
python3 setup.py install
xlrd安装:
tar -zxvf xlrd-1.2.0.tar.gz
cd xlrd-1.2.0
python3 setup.py install
xlutils安装:
tar -zxvf xlutils-2.0.0.tar.gz
cd xlutils-2.0.0
python3 setup.py install