Maison > interface Web > js tutoriel > Nodejs obtient les données réseau et génère des tables Excel_node.js

Nodejs obtient les données réseau et génère des tables Excel_node.js

WBOY
Libérer: 2016-05-16 15:01:33
original
1927 Les gens l'ont consulté

Il existe de nombreux modèles sur les tableaux Excel dans Nodejs. Ici, je vais brièvement présenter l'utilisation d'un module que j'ai utilisé.

Tout d'abord, installez le module Excel :

npm install node-xlsx

Ensuite, introduisez le module dans votre code :

var xlsx = require('node-xlsx');

Enfin, récupérez les données et écrivez-les dans 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);
}
Copier après la connexion

Partie Ajax du code :

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;
Copier après la connexion

Contenu Excel généré :

Téléchargement du code source : Nodejs obtient les données du réseau et génère des tableaux Excel

Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal