ホームページ > ウェブフロントエンド > jsチュートリアル > Nodejsはネットワークデータを取得し、Excelのtables_node.jsを生成します。

Nodejsはネットワークデータを取得し、Excelのtables_node.jsを生成します。

WBOY
リリース: 2016-05-16 15:01:33
オリジナル
1931 人が閲覧しました

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 テーブルを生成します

以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート