python在读取excel文件时发生XLRDError错误
使用背景
最近学习python使用处理一些数据,从网上爬取excel数据有.xls和.xlsx两种类型数据。将遇到的问题加以整理,希望可以帮助到其他遇到相同问题的小伙伴。
一、 pandas操作xlsx类型数据
pandas在读取excel时依赖** lxml** 在使用lxml>2.0时使用报错。处理方式可分为两种:
- 将lxml版本小于2.0
- pip install openpyxl :项目中安装了openpyxl后读取文件使用正常
二、读取xls类型数据
import pandas as pd pd.read_excel(r'D:\财务报表\报表\1750-0001047469-13-007797.xls')
读取报错XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b’\xef\xbb\xbfMIME-’。
查找各种资料后发现xls文件其本身为xml格式,因此在使用excel打开时提示文件错误。
使用excel打开:
使用txt打开时如下:
打开excel后将该文件另存为.xls文件后用记事本打开数据。此另存数据使用xlrd或者pandas操作正常。
三、读取xls错误解决
使用win32com将存在问题的xls转换为xlsx类型,问题可解决
pip install pywin32
import win32com.client as win32
fname = r'D:\财务报表\1750-0001047469-12-007300.xls'
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(fname)
wb.SaveAs(fname+"x", FileFormat = 51) #FileFormat = 51 is for .xlsx extension
wb.Close() #FileFormat = 56 is for .xls extension
excel.Application.Quit()
参考资料
[1] :https://stackoverflow.com/questions/9623029/python-xlrd-unsupported-format-or-corrupt-file
[2]:https://stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx