1.使用技术

  • node -koa
  • vue

2.上代码

前端请求

先配置vue脚手架里的request请求,在响应请求前加入以下判断

 const res = response.data// 处理post下载if (response.data.type === 'application/vnd.openxmlformats') {return response.data}

exportArticleStat({'cids':cids}).then(res=>{const content = res;const blob = new Blob([content]);const fileName = "推送任务数据分析导出.xlsx";if ("download" in document.createElement("a")) { // 非IE下载const elink = document.createElement("a");elink.download = fileName;elink.style.display = "none";elink.href = URL.createObjectURL(blob);document.body.appendChild(elink);elink.click();URL.revokeObjectURL(elink.href); // 释放URL 对象document.body.removeChild(elink);} else { // IE10+下载navigator.msSaveBlob(blob, fileName);}
})

后端请求处理:注意在响应前要加以下响应头

router.post('/mp/exportArticleStat', async (ctx, next) => {await Push.exportArticleStat(ctx).then(function(res) {ctx.set('Content-Type', 'application/vnd.openxmlformats');ctx.set("Content-Disposition", "attachment; filename=" + "terminal.xlsx");ctx.body = res;}).catch(err => {ctx.body = {code: -1,msg: err}})
})

以下为下载excel的接口方法

/*** 图文分析数据导出*/
const exportArticleStat = function(ctx){return new Promise(function (resolve, reject) {let cids = ctx.request.body.cids;async.map(cids,function (item,callback) {articleAnalysis(item.cid).then(res=>{callback(null,{"pushname":item.pushname,"data":res})})},function (err,results) {excelUtils.articleStatExcel(results).then(res=>{resolve(res)})})})
}
var xlsx = require('node-xlsx');const articleStatExcel = function(param){return new Promise(function (resolve, reject) {let excelData = []for(let items of param){let data = []let hearders = ['微信号','推送时间','截至时间','标题','送达人数','阅读人数','阅读次数','原文阅读次数','原文阅读次数','分享人数','分享次数','收藏人数','收藏次数',]data.push(hearders)//处理查询clickhouse 的数据for (let item of items.data) {for(let it of item.details){let arr = new Array()arr.push(item.platform)arr.push(it.time)arr.push(it.stat_date)arr.push(it.title)arr.push(it.target_user)arr.push(it.int_page_read_user)arr.push(it.int_page_read_count)arr.push(it.ori_page_read_user)arr.push(it.ori_page_read_count)arr.push(it.share_user)arr.push(it.share_count)arr.push(it.add_to_fav_user)arr.push(it.add_to_fav_count)data.push(arr)}}excelData.push({name: items.pushname,data: data})}var buffer = xlsx.build(excelData)resolve(buffer)})
}

vue POST 请求方式下载excel文件相关推荐

  1. php通过ajax下载文件,PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件.分享给大家供大家参考,具体如下: 项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token ...

  2. PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件.分享给大家供大家参考,具体如下: 项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token ...

  3. vue使用xlsx插件下载excel文件

    1.安装xlsx插件 cnpm install xlsx 2.新建xlsx.js文件,添加以下代码,放在plugins或utils插件文件夹下 // 下载excel功能 import XLSX fro ...

  4. Vue 下载 Excel 文件

    Vue 下载 Excel 文件 Vue前端将List列表下载为Excel文件 安装依赖包 首先前端将List列表生成Excel文件需要下载几个依赖包. npm install -S file-save ...

  5. VUE项目兼容IE11 遇见的问题 SyntaxError: strict 模式下不允许一个属性有多个定义;ie11下载excel文件需要用navigator.msSaveBlob

    最近要把vue项目兼容ie11 前面引入bable等一系列操作就不说了,下面说一下具体具体的问题 1  如图所示  SyntaxError: strict 模式下不允许一个属性有多个定义, 点击sta ...

  6. IE中点击链接下载EXCEL文件直接以乱码方式打开解决

    我需要在页面上通过javascript控制,点击一个链接下载excel文件模板,总觉得方法都写对了,可每次点击都是新开一个窗口,显示的全是乱码.几日以来一直被这个问题困扰,今天无意中得知这个方法,试了 ...

  7. java使用jxl生成excel表格,jsp使用js下载excel文件xls

    java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...

  8. react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

  9. java文件流下载excel_React获取Java后台文件流下载Excel文件

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

  10. 在vue中把数据导出Excel文件

    在vue中把数据导出Excel文件 第一次尝试写文章 在vue中把数据导出成Excel格式的文件,话不多,上代码: 第一步我们要先安装几个集成的插件 npm install -S file-saver ...

最新文章

  1. Java网络编程笔记1
  2. 宏基ec471g黑苹果_宏碁acer ec-471g 黑苹果配置教程
  3. Hadoop pipes设计原理
  4. [js] innerHTML有什么缺点?
  5. c语言交通灯程序闪烁,用C语言编写的交通灯程序
  6. Python中的sys模块
  7. 深度相机_深度相机(TOF)的工作原理
  8. [贪心][模拟] Jzoj P5811 简单的填数
  9. 终于来了,超详细手眼标定原理与实战视频教程
  10. 未解决:configure: error: XCode tool ‘metal‘ neither found in path nor with xcrunchecking for metal...
  11. 软件工程经济学课后答案
  12. Python-ZFJObsLib完美生成iOS垃圾代码
  13. 360加固签名验证_360加固需要签名和密码
  14. DEAP2.1 使用方法(运筹学)
  15. 比赛竞猜投注类问题概率模型
  16. ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得NUMBER
  17. Linux 引导过程与服务控制
  18. 加拿大教授 武 计算机,加拿大卡尔加里大学Yingxu Wang教授访问计算机学院
  19. 构建基于MX1919的超声波阵列驱动板
  20. linux手动连接网络打印机驱动_中兴新支点Linux操作系统添加网络打印机的方法...

热门文章

  1. 生物信息学反卷积论文阅读
  2. 大话西游服务器维护多长时间,《大话西游3》2010-9-21服务器停机维护公告(二)...
  3. mhl数据线_【教程】利用MHL转HDMI数据线,实现手机同屏到X50air
  4. 解决cannot find grldr in all devices问题
  5. nginx 安装到Java代码上传图片利用ftp过程遇到的问题总结
  6. Day754.Pika键值对数据库 -Redis 核心技术与实战
  7. 9.1练习题3 梦中的统计 题解
  8. Mongo的基本shell操作(大全)
  9. 算法注册机编写扫盲---第四课
  10. Python模拟用户自动登陆网易126邮箱