1、安裝第三方庫=============》xlrd
? ? ? ? pip install xlrd
2、代碼如下,封裝成類的形式,方便調(diào)用,提高復(fù)用性
import xlrd
from xlrdimport xldate_as_tuple
'''
xlrd中單元格的數(shù)據(jù)類型
數(shù)字一律按浮點型輸出,日期輸出成一串小數(shù),布爾型輸出0或1,所以我們必須在程序中做判斷處理轉(zhuǎn)換
成我們想要的數(shù)據(jù)類型0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
'''
class ExcelData():
? ? # 初始化方法
? ? def __init__(self,data_path,sheetname):
? ? ? ? #定義一個屬性接收文件路徑
? ? ? ? self.data_path= data_path
? ? ? ? # 定義一個屬性接收工作表名稱
? ? ? ? self.sheetname= sheetname
? ? ? ? # 使用xlrd模塊打開excel表讀取數(shù)據(jù)
? ? ? ? self.data= xlrd.open_workbook(self.data_path)
# 根據(jù)工作表的名稱獲取工作表中的內(nèi)容(方式①)
? ? ? ? self.table= self.data.sheet_by_name(self.sheetname)
# 根據(jù)工作表的索引獲取工作表的內(nèi)容(方式②)
? ? ? ? # self.table = self.data.sheet_by_name(0)
? ? ? ? # 獲取第一行所有內(nèi)容,如果括號中1就是第二行,這點跟列表索引類似
? ? ? ? self.keys= self.table.row_values(0)
# 獲取工作表的有效行數(shù)
? ? ? ? self.rowNum= self.table.nrows
# 獲取工作表的有效列數(shù)
? ? ? ? self.colNum= self.table.ncols
# 定義一個讀取excel表的方法
? ? def readExcel(self):
? ? ? ? # 定義一個空列表
? ? ? ? datas= []
for iin range(1,self.rowNum):
? ? ? ? ? ? # 定義一個空字典
? ? ? ? ? ? sheet_data= {}
for jin range(self.colNum):
? ? ? ? ? ? ? ? # 獲取單元格數(shù)據(jù)類型
? ? ? ? ? ? ? ? c_type= self.table.cell(i,j).ctype
# 獲取單元格數(shù)據(jù)
? ? ? ? ? ? ? ? c_cell= self.table.cell_value(i, j)
if c_type== 2 and c_cell% 1 == 0:? # 如果是整形
? ? ? ? ? ? ? ? ? ? c_cell= int(c_cell)
elif c_type== 3:
? ? ? ? ? ? ? ? ? ? # 轉(zhuǎn)成datetime對象
? ? ? ? ? ? ? ? ? ? date= datetime.datetime(*xldate_as_tuple(c_cell,0))
c_cell= date.strftime('%Y/%d/%m %H:%M:%S')
elif c_type== 4:
? ? ? ? ? ? ? ? ? ? c_cell= True if c_cell== 1 else False
? ? ? ? ? ? ? ? sheet_data[self.keys[j]]= c_cell
# 循環(huán)每一個有效的單元格,將字段與值對應(yīng)存儲到字典中
? ? ? ? ? ? ? ? # 字典的key就是excel表中每列第一行的字段
? ? ? ? ? ? ? ? # sheet_data[self.keys[j]] = self.table.row_values(i)[j]
? ? ? ? ? ? # 再將字典追加到列表中
? ? ? ? ? ? datas.append(sheet_data)
# 返回從excel中獲取到的數(shù)據(jù):以列表存字典的形式返回
? ? ? ? return datas
if __name__== "__main__":
? ? def num(x,y):
? ? ? ? data_path= date_path
sheetname= "Sheet1"
? ? ? ? get_data= ExcelData(data_path, sheetname)
datas= get_data.readExcel()
print(datas)