python导入xlrd库_Python模块-xlrd模块 Django读取Excel数据储存到数据库

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值