首頁 > web前端 > js教程 > Nodejs取得網路資料並產生Excel表格_node.js

Nodejs取得網路資料並產生Excel表格_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
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板