高效迴圈讀取excel中有多個sheet的兩種方法

2021-10-09 05:02:30 字數 2448 閱讀 5789

先說明一下如果單純地使用read_excel方法,會導致效率極其低下,因為read_excel第乙個引數是要傳path(如:r』c:\users\desktop\貸款\data.xlsx』)給計算機,每一次迴圈都要再傳一次,簡直慢的不要不要的,而excelfile則是乙個類,給計算機迴圈傳類就不會存在這種問題。

以下是傳統方法:

wb = xlrd.

open_workbook

(r'c:\users\desktop\貸款\data.xlsx'

) # 獲取workbook中所有的**

sheets = wb.

sheet_names()

data2 = pd.

dataframe()

for i in

range

(len

(sheets)):

df2 = pd.

read_excel

(r'c:\users\desktop\貸款\data.xlsx'

', sheet_name=sheets[i], index=false, encoding='utf8',converters=

) data2 = data2.

(df2)

print

(i)print

(sheets[i]

)

這裡要介紹一下國外大神的方法:附鏈結(以下是搬運過來的。

從技術上講,excelfile是乙個類,read_excel是乙個函式。無論哪種情況,實際的解析都是由中_parse_excel定義的方法處理的excelfile。所以可以使用以下兩種傳類的方法來進行。

ps:我這個excel每乙個sheet有上萬行,共有30多個sheet。

1、excelfile&read_excel方法;

xl = pd.

excelfile

(path)

for name in xl.sheet_names:

df = pd.

read_excel

(xl, name)

2、excelfile&parse方法。

xl = pd.

excelfile

(path)

for name in xl.sheet_names:

df = xl.

parse

(name)

下面是實際執行**

import pandas as pd

def read_excel1

(path)

: data_xlsx = pd.

excelfile

(path)

print

(data_xlsx.sheet_names)

data=pd.

dataframe()

for name in data_xlsx.sheet_names:

df=data_xlsx.

parse

(sheet_name=name,converters=

)# data[name]

=df data = data.

(df)

# print

(df)

print

(name)

return data

path=r'c:\users\desktop\貸款\data.xlsx'

data=

read_excel1

(path)

import pandas as pd

def read_excel1

(path)

: data_xlsx = pd.

excelfile

(path)

print

(data_xlsx.sheet_names)

data=pd.

dataframe()

for name in data_xlsx.sheet_names:

df=data_xlsx.

read_excel

(data_xlsx,sheet_name=name, encoding=

'utf8'

,converters=

)# data[name]

=df data = data.

(df)

# print

(df)

print

(name)

return data

path=r'c:\users\desktop\貸款\data.xlsx'

data=

read_excel1

(path)

C 讀取Excel中指定的Sheet名稱或索引

public datatable exceltods string path 但是上面的 只是查詢sheet1 表,如果使用者把sheet表名改了就是報下面的錯 sheet1 不是乙個有效名稱。請確認它不包含無效的字元或標點,且名稱不太長。那麼怎樣才能獲得excel中各個sheet的名稱呢?這樣就能...

C 讀取Excel中指定的Sheet名稱或索引

public datatable exceltods string path 但是上面的 只是查詢sheet1 表,如果使用者把sheet表名改了就是報下面的錯 sheet1 不是乙個有效名稱。請確認它不包含無效的字元或標點,且名稱不太長。那麼怎樣才能獲得excel中各個sheet的名稱呢?這樣就能...

C 讀取Excel中指定的Sheet名稱或索引

public datatable exceltods string path 但是上面的 只是查詢sheet1 表,如果使用者把sheet表名改了就是報下面的錯 sheet1 不是乙個有效名稱。請確認它不包含無效的字元或標點,且名稱不太長。那麼怎樣才能獲得excel中各個sheet的名稱呢?這樣就能...