解决Python处理Excel65535的问题

问题描述

使用Python去处理表格的时候,居然报错,提示为:

1
ValueError: row index was 65536, not allowed by .xls format

基于xlrd、xlwt进行Excel的处理,其包中对单个Sheet限制最大行数为65535,当读写数据超出这个范围就会出现如上错误。

解决方案

可以使用openpyxl包,其最大行数为1048576,存储的文件类型为xlsx,但是弊端就是不能读取xls老的Excel格式文件。
对于这个,我在项目中想了一个解决方案,判断是xls格式就用xlrd、xlwt包的方法;xlsx就用openpyxl。
如果是xls并且行数超过65536,让用户上传xlsx格式的文件,网上有xls、xlsx格式的转换,有需要的可以找找。

如果使用openpyxl读取.xls文件,报错:

1
2
3
raise InvalidFileException(msg)
openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format,
please use xlrd to read this file, or convert it to the more recent .xlsx file format.

解决Python处理Excel65535的问题
http://pygo2.top/articles/26307/
作者
mingliang.gao
发布于
2021年8月5日
许可协议