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 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 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/01 无线电
PHP语法速查表
2006/12/06 PHP
php GD绘制24小时柱状图
2008/06/28 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
请离开include_once和require_once
2013/07/18 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
php天翼开放平台短信发送接口实现方法
2014/12/22 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
php简单获取复选框值的方法
2016/05/11 PHP
Whatever:hover 无需javascript让IE支持丰富伪类
2010/06/29 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
2013/02/01 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
浅谈javascript的调试
2015/01/28 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
vue中的scope使用详解
2017/10/29 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
将相和教学反思
2014/02/04 职场文书
文明好少年事迹材料
2014/08/19 职场文书
中学生运动会新闻稿
2014/09/24 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
golang中的并发和并行
2021/05/08 Golang
浅谈python数据类型及其操作
2021/05/25 Python