python import xlrd 报错_Python 使用xlrd读Excel文件报错

Python 使用xlrd读Excel文件报错:XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '\xef\xbb\xbf<?xml '

格式错误,大概意思就是期望的是BOF开头记录,但是读到的是'\xef\xbb\xbf<?xml ' 。通常Unsupported format是因为Excel文件里有不能读取的字符引起的。

而我这里读到'\xef\xbb\xbf<?xml '字符,有XML,怀疑文件本身可能就是XML,用简单的读文件方法读文件或简单把后缀改成XML,可以看出,果然是一个XML文件。

后来试着把原来的.XLS文件另存为文件为.XLSX后缀的,去掉多余的XML格式结构==,看到新文件明显变小了,xlrd调用ok,没有报错了。

xlsfile=xlrd.open_workbook(filename)

table = xlsfile.sheet_by_index(0)

但这样方法只能手动另存为文件,去掉多余格式结构什么的,并不能全自动,想试着用

shutil.copy(INPUTPATH+"\\ZQXX_"+STRDATE+".XLS",INPUTPATH+"\\ZQXX_"+STRDATE+".XLSX")

os.rename(INPUTPATH+"\\ZQXX_"+STRDATE+".XLS",INPUTPATH+"\\ZQXX_"+STRDATE+".XLSX")

都不能实现去掉多余格式,文件大小没有变化,这样操作仅仅是改变了文件名而已。

艹,有想过Excel弄个宏然后python调用宏。大概尝试了下,此路不通。

最后,还是直接用python的正则re,自己把文件正则拆分了。

贴下测试代码

#coding=utf-8

import os

import re

import datetime,time

tm1 = time.localtime(time.time())

STRDATE = '20161205'#time.strftime("%Y%m%d", tm1)

INPUTPATH = u"E:\\对接wind资讯\\" + STRDATE

def readxmldata():

#strstock = os.path.join(INPUTPATH,"GBXX_"+STRDATE+".XML")

strstock = os.path.join(INPUTPATH,"ZQXX_"+STRDATE+".XML")

fp = open(strstock, "rb")

file_data = fp.read()

data1 = re.findall('([\s\W\w\S]*?)',file_data)

print len(data1)

len_axis = 50

re_data=[]

for ii in range(0,int(len(data1)/len_axis)):

re_data.append(data1[ii*len_axis:(ii+1)*len_axis])

print int(len(data1)/len_axis)-1

print re_data[int(len(data1)/len_axis)-1],len(re_data)

if __name__ == '__main__':

readxmldata()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值