之前寫過一篇【關於pd.read_excel()讀取xls文件報錯的解決辦法】
原文鏈接:https://blog.csdn.net/qq_35866846/article/details/103992604
優化下讀取函數,便於多個sheet讀取,和pd.read_excel一樣,sheet_name可以用序號也可以用sheet名
#自定義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行)代碼
print("WARNING *** file size (%d) not 512 + multiple of sector size (%d)"
% (len(mem), sec_size), file=logfile)
經測試:
是因爲下載的數據是受保護視圖
,excel打開如下圖提示,當啓用編輯並保存
後,此處警告就不存在了
具體什麼原因還不是太清楚,此警告不影響讀取的數據內容