自己做博客网站和百家号的区别,网站建设丶金手指花总12,网上推广,h5游戏在线玩nodejs作为一门新的语言#xff0c;报表功能也不是十分完善。 (1).js-xlsx : 目前 Github 上 star 数量最多的处理 Excel 的库#xff0c;支持解析多种格式表格XLSX / XLSM / XLSB / XLS / CSV#xff0c;解析采用纯js实现#xff0c;写入需要依赖nodejs或者FileSaver .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: false
router.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;} elsereturn (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],[MM, 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], [MM, (new Date(Date.UTC(2013, 6, 9))).oaDate(), false, 1.2], [null, null, null, null]];for (var i 0; i 3; i) {conf JSON.parse(JSON.stringify(conf)); //cloneconf.name sheeti;confs.push(conf);}var result nodeExcel.execute(confs);res.setHeader(Content-Type, application/vnd.openxmlformats);res.setHeader(Content-Disposition, attachment; filename Report.xlsx);res.end(result, binary);
});var serverserver.listen(8080,function(){console.log(8080)
}) 3.excel-export 提供了4种类型的数据格式数字时间真假默认字符串 cols可以为设置列类型的 caption为列名(会填充第一行的内容),type为列数据类型,beforeCellWrite可以在填充之前对数据进行逻辑处理width可以定义宽带 rows为一个二位数组直接按照行列方式填充excel的内容 name定义sheet的名字 值得注意的时候excel-export如果需要定义excel的默认格式需要引用一个excel的格式头这个头定义在styles.xml中这个文件可以在node_modules/example/styles.xml中拷贝的项目对应目录 例子用的是根目录所以我们需放在根目录不然就会报找不到这个文件。 实际开发中有时候excel的文件导出时要用中文这时候要设置下header和格式化中文即可 res.setHeader(Content-Type, application/vnd.openxmlformats;charsetutf-8);res.setHeader(Content-Disposition, attachment; filename encodeURIComponent(导出列表).xlsx); 转载于:https://www.cnblogs.com/yiyi17/p/8466089.html