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打包工具整合到鼠标右键的方法
May 11 NodeJs
轻松创建nodejs服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
NodeJS配置HTTPS服务实例分享
Feb 19 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 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学习之PHP运算符
2006/10/09 PHP
模仿OSO的论坛(三)
2006/10/09 PHP
PHP array操作10个小技巧分享
2011/06/23 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
php获取excel文件数据
2017/04/21 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
Jquery知识点三 jquery表单对象操作
2011/01/17 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
纯js实现画一棵树的示例
2017/09/05 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[01:17]辉夜杯战队访谈宣传片—EHOME
2015/12/25 DOTA
[47:22]Mineski vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python返回昨天日期的方法
2015/05/13 Python
python运行时间的几种方法
2016/06/17 Python
Python import与from import使用及区别介绍
2018/09/06 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
小学毕业感言150字
2014/02/05 职场文书
人事专员职责
2014/02/22 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
golang的文件创建及读写操作
2022/04/14 Golang