django通过Excel表批量导入数据

一、 基本配置

  1. python环境已安装好
  2. Django框架安装完毕
  3. 项目和APP已经创建并添加到settings配置文件中

二、前端代码

<div class="form-group" id="thumbnailUploadContainer" class="col-sm-10" style="float: left; margin-right: 50px;">
		<input id="articleImageFile" name="excelFile" type="file" class="form-control" style="width: 300px; display: inline;" />
		<input id="saveZipButton" type="button" style="width: 60px;height: 35px;" value="上传" />
	</div>

请牢记name名称,不写默认为file,此name是后台获取文件句柄所用

三、Django准备

  1. 创建models,以User为例
from django.db import models


# Create your models here.


class User(models.Model):
    name = models.CharField(max_length=20, blank=False, null=False, verbose_name='姓名')
    age= models.IntegerField(blank=True, null=True, default=0, verbose_name='年龄')

    class Meta:
        verbose_name = u'用户表'
        verbose_name_plural = u'用户列表列表'
  1. 执行文件迁移
    执行命令:python manage.py makemigrations
  2. 应用迁移
    执行命令:python manage.py migrate

三、 views书写

  1. 文件保存
def upload(request):
   # 获取文件句柄
   file_handle = request.FILES.get('excelFile')
   # 随机生成文件名
   filename = str(time.time()) + file_handle.name
   # 将文件保存在/static/files目录下
   destination = open("./static/files/" + filename, "wb+")
   for chunk in file_handle.chunks():  # 分块写入文件
       destination.write(chunk)
   destination.close()
  1. 通过xlrd解析Excel表格
    pip install xlrd安装xlrd
import xlrd
import models
def createUserByExcel(request):
   # 打开文件
   file_xlsx = xlrd.open_workbook(os.getcwd() + '/static/files/'+ filename )
   # 获取所有sheet表
   all_sheet = file_xlsx.sheets()
   # 获取第一张表
   sheet1 = all_sheet[0]
   # sheet1_name = sheet1.name
   # 获取表的行数,同理sheet1.ncols表的列数,sheet1.name获取表的名字
   sheet1_rows = sheet1.nrows
   value_list = []
   for i in range(1, sheet1_rows):

           if sheet1.row_values(i):
               value_list.append(models.User(
                   name=sheet1.row_values(i)[0],
                   age=int(sheet1.row_values(i)[1])
                   # 此处需要注意:models中age为Interge,存储时age要转换成int类型
               ))
   models.User.objects.bulk_create(value_list)
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值