一、xlrd庫的安裝
直接使用pip工具進行安裝(固然也可使用pycharmIDE進行安裝,這裏就不詳述了)
pip install xlrd
python
二、xlrd模塊的一些經常使用命令
①打開excel文件並建立對象存儲web
data = xlrd.open_workbook(文件路徑)
②獲取文件中全部工做表的名稱app
data.sheet_names()
③根據工做表的名稱獲取裏面的行列內容svg
table = data.sheet_by_name('Sheet1')
④獲取工做表的名稱、行數、列數工具
name = table.name rowNum = table.nrows colNum = table.ncols
⑤獲取單元格內容的3種方式ui
table.cell(i,j).value table.cell_value(i,j) table.row(i)[j].value
⑥獲取單元格數據類型spa
table.cell(i,j).ctype 或者 type(table.cell_value(i, j)
xlrd的數據類型有:
0 empty,
1 string,
2 number,
3 date,
4 boolean,
5 error
默認從excel中取出的數據打印出來會有問題:
數字一概按浮點型輸出,日期輸出成一串小數,布爾型輸出0或1,因此咱們必須在程序中作判斷處理轉換成咱們想要的數據類型
⑦獲取工做表第一行的全部字段列表excel
table.row_values(0)
三、寫一個自動獲取excel表內容的類
本代碼已實現自動轉換單元格數據類型,不會發生整形數字以浮點數顯示,布爾型True或False顯示爲1,0;日期時間顯示爲一連串的小數問題code
import xlrd from xlrd import xldate_as_tuple import datetime ''' xlrd中單元格的數據類型 數字一概按浮點型輸出,日期輸出成一串小數,布爾型輸出0或1,因此咱們必須在程序中作判斷處理轉換 成咱們想要的數據類型 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表讀取數據 self.data = xlrd.open_workbook(self.data_path) # 根據工做表的名稱獲取工做表中的內容(方式①) self.table = self.data.sheet_by_name(self.sheetname) # 根據工做表的索引獲取工做表的內容(方式②) # self.table = self.data.sheet_by_name(0) # 獲取第一行全部內容,若是括號中1就是第二行,這點跟列表索引相似 self.keys = self.table.row_values(0) # 獲取工做表的有效行數 self.rowNum = self.table.nrows # 獲取工做表的有效列數 self.colNum = self.table.ncols # 定義一個讀取excel表的方法 def readExcel(self): # 定義一個空列表 datas = [] for i in range(1, self.rowNum): # 定義一個空字典 sheet_data = {} for j in range(self.colNum): # 獲取單元格數據類型 c_type = self.table.cell(i,j).ctype # 獲取單元格數據 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: # 轉成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 # 循環每個有效的單元格,將字段與值對應存儲到字典中 # 字典的key就是excel表中每列第一行的字段 # sheet_data[self.keys[j]] = self.table.row_values(i)[j] # 再將字典追加到列表中 datas.append(sheet_data) # 返回從excel中獲取到的數據:以列表存字典的形式返回 return datas if __name__ == "__main__": data_path = "ttt.xlsx" sheetname = "Sheet1" get_data = ExcelData(data_path, sheetname) datas = get_data.readExcel() print(datas)
在本地建立了一個excel文件,內容以下:
xml
代碼執行後效果展現:
[ {'學號': 1001, '姓名': '張1', '年齡': 18, '專業': '語文', '考試時間': '2019/18/06 09:00:00'}, {'學號': 1002, '姓名': '張2', '年齡': 19, '專業': '數學', '考試時間': '2019/19/06 09:00:00'}, {'學號': 1003, '姓名': '張3', '年齡': 20, '專業': '英語', '考試時間': '2019/20/06 09:00:00'}, {'學號': 1004, '姓名': '張4', '年齡': 21, '專業': '物理', '考試時間': '2019/21/06 09:00:00'}, {'學號': 1005, '姓名': '張5', '年齡': 22, '專業': '化學', '考試時間': '2019/22/06 09:00:00'} ]