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 Web应用监听sock文件实例
Feb 18 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
NodeJS使用七牛云存储上传文件的方法
Jul 24 NodeJs
nodeJS微信分享
Dec 20 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
非常好的js代码
2006/06/27 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
[01:16:50]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第一场 3月7日
2021/03/11 DOTA
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python友情链接检查方法
2015/07/08 Python
Python 登录网站详解及实例
2017/04/11 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
对python中的argv和argc使用详解
2018/12/15 Python
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
管理科学大学生求职信
2013/11/13 职场文书
数学系个人求职信范文
2014/01/30 职场文书
会计岗位职责范本
2015/04/02 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
聘用合同范本
2015/09/21 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
Python上下文管理器Content Manager
2021/06/26 Python