Python 使用xlrd读Excel文件报错

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

 

格式错误,大概意思就是期望的是BOF开头记录,但是读到的是'\xef\xbb\xbf

而我这里读到'\xef\xbb\xbf

 

后来试着把原来的.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()

 

你可能感兴趣的:(Python)