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 24 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
使用vs code开发Nodejs程序的使用方法
Sep 21 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
解析如何用php screw加密php源代码
2013/06/20 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
jQuery 获取URL参数的插件
2010/03/04 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
javascript打印输出json实例
2013/11/11 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
用vue写一个日历
2020/11/02 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
python字符串string的内置方法实例详解
2018/05/14 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
服务员岗位职责
2014/01/29 职场文书
设计师个人求职信范文
2014/02/02 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
小组口号大全
2014/06/09 职场文书
工作失职自我检讨书
2015/05/05 职场文书
雷锋的故事观后感
2015/06/10 职场文书
详解Laravel服务容器的优势
2021/05/29 PHP
Python实现自动玩连连看的脚本分享
2022/04/04 Python