Nodejs獲取網絡數據并生成Excel表格
來源:易賢網 閱讀:1543 次 日期:2016-07-02 11:51:14
溫馨提示:易賢網小編為您整理了“Nodejs獲取網絡數據并生成Excel表格”,方便廣大網友查閱!

這篇文章主要為大家詳細介紹了Nodejs獲取網絡數據并生成Excel表格的具體實現(xiàn)方法,感興趣的小伙伴們可以參考一下

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表格

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網