python 读取excel文件(xls 和xlsx)的一些异常处理

常用的openpyl 只支持xlsx格式,对于xls格式文件会提示

一、使用xlrd读取xls文件时

报错提示:

_locate_stream(Workbook): seen
0 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3
20 2

……

File "/usr/local/lib/python2.7/dist-packages/xlrd-0.9.4-py2.7.egg/xlrd/compdoc.py", line 418, in _locate_stream
    raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))
xlrd.compdoc.CompDocError: Workbook corruption: seen[2] == 4

看了网友的一众解决方法,是修改xlrd模块的源文件compdoc.py,打开该文件,找到429行代码 ,即报错行,注释掉即可。或者注释掉该模块代码。

raise CompDocError("%s corruption: seen[%d] == %d" % (qname, s, self.seen[s]))

二、xlrd不能读取xlsx格式的excel。可使用openpyxl。

报错如下

  File "/home/260190/PycharmProjects/File_compare_docker/venv/lib64/python3.6/site-packages/xlrd/__init__.py", line 170, in open_workbook
    raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported

查看源码,是xlrd只能读取xls格式文件。

if file_format and file_format != 'xls':
    raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Pythonexcel库中,可以使用多种方法将xls文件转换为xlsx文件。 一种常用的方法是使用openpyxl库。该库可以读取和写入xlsx文件,因此可以使用openpyxl.load_workbook()函数打开xls文件,然后使用save()函数将其保存为xlsx文件。示例如下: ```python import openpyxl # 打开xls文件 wb = openpyxl.load_workbook('file.xls') # 创建一个新的xlsx文件 new_wb = openpyxl.Workbook() # 将xls文件中的数据复制到xlsx文件 for sheetname in wb.sheetnames: sheet = new_wb.create_sheet(sheetname) for row in wb[sheetname].iter_rows(): sheet.append([cell.value for cell in row]) # 保存为xlsx文件 new_wb.save('file.xlsx') ``` 另一种方法是使用pandas库,它提供了丰富的数据处理功能。可以使用pandas的read_excel()函数打开xls文件,然后使用to_excel()函数将其保存为xlsx文件。示例如下: ```python import pandas as pd # 打开xls文件 df = pd.read_excel('file.xls') # 保存为xlsx文件 df.to_excel('file.xlsx', index=False) ``` 除了以上两种方法,还可以使用xlrd和xlwt库进行转换。可以使用xlrd.open_workbook()函数打开xls文件,然后使用xlwt.Workbook()函数创建一个新的xlsx文件,使用xlwt中的write()函数将数据逐行写入xlsx文件,最后使用save()函数保存xlsx文件。示例如下: ```python import xlrd import xlwt # 打开xls文件 wb = xlrd.open_workbook('file.xls') # 创建一个新的xlsx文件 new_wb = xlwt.Workbook() # 将xls文件中的数据复制到xlsx文件 for sheetname in wb.sheet_names(): sheet = new_wb.add_sheet(sheetname) for row in range(wb.sheet_by_name(sheetname).nrows): for col in range(wb.sheet_by_name(sheetname).ncols): sheet.write(row, col, wb.sheet_by_name(sheetname).cell(row, col).value) # 保存为xlsx文件 new_wb.save('file.xlsx') ``` 总之,根据实际需求,可以选择适合的方法将xls文件转换为xlsx文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值