Nodejs获取网络数据并生成Excel表格
内容摘要
Nodejs的模版中有很多关于Excel表格的,这里我简单介绍一下我使用过的一个模块的使用。
首先,先安装Excel的模块:
npm install node-xlsx
然后,在代码中引入模块:
var xlsx = req
首先,先安装Excel的模块:
npm install node-xlsx
然后,在代码中引入模块:
var xlsx = req
文章正文
Nodejs的模版中有很多关于Excel表格的,这里我简单介绍一下我使用过的一个模块的使用。
首先,先安装Excel的模块:
npm install node-xlsx
然后,在代码中引入模块:
var xlsx = require('node-xlsx');
最后,获取数据并写入Excel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | var fs = require ( 'fs' ); var xlsx = require ( 'node-xlsx' ); var ajax = require ( './ajax.js' ); start(); function start() { ajax.ajax({ url: "http://yuntuapi.amap.com/datamanage/data/list" , type: "GET" , data: { tableid: "XXX" , //53eacbe4e4b0693fbf5fd13b key: "XXX" }, success: function (data) { var myDatas = []; var datas = (JSON.parse(data)).datas; var count = 0; for ( var index in datas) { var account = datas[index]; var colum = []; var names; if (index == 0) { names = []; } for ( var index2 in account) { if (index == 0) names.push(index2); var value = account[index2]; if (value == null) { value = "" ; } colum.push(value); // console.log(account); } if (index == 0) { myDatas.push(names); } myDatas.push(colum); if (index == datas.length - 1) { writeXls(myDatas); } } console.log(myDatas.length); } }); } function writeXls(datas) { var buffer = xlsx.build({worksheets: [ { "name" : "Group" , "data" : datas} ]}); fs.writeFileSync( "Group.csv" , buffer, 'binary' ); } function parseXls() { var obj = xlsx.parse( 'myFile.xlsx' ); console.log(obj); } |
Ajax 部分的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | var https = require ( "https" ); var http = require ( "http" ); var Url = require ( "url" ); var querystring = require ( 'querystring' ); // 默认值 var defaultSetting = { // 如果返回false可以取消本次请求 beforeSend: function (req) { }, complete: function (req) { }, data: '' , // Object, String dataType: 'JSON' , error: function () { }, headers: {}, // {k:v, ...} statusCode: {}, success: function (data) { }, timeout: 10, type: 'GET' , // GET, POST url: "www.baidu.com" }; /** * */ function ajax(settings) { // ajaxlbs.js(settings) if (typeof settings === "object" ) { // 处理默认值继承 // todo ... for (key in defaultSetting) { if (settings[key] == null) { settings[key] = defaultSetting[key]; } } } var params = Url.parse(settings.url, true); // params 解析出来的参数如下 // { // "protocol":"http:", // "slashes":true, // "host":"localhost:3000", // "port":"3000", // "hostname":"localhost", // "href":"http://localhost:3000/?d=1", // "search":"?d=1", // "query":{"d":"1"}, // "pathname":"/", // "path":"/?d=1" // } var options = { host: params.hostname, port: params.port || 80, path: params.path, method: settings.type }; if (settings.data != null) { options.path += "?" for ( var key in settings.data) { options.path = options.path + "&" + key + "=" + settings.data[key]; } console.log(options.path); } var httpUnity = http; if (params.protocol == "https:" ) { options.port = 443; var httpUnity = https; } var req = httpUnity.request(options, function (res) { var data = '' ; res.on( 'data' , function (chunk) { data += chunk; }).on( 'end' , function () { if (settings.dataType === "json" ) { try { data = JSON.parse(data); } catch (e) { data = null; } } settings.success(data); settings.complete(req); }); }).on( 'error' , function (e) { settings.error(e); }); // if (typeof settings.beforeSend === "function") { // if (!settings.beforeSend(req)) { // settings.complete(req); // req.end(); // return false; // } // } if (settings.type === "POST" ) { var dataStr = querystring.stringify(settings.data); req.setHeader( "Content-Length" , dataStr.length); req.write(dataStr); } req.setTimeout(settings.timeout); req. end (); } exports.ajax = ajax; |
生成的Excel内容:
源码下载:Nodejs获取网络数据并生成Excel表格
以上就是本文的全部内容,希望对大家的学习有所帮助。
代码注释