nodejs Excel的下载导出
2017-06-06 10:18
477 查看
好像有一段时间没有写过博客了,虽然写得很菜,但是我会尽量的写的通熟易懂!海涵海涵...
这次跟我要分享一个干货使用nodejs怎么导出Excel表格或者说下载Excel表格,这是我在工作中用到的,觉得网上的资料比较少,所以我也来补充一下。
在写代码之前呢我们需要做一个准备工作,把需要下载的表格的模板做好,可以到网上找些资料,这个还是很简单滴,如图
1、首先在前台提交表单,然后会通过action上的地址跳转到后台的post方法里面
/**
*这里的input主要是用来把值传送到后台的,根据你的情况取舍
*/
2、第2步就进入了后台,不要一看到这么多代码就烦了,其实很简单的,只要理解你就会了,看注释
//这些是要导进来的头文件
到这里也就大功告成了,有什么问题可以提醒我,再优化,谢谢
1.0v排版-2017-06-13
1.1v排版-2017-07-18
这次跟我要分享一个干货使用nodejs怎么导出Excel表格或者说下载Excel表格,这是我在工作中用到的,觉得网上的资料比较少,所以我也来补充一下。
在写代码之前呢我们需要做一个准备工作,把需要下载的表格的模板做好,可以到网上找些资料,这个还是很简单滴,如图
1、首先在前台提交表单,然后会通过action上的地址跳转到后台的post方法里面
/**
*这里的input主要是用来把值传送到后台的,根据你的情况取舍
*/
<form method='post' action='http://localhost:8000/pro_excel/excel'> <input hidden name="paramModel" value={this.props.paramModel} /> <input hidden name="paramTime" value={this.props.paramTime} /> <Button style={{marginTop: "-10"}} type="primary" htmlType="submit">导出Excel <Icon type="download" /></Button> </form>
2、第2步就进入了后台,不要一看到这么多代码就烦了,其实很简单的,只要理解你就会了,看注释
//这些是要导进来的头文件
var ejsExcel = require('ejsexcel'); var fs = require('fs'); var express = require('express'); var router = express.Router(); var exlBuf = fs.readFileSync(__dirname + "/singleProduct/pro_sales.xlsx"); //这是跳转到后台就会进入的post方法 router.post('/excel', function (req, res) { //这两行主要是获取你从前台传过来的值 let modelt = req.body.paramModel; let queryDate = req.body.paramTime; //下面这一段呢你可以不必理会,这是mongodb的查询语句,因为我这里用到的是mongodb数据库,你可以根据你的情况使用MySQL等其他数据库, 这里只是查询你需要的数据,记住了只是查询你需要的数据的方法 let or = jsonField('$or', combineObjectsToArray( jsonField('pro_d_name_s', splitStringToArray(modelt, ",")) )) let condition = { ...jsonField('pro_d_saledate', queryDate), ...jsonField('pro_d_quantity', { ...jsonField('$ne', 0) }), } let sort = jsonField('pro_d_price_r', -1); pro_d_model.find({ ...or, ...condition }).sort(sort).exec(function (err, doc) { let doc2 = []; if (doc !== []) { for (var key in doc) { doc2.push({ code: doc[key].pro_d_code, name_s: doc[key].pro_d_name_s, price: doc[key].pro_d_price, quantity: doc[key].pro_d_quantity, price_r: doc[key].pro_d_price_r, price_t: doc[key].pro_d_price_t, quantity_m: doc[key].pro_d_quantity_m, quantity_y: doc[key].pro_d_quantity_y, quantity_p: doc[key].pro_d_quantity_p, price_r_m: doc[key].pro_d_price_r_m, price_r_y: doc[key].pro_d_price_r_y, price_r_p: doc[key].pro_d_price_r_p, stock: doc[key].pro_d_stock }); } } //调用下面的方法 exportExcel(queryDate, null, doc2, res); }) } function exportExcel(paramStartTime, paramEndTime, doc, res) { //这个data是模板上的标题,也就是你表格上面的标题 let data; if(paramEndTime === null) { data = [[{ "saledate": "单品分析-销售概况(日期" + paramStartTime + ")" }], [doc]]; }else { data = [[{ "saledate": '单品分析-销售概况(日期' + paramStartTime + "至" + paramEndTime + ')' }], [doc]]; } //excelName是你下载Excel的文件标题 let excelName = data[0][0].saledate; ejsExcel.renderExcelCb(exlBuf, data, function (err, exlBuf2) { if (err) { console.error(err); return;} fs.writeFileSync(__dirname + "/test2.xlsx", exlBuf2); res.setHeader('Content-disposition', "attachment; filename=" + encodeURIComponent(excelName) + ".xlsx"); res.setHeader('Content-type', 'charset=utf-8'); var filestream = fs.createReadStream(__dirname + "/test2.xlsx"); filestream.on('data', function (chunk) { res.write(chunk) }); filestream.on('end', function () { res.end() }); }); }
到这里也就大功告成了,有什么问题可以提醒我,再优化,谢谢
1.0v排版-2017-06-13
1.1v排版-2017-07-18
相关文章推荐
- js 导出excel,设置下载的标题
- 用node.js写一个简单爬虫,并将数据导出为 excel 文件
- js导出excel到客户端下载
- JS导出excel设置下载的标题/与angular结合冲突
- node.js导出excel ,csv
- node.js读取Excel数据(下载图片)的方法示例
- 在node.js中导出excel
- JS实现导出Excel的五种方法详解【附源码下载】
- node.js 导出excel
- js 导出excel,设置下载的标题
- node.js导出excel表格----excel-export
- datagrid数据导出到excel文件给客户端下载的几种方法
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- 使用ADO.net将数据导出到Excel并提供下载[转]
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- 使用ADO.net将数据导出到Excel并提供下载
- datagrid数据导出到excel文件给客户端下载的几种方法 (转)
- datagrid数据导出到excel文件给客户端下载的几种方法
- datagrid数据导出到excel文件给客户端下载的几种方法
- datagrid数据导出到excel文件给客户端下载的几种方法(转)