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 Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
php时间计算相关问题小结
2016/05/09 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
js如何打印object对象
2015/10/16 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
jquery实现树形菜单完整代码
2015/12/29 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
python 图片验证码代码分享
2012/07/04 Python
跟老齐学Python之重回函数
2014/10/10 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
用Python写一个自动木马程序
2019/09/17 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
主持人婚宴答谢词
2014/01/28 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
售票员岗位职责
2015/02/15 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
2015暑假假期总结
2015/07/13 职场文书
会议简报格式范文
2015/07/20 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书