1. 按照xlrd软件

pip3 install xlrd

2. POST提交文件获取数据

方法一:写入硬盘,xlrd读取xlsx文件获取文件数据

    def batch_view(self,request):
if request.method=="GET":
return render(request,'batch_view.html')
else:
from django.core.files.uploadedfile import InMemoryUploadedFile
file_obj = request.FILES.get('xsfile') with open('customers.xlsx', mode='wb') as f:
for chunk in file_obj:
f.write(chunk) import xlrd
workbook = xlrd.open_workbook('customers.xlsx')
sheet = workbook.sheet_by_index(0)
maps = {
0: 'qq',
1: 'name',
2: 'gender',
3: 'education',
4: 'graduation_school',
}
for index in range(1,sheet.nrows):
row = sheet.row(index)
# {'name':"吧唧",'qq':9898}
row_dict = {}
for i in range(len(maps)):
key = maps[i]
cell = row[i]
row_dict[key] = cell.value
print(row_dict)
# 自动获取ID
# 录入客户表
# 录入客户分配表 return HttpResponse('上传成功')

方法二:不写入硬盘,写入内存,xlrd从内存中读取数据

    def batch_view(self,request):
if request.method=="GET":
return render(request,'batch_view.html')
else:
from django.core.files.uploadedfile import InMemoryUploadedFile
file_obj = request.FILES.get('xsfile') from io import BytesIO
f = BytesIO() for chunk in file_obj:
f.write(chunk)
import xlrd workbook = xlrd.open_workbook(file_contents=f.getvalue())
# getvalue()方法用于获得写入后的str。
sheet = workbook.sheet_by_index(0)
maps = {
0: 'qq',
1: 'name',
2: 'gender',
3: 'education',
4: 'graduation_school',
}
for index in range(1,sheet.nrows):
row = sheet.row(index) row_dict = {}
for i in range(len(maps)):
key = maps[i]
cell = row[i]
row_dict[key] = cell.value
print(row_dict)
# # 自动获取ID
# # 录入客户表
# # 录入客户分配表 return HttpResponse('上传成功')

打印数据:

 {'qq': 6515616.0, 'name': '内瑟斯', 'gender': '男', 'education': '', 'graduation_school': ''}
{'qq': 6515623.0, 'name': '武器大师', 'gender': '男', 'education': '', 'graduation_school': ''}
{'qq': 24674335.0, 'name': '迦娜', 'gender': '女', 'education': '', 'graduation_school': ''}

3. xlsx文件测试数据

4. 项目示例

    def batch_view(self,request):
if request.method=="GET":
return render(request,'batch_view.html')
else:
from django.core.files.uploadedfile import InMemoryUploadedFile
file_obj = request.FILES.get('xsfile') # with open('customers.xlsx', mode='wb') as f:
# for chunk in file_obj:
# f.write(chunk)
#
from io import BytesIO
f = BytesIO()
for chunk in file_obj:
f.write(chunk)
import xlrd workbook = xlrd.open_workbook(file_contents=f.getvalue())
sheet = workbook.sheet_by_index(0)
maps = {
0: 'qq',
1: 'name',
2: 'gender',
3: 'education',
4: 'graduation_school',
}
for index in range(1,sheet.nrows):
from xxxxxx import AutoSale
sale_id = AutoSale.get_sale_id()
if not sale_id:
return HttpResponse("没有客户顾问无法分配")
row = sheet.row(index) # 这是通过行数获取行的内容
dict_obj = {} # 字典 row_dict = {}
for i in range(len(maps)): # 这是获取列的数量
key = maps[i] # 这是键
cell = row[i] # 这是获取空格的对象
row_dict[key] = cell.value
print(row_dict)
try:
with transaction.atomic():
dict_obj['consultant_id'] = int(sale_id.decode('utf-8'))
ctime = datetime.datetime.now().date()
course_list = []
course_list.extend(dict_obj.pop('course').split(','))
print('course_list', course_list)
obj = models.Customer.objects.create(**dict_obj)
print('dict_obj', dict_obj)
obj.course = course_list
print('走到这里没')
models.CustomerDistribution.objects.create(user_id=sale_id, customer=obj, ctime=ctime)
except Exception as e:
print(e)
AutoSale.rollback(sale_id)
message.send_message('自动发送', '很,兴奋代码自动发送邮件,', 'xxxx@qq.com', '大毛') return HttpResponse('上传成功')

批量导入自动给销售分配客户

  

Django 批量导入文件的更多相关文章

  1. Django 批量保存图片文件 自定义上传方法

    1.前端通过formData的方式批量增加图片或文件 for (var i = 0; i < form_img_list.length; i++) { formData.append('imag ...

  2. es 批量导入文件

    首先是json格式的文件: curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json 1 ...

  3. [Django]网页中利用ajax实现批量导入数据功能

    url.py代码: url(r'^workimport/$', 'keywork.views.import_keywork', name='import_keywork') view.py代码: fr ...

  4. [Django]数据批量导入

    前言:历经一个月的复习,考试终于结束了.这期间上班的时候有研究了Django网页制作过程中,如何将数据批量导入到数据库中. 这个过程真的是惨不忍睹,犯了很多的低级错误,这会在正文中说到的.再者导入数据 ...

  5. django后台导入excel文件

    1.django 如何从后台上传excel中批量解析数据 要从django后台导入的excel中批量解析数据,举一个例子,我们向后抬批量导入svn历史数据数据格式 假设excel表中有4列,每列分别是 ...

  6. poi批量导入excel文件

    package com.practice.util; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...

  7. csv文件批量导入数据到sqlite。

    csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {})  # bs_switch 为from表单file字段的namedata =[i.split( ...

  8. SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库

    SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库  /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...

  9. java实现文件批量导入导出实例(兼容xls,xlsx)

    1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...

随机推荐

  1. POJ.1061 青蛙的约会 (拓展欧几里得)

    POJ.1061 青蛙的约会 (拓展欧几里得) 题意分析 我们设两只小青蛙每只都跳了X次,由于他们相遇,可以得出他们同余,则有: 代码总览 #include <iostream> #inc ...

  2. HDOJ(HDU).1412 {A} + {B} (STL SET)

    HDOJ(HDU).1412 {A} + {B} (STL SET) 点我挑战题目 题意分析 大水题,会了set直接用set即可. 利用的是set的互异性(同一元素有且仅有一项). #include ...

  3. 学习操作Mac OS 之 使用brew安装软件

    安装brew软件 安装方法:  在Mac中打开Termal:  输入命令: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercont ...

  4. 爬虫实例——通过JS控制滚动条

    案例 某位淘女郎的某个相册 有能力的童鞋可以先尝试一下爬取每张照片的链接. 我曾经尝试过几种方法,下面一一介绍: 第一种方法,采用requests和BeautifulSoup: import requ ...

  5. SFM

    1.相机模型,内参数和外参数矩阵,相机标定: 2.极线约束和本征矩阵:特征点提取与匹配:提取到的特征点计算本征矩阵(五对以上的点)findEssentialMat(),需啊要点对,焦距参数,cx,cy ...

  6. logrotate配置和使用

    logrotate是linux自带的日志管理工具.服务器如果不对日志进行滚动操作,单个日志文件的增长速度极快,不利于日志查找和问题定位.而logrotate能够自动完成日志的截断.压缩和滚动操作. 安 ...

  7. 裸机配置C语言运行环境

    C语言程序的执行需要栈的支持.部分soc未初始化栈的情况下调用C语言程序会发生错误. start.S中一共配置了看门狗,svc栈,icache. 在x210中看门狗默认关闭,svc栈默认开启,icah ...

  8. [Luogu 1160] 队列安排

    Luogu 1160 队列安排 链表H2O H2O H2O模板. 太久不写链表,忘干净了,竟调了半个晚上. 保留备用. #include <cstdio> #include <cst ...

  9. 转【jenkins插件】

    开源版本的Jenkins 具有三大能力:Master-Slave的分布式构建调度能力.Pipeline编排能力.强大的开源生态(插件)能力. 2017年4月,Jenkins创始人KK(Kohsuke ...

  10. [Unity]插件Node Editor介绍 实现类似状态机画布的扩展

    Unity自带的动画状态机有一套对策划非常友好的UI.但是Unity官方没有公开这些控件的api.除了Asset Store里一些已有的方案,我在这里介绍一个在github上的开源项目,封装了底层,但 ...