之前写过一篇【关于pd.read_excel()读取xls文件报错的解决办法】 原文链接:https://blog.csdn.net/qq_35866846/article/details/103992604 优化下读取函数,便于多个sheet读取,和pd.read_excel一样,sheet_name可以用序号也可以用sheet名
代码语言:javascript复制#自定义xls文件读取函数 默认header=0,sheet_name=0
def read_xls_xcx(data_path,header=0,sheet_name=0):
data=xlrdxcx.open_workbook(data_path)
if type(sheet_name)==int:
table=data.sheet_by_index(sheet_name)#通过索引打开
else:
table=data.sheet_by_name(sheet_name) #通过表单名打开
nrows = table.nrows
ncols = table.ncols
result=[]
for i in range(header,nrows):
result1=[]
for j in range(ncols):
result1.append(table.cell(i, j).value)
result.append(result1)
pd_result=pd.DataFrame(result)
pd_result.columns=pd_result.iloc[0,].tolist()
pd_result=pd_result[1:].reset_index(drop=True)
return pd_result
今天要说的问题不是这个,这个只是附带优化下
重点问题是关于读取xls时的一个警告
WARNING *** file size (1080329) not 512 multiple of sector size (512)
产生这个错误的原因是xlrd下的compdoc.py文件的第117-118行附近(看有的是119行)代码
代码语言:javascript复制 print("WARNING *** file size (%d) not 512 multiple of sector size (%d)"
% (len(mem), sec_size), file=logfile)
经测试:
是因为下载的数据是受保护视图
,excel打开如下图提示,当启用编辑并保存
后,此处警告就不存在了
具体什么原因还不是太清楚,此警告不影响读取的数据内容