一、安裝xlrd
庫的安裝我這里就不說了..
二、讀取 excel
前提條件:excel文件名稱為 excel_data.xlsx
1、打開excelw 文件
workbook = xlrd.open_workbook(filename) # filename 為excel文件路徑 + 文件名稱
2、獲取 excel 的sheet工作表的內容
(1)比如:獲取第一個sheet工作表的名稱,如圖
貼上代碼:
get_sheet_name = workbook.sheet_names()[0] # [0]表示索引,獲取第一個sheet工作表名稱
(2)比如:獲取 excel 所有的sheet工作表的名稱
sheetname = workbook.sheet_names()
(3)根據工作表的名稱獲取sheet工作表頁的對象
workbook = xlrd.open_workbook(FileName)
get_sheet_name = workbook.sheet_names()[0] sheet2 = workbook.sheet_by_name(get_sheet_name) print(sheet2)
輸出:
<xlrd.sheet.Sheet object at 0x00000181B7CFCA90>
(4)根據工作表的索引獲取sheet工作表頁的對象
workbook = xlrd.open_workbook(FileName) sheet1 = workbook.sheet_by_index(0) print(sheet1)
輸出:
<xlrd.sheet.Sheet object at 0x000001C661A8C9B0>
(5)獲取sheet工作表的行數和列數
workbook = xlrd.open_workbook(FileName) # 打開文件 sheet1 = workbook.sheet_by_index(1) # 根據索引獲取第一個工作表的內容(通過更改索引數字1,可以獲取第幾個工作表的內容) nrows = sheet1.nrows # 獲取sheet工作表的行數
ncols = sheet1.ncols # 獲取sheet工作表的列數 print(nrows) print(ncols)
輸出:
11和7;說明有11行和7列
(6)獲取第1行(索引為0)的內容(是一個列表)
workbook = xlrd.open_workbook(FileName) sheet1 = workbook.sheet_by_index(1) row_data = sheet1.row_values(0) print(row_data)
(7)獲取第1列(索引為0)的值(是一個列表)
workbook = xlrd.open_workbook(FileName) sheet1 = workbook.sheet_by_index(1) col_data = sheet1.col_values(0) print(col_data)
(8)使用行列索引(從0開始)獲取單元格的數據
workbook = xlrd.open_workbook(FileName) sheet1 = workbook.sheet_by_index(1) cell_A1 = sheet1.cell(0, 0) print(cell_A1)
(9)將Excel文件中的數據轉換成json數組
import xlrd import json def readexcel(FileName): workbook = xlrd.open_workbook(FileName) sheet1 = workbook.sheet_by_index(1) nrows = sheet1.nrows idx = sheet1.row_values(0) # 最終的數據列表 data = [] # 從第1行開始遍歷循環所有行,獲取每行的數據 for i in range(1,nrows): row_data = sheet1.row_values(i) # 組建每一行數據的字典 row_data_dict = {} # 遍歷行數據的每一項,賦值進行數據字典 for j in range(len(row_data)): item = row_data[j] row_data_dict[idx[j]] = item # 將年份字段轉成整形 #row_data_dict['year'] = int(row_data_dict['year']) # 將行數據字典加入到data列表中 data.append(row_data_dict) result = json.dumps(data,indent = 4,ensure_ascii=False) print(result) if __name__ == '__main__': readexcel(r'D:/CodeBase/ReadData/ReadExcel/excel_data.xlsx')
輸出:
[ { "車牌號": "粵A123456", "設備號": 13645454412.0, "sim卡號": 13645454412.0, "設備類型": "A5C-8W", "所屬車組": "測試", "車架號": 123.0, "服務密碼": 123.0 } ]
注意:
json.dumps 進行序列化時,默認使用ascii編碼, print json.dumps(data,indent = 4)輸出unicode編碼的結果,比如: {"\u8f66\u724c\u53f7": "\u7ca4A123456"}
json.dumps(data,indent = 4,ensure_ascii=False),不使用ascii編碼,輸出結果為:{"車牌號": "粵A123456"}
但是有時也碰到 json.dumps(data,indent = 4,ensure_ascii=False)之后依舊是亂碼的格式,可采取下面方式處理:
import json dic = {"車牌號": "粵A123456"}print json.dumps(dic,ensure_ascii=False).decode("utf-8").encode("gb2312") #{"車牌號": "粵A123456"}