Python模块-xlrd模块 Django读取Excel数据储存到数据库

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

xlrd模块

xlrd模块说明

xlrd是一个库,用于从Excel文件中读取数据和格式化信息,无论它们是.xls还是.xlsx文件 xlrd方法有很多种,这里只说明常用的 xlrd.open_workbook Excel文件读取方法 本文不涉及带有公式和宏的复杂Excel公式

资料说明

https://xlrd.readthedocs.io/en/latest/

安装xlrd模块

使用pip安装

pip install xlrd

官方地址

https://pypi.org/project/xlrd/

xlrd.open_workbook(参数)

参数说明 释义
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)

读取Excel对象参数和示例

# -*- 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对象使用Django存储到数据库

==函数参数说明:==

  • 数据表需要自己建立
  • "sheet1" 为Excel选项卡中的表名
  • Test_Tab 为models中的数据表名
参数 说明 示例
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)

转载于:https://my.oschina.net/zhaojunhui/blog/2981146

你可能感兴趣的:(Python模块-xlrd模块 Django读取Excel数据储存到数据库)