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. Jsp电子商务之七 订单篇2

    从View页面,点击超链接查询订单,进入到控制器 OrderlistServlet package com.cart.web; import java.io.IOException; import j ...

  2. Codeforces Round #169 (Div. 2) A水 B C区间更新 D 思路

    A. Lunch Rush time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  3. oracle xml操作

      /*=====================生成\修改xml========================= */ --xmlelement多个标签层级 SELECT XMLELEMENT(& ...

  4. c# MD5盐值加密

    using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptograph ...

  5. C# 枚举的初始化

    3.2 枚举类型(Enum types)的默认值 对于枚举类型(Enum types),.NET会自动将字面值0(literal 0)隐式地转换为对应的枚举类型. 3.2.1 有一个0值成员 如果枚举 ...

  6. UVA 1645 Count

    https://vjudge.net/problem/UVA-1645 题意:有多少个n个节点的有根树,每个深度中所有节点的子节点数相同 dp[i] 节点数为i时的答案 除去根节点还有i-1个点,如果 ...

  7. PAT (Top Level)1002. Business DP/背包

    As the manager of your company, you have to carefully consider, for each project, the time taken to ...

  8. Redis .net 客户端 分布式锁

    关于Redis分布式锁的参考链接:http://redis.io/topics/distlock. 在我们项目中,之前琢磨用:ServiceStack.Redis,发现ServiceStack.Red ...

  9. android抽屉导航的设计准则

    我阅读了google官方的关于抽屉导航的设计准则,这可以给我带来什么帮助?最起码,我可以知道,抽屉导航适用在什么场景中,使用它时要注意什么事项.App的设计是有规则可以依据的,比如,使用抽屉导航时,是 ...

  10. 【NOIP】提高组2015 神奇的幻方

    [算法]模拟 #include<cstdio> ; int n,a[maxn][maxn]; int main() { scanf("%d",&n); ,y=n ...