node.js只要安裝好excel-export插件之后就可以很方便的將所需要的數據導出為excel表格。
1,在項目目錄下安裝excel-export插件
npm install excel-export
2,頁面
<button id="exportExcel" class="btn btn-warning">合同導出</button>
js:$("#exportExcel").click(function(){
console.info("exportExcel");
var id = $("#contractID").val();
console.info("id:"+id);
var url = "/api/contracts/exportExcel/" + id;
console.info(url);
window.location = url;//這里不能使用get方法跳轉,否則下載不成功
});
3,router.js
var nodeExcel = require('excel-export');//關聯excel-export模塊
var contract = require('../app/controller/contract');
app.get('/api/contracts/exportExcel/:id',contract.exportExcel);//跳轉到后台
4,后台
exports.exportExcel = function(req, res) {
/**靜態數據
*
var conf ={};
conf.cols = [
{caption:'string', type:'string'},
{caption:'date', type:'date'},
{caption:'bool', type:'bool'},
{caption:'number', type:'number'}
];
conf.rows = [
['pi', (new Date(2013, 4, 1)).getJulian(), true, 3.14],
["e", (new Date(2012, 4, 1)).getJulian(), false, 2.7182]
];
var result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.openxmlformats');
res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx");
res.end(result, 'binary');
**/
console.log("req.params.id:"+req.params.id);
var queryId = req.params['id']+'';
var contract = new Contract();
var conf = {};
conf.cols = [
{caption:'采購編號', type:'string'},
{caption:'合同名稱', type:'string'},
{caption:'甲方', type:'string'},
{caption:'甲方部門', type:'string'},
{caption:'乙方', type:'string'},
{caption:'乙方部門', type:'string'},
{caption:'簽訂日期', type:'date'},
{caption:'中標日期', type:'date'},
{caption:'結束日期', type:'date'},
{caption:'銷售負責人', type:'string'},
{caption:'商務負責人', type:'string'},
{caption:'業績歸屬部門', type:'string'},
{caption:'金額', type:'number'},
{caption:'狀態', type:'string'}
];
var getId = {
_id: queryId
};
contract.checkIdData(getId,function(data){
console.log("lijuanxia");
console.log("data.lentht"+data.length);
var m_data = [];
var arry = [data[0].myId, data[0].name, data[0].partyA, data[0].partyADept, data[0].partyB, data[0].partyBDept, data[0].signDate, data[0].beginDate, data[0].endDate, "銷售負責人", "商務負責人", "業績歸屬部門", data[0].amount, data[0].state ];
m_data[0] = arry;
conf.rows = m_data;
var result = nodeExcel.execute(conf);
res.setHeader('Content-Type', 'application/vnd.openxmlformats');
res.setHeader("Content-Disposition", "attachment; filename=" +data[0].name+ ".xlsx");
res.end(result, 'binary');
});
}