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


Posted in NodeJs onMarch 31, 2020

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

首先,先安装Excel的模块:

npm install node-xlsx

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

var xlsx = require('node-xlsx');

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

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 部分的代码:

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表格

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

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

NodeJs 相关文章推荐
nodejs读取memcache示例分享
Jan 02 NodeJs
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
NodeJS http模块用法示例【创建web服务器/客户端】
Nov 05 NodeJs
Nodejs学习item【入门手上】
May 05 #NodeJs
NodeJS的Promise的用法解析
May 05 #NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 #NodeJs
Nodejs Stream 数据流使用手册
Apr 17 #NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 #NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 #NodeJs
Nodejs如何搭建Web服务器
Mar 28 #NodeJs
You might like
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
在同一窗体中使用PHP来处理多个提交任务
2008/05/08 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
offsetParent 算法分析
2010/04/05 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
Python出现segfault错误解决方法
2016/04/16 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
Python异常处理知识点总结
2019/02/18 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
Python打印不合法的文件名
2020/07/31 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
职称评定自我鉴定
2014/03/18 职场文书
优秀广告词大全
2014/03/19 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
教导处教学工作总结
2015/08/12 职场文书
队列队形口号
2015/12/25 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL