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. CodeForces - 158B.Taxi (贪心)

    CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...

  2. React ref的用法

    React的ref有3种用法: 1. 字符串(已废弃)2. 回调函数3. React.createRef() (React16.3提供) 1. 字符串 最早的ref用法. 1.dom节点上使用,通过t ...

  3. [LOJ 6000]搭配飞行员

    link 其实就是一道二分图匹配板子,我们建立$S$,$T$为源点与汇点,然后分别将$S$连向所有正驾驶员,边权为$1$,然后将副驾驶员与$T$相连,边权为$1$,将数据中给出的$(a,b)$,将$a ...

  4. OLTP与OLAP比较【转】

    OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...

  5. ACE主动对象模式(1)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/11/589168.html 主动对象模式用于降低方法执行和方法调用之间的耦合.该模式描述了另外 ...

  6. [ 转载]Tomcat7 catalina.out 日志分割

    http://m.blog.csdn.net/blog/mark_qi/8864644 最近由于工作需要,tomcat 的catalina.out文件的不断扩大,导致系统磁盘空间边变小,而且管理也难于 ...

  7. udhcpd源码分析3--IP租赁管理

    1:重要的结构体 全局链表的成员struct dhcpOfferedAddr *leases 记录了当前租赁出去的IP信息 /* leases.h */ struct dhcpOfferedAddr ...

  8. bzoj 1123 [POI2008]BLO Tarjan求割点

    [POI2008]BLO Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1540  Solved: 711[Submit][Status][Discu ...

  9. IBM AppScan 安全漏洞问题修复(.net)

    按问题类型分类的问题 使用 SQL 注入的认证旁路2 已解密的登录请求3 登录错误消息凭证枚举1 会话标识未更新2 跨站点请求伪造1 Missing "Content-Security-Po ...

  10. angularJs $resource自定义方法(待完善)

    配置CompanyService var services = angular.module('liaoyuan.services'); services.factory('CompanyServic ...