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的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
nodejs教程之异步I/O
Nov 21 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
php使用escapeshellarg时中文被过滤的解决方法
2016/07/10 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
JavaScript 事件对象的实现
2009/07/13 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
AngularJS语法详解
2015/01/23 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
EasyUI创建对话框的两种方式
2016/08/23 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
js实现简单的打印表格
2020/01/15 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
Python学习笔记(二)基础语法
2014/06/06 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
python实现任意位置文件分割的实例
2018/12/14 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
python urllib爬虫模块使用解析
2019/09/05 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
人力资源管理求职信
2014/08/07 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
2014年消防工作总结
2014/11/21 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
学术会议通知范文
2015/04/15 职场文书
教师节大会主持词
2015/07/06 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书