Django 批量导入文件
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 批量导入文件的更多相关文章
- Django 批量保存图片文件 自定义上传方法
1.前端通过formData的方式批量增加图片或文件 for (var i = 0; i < form_img_list.length; i++) { formData.append('imag ...
- es 批量导入文件
首先是json格式的文件: curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json 1 ...
- [Django]网页中利用ajax实现批量导入数据功能
url.py代码: url(r'^workimport/$', 'keywork.views.import_keywork', name='import_keywork') view.py代码: fr ...
- [Django]数据批量导入
前言:历经一个月的复习,考试终于结束了.这期间上班的时候有研究了Django网页制作过程中,如何将数据批量导入到数据库中. 这个过程真的是惨不忍睹,犯了很多的低级错误,这会在正文中说到的.再者导入数据 ...
- django后台导入excel文件
1.django 如何从后台上传excel中批量解析数据 要从django后台导入的excel中批量解析数据,举一个例子,我们向后抬批量导入svn历史数据数据格式 假设excel表中有4列,每列分别是 ...
- poi批量导入excel文件
package com.practice.util; import java.io.File; import java.io.FileInputStream; import java.io.FileN ...
- csv文件批量导入数据到sqlite。
csv文件批量导入数据到sqlite. 代码: f = web.input(bs_switch = {}) # bs_switch 为from表单file字段的namedata =[i.split( ...
- SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库
SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库 /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...
- java实现文件批量导入导出实例(兼容xls,xlsx)
1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...
随机推荐
- CodeForces - 158B.Taxi (贪心)
CodeForces - 158B.Taxi (贪心) 题意分析 首先对1234的个数分别统计,4人组的直接加上即可.然后让1和3成对处理,只有2种情况,第一种是1多,就让剩下的1和2组队处理,另外一 ...
- React ref的用法
React的ref有3种用法: 1. 字符串(已废弃)2. 回调函数3. React.createRef() (React16.3提供) 1. 字符串 最早的ref用法. 1.dom节点上使用,通过t ...
- [LOJ 6000]搭配飞行员
link 其实就是一道二分图匹配板子,我们建立$S$,$T$为源点与汇点,然后分别将$S$连向所有正驾驶员,边权为$1$,然后将副驾驶员与$T$相连,边权为$1$,将数据中给出的$(a,b)$,将$a ...
- OLTP与OLAP比较【转】
OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical ...
- ACE主动对象模式(1)
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/11/589168.html 主动对象模式用于降低方法执行和方法调用之间的耦合.该模式描述了另外 ...
- [ 转载]Tomcat7 catalina.out 日志分割
http://m.blog.csdn.net/blog/mark_qi/8864644 最近由于工作需要,tomcat 的catalina.out文件的不断扩大,导致系统磁盘空间边变小,而且管理也难于 ...
- udhcpd源码分析3--IP租赁管理
1:重要的结构体 全局链表的成员struct dhcpOfferedAddr *leases 记录了当前租赁出去的IP信息 /* leases.h */ struct dhcpOfferedAddr ...
- bzoj 1123 [POI2008]BLO Tarjan求割点
[POI2008]BLO Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1540 Solved: 711[Submit][Status][Discu ...
- IBM AppScan 安全漏洞问题修复(.net)
按问题类型分类的问题 使用 SQL 注入的认证旁路2 已解密的登录请求3 登录错误消息凭证枚举1 会话标识未更新2 跨站点请求伪造1 Missing "Content-Security-Po ...
- angularJs $resource自定义方法(待完善)
配置CompanyService var services = angular.module('liaoyuan.services'); services.factory('CompanyServic ...