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的模块写法入门(实例代码)
Mar 07 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 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
php 信息采集程序代码
2009/03/17 PHP
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
php 无法载入mysql扩展
2010/03/12 PHP
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
详解Python中for循环的使用方法
2015/05/14 Python
python妹子图简单爬虫实例
2015/07/07 Python
python使用RNN实现文本分类
2018/05/24 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
python Tkinter版学生管理系统
2019/02/20 Python
使用Python创建简单的HTTP服务器的方法步骤
2019/04/26 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
保安自我鉴定范文
2013/12/08 职场文书
大学生的四年学习自我评价
2013/12/13 职场文书
个人求职信范文分享
2014/01/31 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
一年级评语大全
2014/04/23 职场文书
八项规定整改方案
2014/10/01 职场文书
中学校园广播稿
2015/08/18 职场文书