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 相关文章推荐
使用forever管理nodejs应用教程
Jun 03 NodeJs
nodejs中使用monk访问mongodb
Jul 06 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP4.04简明安装
2006/10/09 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
php命令行模式代码实例详解
2021/02/26 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
JavaScript显式数据类型转换详解
2019/03/18 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
Tornado 多进程实现分析详解
2018/01/12 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
django缓存配置的几种方法详解
2018/07/16 Python
Python实现的建造者模式示例
2018/08/06 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
python实现图片中文字分割效果
2019/07/22 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
办公室内勤岗位职责范本
2013/12/09 职场文书
大学运动会通讯稿
2014/01/28 职场文书
敬老月活动总结
2014/08/28 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
模范班主任事迹材料
2014/12/17 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
Python OpenCV实现图像模板匹配详解
2022/04/07 Python