NodeJs怎么实现下载Excel文件功能?

发布时间:2024-03-13
nodejs怎么实现下载excel文件功能?下面本篇文章就来给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
【视频教程推荐:node js教程 】
nodejs作为一门新的语言,报表功能也不是十分完善。
(1).js-xlsx : 目前 github 上 star 数量最多的处理 excel 的库,支持解析多种格式表格xlsx / xlsm / xlsb / xls / csv,解析采用纯js实现,写入需要依赖nodejs或者filesaver .js实现生成写入excel,可以生成子表excel,功能强大,但上手难度稍大。不提供基础设置excel表格api例单元格宽度,文档有些乱,不适合快速上手;
https://github.com/sheetjs/js-xlsx
(2).node-xlsx : 基于node.js解析excel文件数据及生成excel文件,仅支持xlsx格式文件;
https://github.com/mgcrea/node-xlsx
(3).excel-parser : 基于node.js解析excel文件数据,支持xls及xlsx格式文件,需要依赖python,太重不太实用;
https://github.com/leftshifters/excel-parser
(4).excel-export : 基于node.js将数据生成导出excel文件,生成文件格式为xlsx,可以设置单元格宽度,api容易上手,无法生成worksheet字表,比较单一,基本功能可以基本满足;
https://github.com/functionscope/node-excel-export
(5).node-xlrd : 基于node.js从excel文件中提取数据,仅支持xls格式文件,不支持xlsx,有点过时,常用的都是xlsx 格式。
nodejs刚出来那几年开发人员写了很多node依赖库,但是大部分现在处于不维护状态。
现在还在持续更新的只有node-xlsx excel-export推荐使用,js-xlsx作为一个大而全的基础库(虽然现在也不在更行了,此库最大的问题是api十分不友好,学习曲线高)有能力的项目组可以进一步封装,。
本篇为一个简单的下载的demo ,就简单使用excel-export,
var express = require('express');var router = express.router();var server = express();server.use('/api', router); var nodeexcel = require('excel-export'); const disablelayout ={layout: false}; router.get('/test', function(req, res, next) { res.json({ code:200 }) }) // disable interface layout.hbs user config layout: falserouter.get('/exportexcel/:id', function(req, res, next) { var conf ={}; conf.stylesxmlfile = "styles.xml"; conf.name = "mysheet"; conf.cols = [{ caption:'string', type:'string', beforecellwrite:function(row, celldata){ return celldata.touppercase(); }, width:300 },{ caption:'date', type:'date', beforecellwrite:function(){ var origindate = new date(date.utc(1899,11,30)); return function(row, celldata, eopt){ console.log((celldata - origindate)); if (eopt.rownum%2){ eopt.styleindex = 1; } else{ eopt.styleindex = 2; } if (celldata === null){ eopt.celltype = 'string'; return 'n/a'; } else return (celldata - origindate) / (24 * 60 * 60 * 1000); } }() },{ caption:'bool', type:'bool' },{ caption:'number', type:'number' }]; conf.rows = [ ['pi', '2013-12-5', true, 3.14], ["e", new date(2012, 4, 1), false, 2.7182], ["m&m<>'", new date(date.utc(2013, 6, 9)), false, 1.61803], ["null date", null, true, 1.414] ]; var result = nodeexcel.execute(conf); res.setheader('content-type', 'application/vnd.openxmlformats'); res.setheader("content-disposition", "attachment; filename=" encodeuricomponent("导出列表") ".xlsx"); res.end(result, 'binary');}); router.get('/exportmultisheetexcel/:id', function(req, res, next) { var confs = []; var conf = {}; conf.cols = [{ caption: 'string', type: 'string' }, { caption: 'date', type: 'date' }, { caption: 'bool', type: 'bool' }, { caption: 'number 2', type: 'number' }]; conf.rows = [['hahai', (new date(date.utc(2013, 4, 1))).oadate(), true, 3.14], ["e", (new date(2012, 4, 1)).oadate(), false, 2.7182], ["m&m<>'", (new date(date.utc(2013, 6, 9))).oadate(), false, 1.2], ["null", null, null
上一个:苗木腹接法
下一个:怎么删除健康码信息(鄂汇办怎么删除健康码)

防爆静电控制装置
花毛茛的病虫害识别和防治
白芍栽培技术
国槐苗木烂皮病
丝光钡值
RTT032700FTP现货采购,参数及规格书
草地螟防治策略
医院污水消毒方法-臭氧高氧化消毒技术
这个时代我们为什么要喝茶
连接手机的u盘怎样用手机打开(手机连接u盘要打开什么开关)