xlrd是一個庫,用於從Excel文件中讀取數據和格式化信息,不管它們是.xls仍是.xlsx文件 xlrd方法有不少種,這裏只說明經常使用的 xlrd.open_workbook Excel文件讀取方法 本文不涉及帶有公式和宏的複雜Excel公式數據庫
資料說明app
https://xlrd.readthedocs.io/en/latest/
使用pip安裝ide
pip install xlrd
官方地址函數
https://pypi.org/project/xlrd/
參數說明 | 釋義 |
---|---|
filename | 要打開的電子表格文件的路徑 |
logfile | 寫入消息和診斷信息的日誌文件 |
verbosity | 增長寫入日誌文件的跟蹤材料的數量 |
use_mmap | 是否使用 mmap 模塊 |
file_contents | 文件內容 |
encoding_override | 文件編碼 |
formatting_info | 格式化信息 |
on_demand=False | False狀態爲沒有特殊需求,默認加載所有 |
ragged_rows=False | False狀態爲空行用空單元格 |
xlrd.open_workbook( filename=None, logfile=<_io.TextIOWrapper name='' mode='w' encoding='UTF-8'>, verbosity=0, use_mmap=1, file_contents=None, encoding_override=None, formatting_info=False, on_demand=False, ragged_rows=False)
# -*- coding:utf8 -*- import xlrd #導入模塊 Excel_Obj = xlrd.open_workbook('../file/111.xls') #打開Excel文件 print("Excel 對象:",Excel_Obj) print("Excel 全部表名稱",Excel_Obj.sheet_names()) print("索引獲取數據對象", Excel_Obj.sheet_by_index(0)) print("索引獲取數據對象", Excel_Obj.sheets()[0]) Tab_Obj = Excel_Obj.sheet_by_name(u'sheet1') #選中指定表對象,sheet1爲表名稱(Excel中標籤頁選項卡名稱,並不是Excel表格文件名稱) print("標籤頁行數:",Tab_Obj.nrows) print("標籤頁列數:",Tab_Obj.ncols) print("指定行內容:",Tab_Obj.row_values(0)) #索引第1行數據 print("指定行內容:",Tab_Obj.row_values(0,3)) #索引第1行,從第4列數據開始 print("指定列內容:",Tab_Obj.col_values(0)) #索引第1列數據 print("指定列內容:",Tab_Obj.col_values(0,3)) #索引第1列,從第4行數據開始 print("經過行號索引:",Tab_Obj.row(0)[1].value) #索引第1行第2列內容
==函數參數說明:==編碼
參數 | 說明 | 示例 |
---|---|---|
Excel_Obj | 讀取的Excel文件對象 | Excel_Obj = xlrd.open_workbook('SK_Auxiliary/file/' + file_obj.name + "") |
Tab_Obj | Excel中的數據表對象 | Excel_Obj.sheet_by_name(u'sheet1') |
Tab_Data | models數據庫表對象 | Excel_write(Tab_Obj,models.Test_Tab) |
def Excel_write(Tab_Obj,Tab_Data): DT = Tab_Data.__doc__ #拿到數據庫全部字段(未篩選) Title_List = DT[DT.find('(') + 1:DT.find(')')].split(",") #已篩選的全部數據庫字段列表 Title_List.pop(0) #刪除ID字段,用於添加ID字段外的數據 print("數據庫字段:",Title_List) print("總列數:", Tab_Obj.ncols) for H in range(1,Tab_Obj.nrows): #循環全部行數 dic = {} N = Tab_Obj.row_values(H) #excel表格當前行的數據 print("當前是",H,"行內容是:",N) #當前行內容 for L in range(0,Tab_Obj.ncols): #循環全部列 print("當前行:", H, "當前數據庫字段名:",Title_List[L].strip()) print("當前行:", H, "當前數據庫字段值:", N[L]) dic[Title_List[L].strip()]=N[L] print("要寫入數據庫的數據字典:",dic) Tab_Data.objects.create(**dic)
def Excel_write(Tab_Obj,Tab_Data): try: DT = Tab_Data.__doc__ Title_List = DT[DT.find('(') + 1:DT.find(')')].split(",") Title_List.pop(0) for H in range(1,Tab_Obj.nrows): dic = {} N = Tab_Obj.row_values(H) for L in range(0,Tab_Obj.ncols): dic[Title_List[L].strip()]=N[L] Tab_Data.objects.create(**dic) except Exception as e: print("錯誤信息:", e)