Nodejs获取网络数据并生成Excel表格

Nodejs的模版中有很多关于Excel表格的,这里我简单介绍一下我使用过的一个模块的使用。

首先,先安装Excel的模块:

然后,在代码中引入模块:

最后,获取数据并写入Excel:

rush:js;"> 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 部分的代码

rush:js;"> 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内容

源码下载:获取网络数据并生成Excel表格

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...