Dajngo查询数据,查询出来之后生成Excel保存本地

class ExportExcel(APIView):
def post(self, request, *args, **kwargs):
export_time = request.data.get('startEndTime')
user_id = request.data.get('user_id')
if len(user_id) == 1 and 0 in user_id:
message_content = StatisticsMessageCount.objects.filter(
creat_time__range=(export_time[0] + " 00:00:00", export_time[1] + " 23:59:59"))
elif len(user_id) > 1 and 0 in user_id:
return JsonResponse({"code": 201, "message": "导出失败,请把全部选项去除!"})
else:
message_content = StatisticsMessageCount.objects.filter(user_id__in=user_id,
creat_time__range=(export_time[0] + " 00:00:00",
export_time[1] + " 23:59:59"))
wb = xlwt.Workbook(encoding='utf8')
sheet = wb.add_sheet('sheet', cell_overwrite_ok=True)
style_heading = xlwt.easyxf("""
font:
height 220;
align:
vert center,
horiz center;
pattern:
pattern solid,
fore-colour 0x16;
borders:
left thin,
right thin,
top thin,
bottom thin
""")
for i in range(0, len(message_content)):
sheet.col(i).width = 256 * 30
sheet.row(i).height = 20 * 80
sheet.write(0, 0, '序号', style_heading)
sheet.write(0, 1, '销售', style_heading)
sheet.write(0, 2, '地区', style_heading)
sheet.write(0, 3, 'Qustions', style_heading)
sheet.write(0, 4, 'Answer', style_heading)
sheet.write(0, 5, '解答人', style_heading)
data_row = 0
file_name = None
for i in message_content:
# 格式化datetime
data_row += 1
if len(user_id) > 1 or len(user_id) == 1 and 0 in user_id:
file_name = "KPI统计"
else:
file_name = i.answerer
sheet.write(data_row, 0, data_row)
sheet.write(data_row, 1, i.sales)
sheet.write(data_row, 2, i.area, )
sheet.write(data_row, 3, i.problem)
sheet.write(data_row, 4, i.answer)
sheet.write(data_row, 5, i.answerer, )
try:
import os
test_url = "http://127.0.0.1:8081"
test_path = str('/medias/weekly/{}.xlsx'.format(file_name))
ret = os.getcwd()
wb.save(os.getcwd() + pord_path)
return JsonResponse({"code": 200,
"fileName": "{}.xlsx".format(file_name),
"filePath": pord_url + pord_path })
except Exception as e:
print("异常: {}".format(e))
return JsonResponse({"code": 201, "message": "导出失败,请关闭当前本地电脑打开的相同Excel重新导出!"})

 

前端 react 

   exportExcel = () => {
const {startEndTime, selectedItems} = this.state
let currentUser = JSON.parse(localStorage.getItem('userInfo'));
const {dispatch} = this.props
if (startEndTime.length === 2) {
dispatch({
type: 'GetStaticsCount/exportExcelData',
payload: {
apiPath: '/wx/kpi_export/',
user_id: currentUser.weights > 0? selectedItems:[currentUser.id],
startEndTime
},
callback: response => { // 这块是关键, 根据后台api返回的文件路径,在本地可以正常a标签下载,在服务器上不可以,直接通过链接打开是文件流形式
axios.post(response.filePath, '', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded', //请求的数据类型为form data格式
},
'responseType': 'blob' //设置响应的数据类型为一个包含二进制数据的 Blob 对象,必须设置!!!
}).then(function (response) {
console.log(`数据流: ${response.data}`)
const blob = new Blob([response.data]);
const fileName = 'KPI统计.xlsx';
const linkNode = document.createElement('a');
linkNode.download = fileName; //a标签的download属性规定下载文件的名称
linkNode.style.display = 'none';
linkNode.href = URL.createObjectURL(blob); //生成一个Blob URL
document.body.appendChild(linkNode);
linkNode.click(); //模拟在按钮上的一次鼠标单击
URL.revokeObjectURL(linkNode.href); // 释放URL 对象
document.body.removeChild(linkNode);
}).catch(function (error) {
console.log(error);
});
}
})
} else {
message.error("请选择导出时间")
}
}

 

django 导出excel react下载 --- 导出并下载的更多相关文章

  1. C# 使用Epplus导出Excel [2]:导出动态列数据

    C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...

  2. C# 使用Epplus导出Excel [1]:导出固定列数据

    C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...

  3. 使用NPOI将数据库里信息导出Excel表格并提示用户下载

    使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 //mvc项目可以传多个id以逗号相隔的字符串 public ActionResult ...

  4. Java POI导出Excel不弹框选择下载路径(下载文件不选择下载路径,默认) Chrome

    在Chrome浏览器中,Java导出Excel文件时,浏览器弹出提示框,需要选择下载路径 在Chrome中的高级设置中,把“下载前询问每个文件的保存位置”去掉就解决了 DEEPLOVE(LC)

  5. JAVA 导出 Excel, JS 导出 Excel

    本介绍两种Excle导出方法: JAVA 导出 Excle, JS 导出 Excle 1, js 根据 html 页面的 table > tr > td 标签导出 js代码: //导出 v ...

  6. C# NPOI导出Excel和EPPlus导出Excel比较

    系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...

  7. Powerdesigner 导出Excel格式数据字典 导出Excel格式文件

    版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...

  8. POI实现导出Excel和模板导出Excel

    一.导出过程 1.用户请求导出 2.先访问数据库,查询需要导出的结果集 3.创建导出的Excel工作簿 4.遍历结果集,写入工作簿 5.将Excel已文件下载的形式回复给请求客户端 二.具体实现(截取 ...

  9. C# NPOI导出Excel和EPPlus导出Excel

    转自:http://www.cnblogs.com/tanpeng/p/6155749.html 系统中经常会使用导出Excel的功能.之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到 ...

  10. JXLS导出Excel(模板导出)

    1.导包 在pom.xml中加入依赖如下: <dependency> <groupId>org.jxls</groupId> <artifactId>j ...

随机推荐

  1. getInstance()得理解

    使用getInstance()方法的原因及作用 https://www.cnblogs.com/roadone/p/7977544.html 使用getInstance()方法的原因及作用 https ...

  2. 3D高清电商购物小图标图片_在线商城三维icon图标素材大全

    3D高清电商购物小图标图片_在线商城三维icon图标素材大全

  3. 通俗易懂的JS之Proxy

    与掘金文章同步,地址:https://juejin.cn/post/6964398933229436935 什么是代理模式 引入一个现实生活中的案例 我们作为用户需要去如何评估一个房子的好坏.如何办理 ...

  4. [bug] vue cli 部署在 springboot中报404

    复制资源时,在static目录下新建了一个static目录,估计是引起了spring解析的混乱,改为one后即可正常访问 参考 https://www.cnblogs.com/qianjinyan/p ...

  5. HTML中的全局属性

    一.全局属性和局部属性 每种元素都有自己规定的属性,这种属性成为局部属性.还有另外一种属性,他可以用来配置所有元素的共有行为,这种属性成为称为全局属性.全局属性可以用在任何一个元素身上,但是不一定会带 ...

  6. Linux命令nohup实现命令后台运行并输出到或记录到日志文件

    Linux命令nohup实现命令后台运行并输出到或记录到日志文件 导读 我们在调试程序的时候,免不了要去抓一些 log ,然后进行分析.如果 log 量不是很大的话,那很简单,只需简单的复制粘贴就好. ...

  7. stress工具使用指南和结果分析(好好好测试通过)

    stress工具使用指南和结果分析 佛心看世界关注 0.1152019.05.13 09:17:35字数 547阅读 1,112 #stress `stress' imposes certain ty ...

  8. 046.Python协程

    协程 1 生成器 初始化生成器函数 返回生成器对象,简称生成器 def gen(): for i in range(10): #yield 返回便能够保留状态 yield i mygen = gen( ...

  9. linux进阶之网络技术管理

    本节内容 1.      网络七层模型 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 2.  TCP/UDP (1)TCP面向连接,可靠传输,消耗系统资源比较多,传输速度较慢,但是数据传 ...

  10. 用户从控制台输入n个整数,比较并输出其中的最大值和最小值

    package judgment;import java.util.Scanner;/** * 用户输入n个整数,找出最大值和最小值并打印输出 */public class Judgment { pu ...