`

Pandas读取PHPExcel创建的xls文件出错

阅读更多

       想使用Python包Pandas处理一些xls文件,运行时出现类似下面错误:

       xlrd.compdoc.CompDocError: Workbook corruption: seen[2] == 4

       而使用的xlrd 版本是2.0.1

 

       查找的很多内容,是通过修改xlrd的源代码来处理这种情况的.因不想这样解决,所以寻找有没有其它处理方式.

       检查了被处理的xls文件,发现它们是通过PHPExcel生成的导出文件;如果用WPS等软件打开并保存后,

再用处理程序处理,并不会出现上述报错.因此这种情况和文件生成过程是有关系的.

       经过一些资料查找后,在[此处]找到了如下回答:

       From pkm comment (link) the problem is with a Compound File Binary

#pip install OleFileIO-PL
import OleFileIO_PL
import pandas as pd

path = 'file.xls'
with open(path,'rb') as file:
    ole = OleFileIO_PL.OleFileIO(file)
    if ole.exists('Workbook'):
        d = ole.openstream('Workbook')
        x=pd.read_excel(d,engine='xlrd')
        print(x.head())

       经过测试,安装了OleFileIO-PL 0.31后,采用上述样例代码,可解决遇到的异常.同时也指出了产生异常现象的来源.

       同时,在其它的回答中,如下的处理方式,经测试也是可以作为处理方案的:

       Inspired by this answer, but a bit more straigthforward:

       pd.read_excel accepts xlrd.Book objects so you could do:

workbook = xlrd.open_workbook('file_name.xls', ignore_workbook_corruption=True)
excel = pd.read_excel(workbook)

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics