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中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
Nodejs实战心得之eventproxy模块控制并发
Oct 27 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
手把手教你把nodejs部署到linux上跑出hello world
Jun 19 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
详解nodejs内置模块
May 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
PHP 查找字符串常用函数介绍
2012/06/07 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
基于Flowplayer打造一款免费的WEB视频播放器附源码
2015/09/06 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
2016/01/24 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python pandas实现excel转为html格式的方法
2018/10/23 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python中取绝对值简单方法总结
2020/07/24 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
灵泰克Java笔试题
2016/01/09 面试题
村长贪污检举信
2014/04/04 职场文书
高中班主任评语
2014/12/30 职场文书
婚宴主持词
2015/06/30 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python