一、 基本配置
- python环境已安装好
- Django框架安装完毕
- 项目和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准备
- 创建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'用户列表列表'
- 执行文件迁移
执行命令:python manage.py makemigrations
- 应用迁移
执行命令:python manage.py migrate
三、 views书写
- 文件保存
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()
- 通过
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)