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)
批量导入Excel数据Django中,可以使用以下步骤: 1. 安装所需的库:pandas和xlrd。可以使用以下命令安装: ``` pip install pandas xlrd ``` 2. 创建一个视图函数来处理上传的Excel文件。可以使用以下代码: ```python import pandas as pd from django.shortcuts import render def upload_excel(request): if request.method == 'POST': excel_file = request.FILES.get('excel_file') if not excel_file.name.endswith('.xlsx'): messages.error(request, '请上传 Excel 文件') return render(request, 'upload_excel.html') data = pd.read_excel(excel_file) # 处理数据 return render(request, 'success.html') return render(request, 'upload_excel.html') ``` 3. 在模板中创建一个单,允许用户上传Excel文件。可以使用以下代码: ```html <form method="post" enctype="multipart/form-data"> {% csrf_token %} <label for="excel_file">上传 Excel 文件:</label> <input type="file" name="excel_file" id="excel_file"> <button type="submit">上传</button> </form> ``` 4. 处理数据。在视图函数中,可以使用pandas库来读取Excel文件中的数据。例如,可以使用以下代码将数据存储到数据库中: ```python from .models import MyModel def upload_excel(request): # ... data = pd.read_excel(excel_file) for row in data.itertuples(): my_model = MyModel( field1=row.field1, field2=row.field2, field3=row.field3, # ... ) my_model.save() return render(request, 'success.html') ``` 注意,这里假设MyModel是Django中的一个模型,它有field1、field2、field3等字段。 以上就是批量导入Excel数据Django的步骤。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值