Nodejs获取网络数据并生成Excel表格

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内容:

如有转载请著名来自http://blog.csdn.net/qxs965266509

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 06:42:00

Nodejs获取网络数据并生成Excel表格的相关文章

nodejs实现,每天定时自动读取数据库数据-生成excel表格-发送给老板邮箱(promise版)

async版:http://blog.csdn.net/zzwwjjdj1/article/details/52129192 写这个版本主要是,promise比较好用,而且,现在已经是nodejs的内置对象了,无须再引用第三方库 -- 需要的工具 数据库    mysql 连接数据库模块 mysql  基本封装: http://blog.csdn.net/zzwwjjdj1/article/details/51991348 自动运行模块   node-schedule 基本使用 : http:/

MySQL---数据库从入门走向大神系列(十一)-Java获取数据库/结果集的元信息、将数据表写入excel表格

数据库的元信息: 首先介绍一下数据库的元信息(元数据): 元数据(Metadata)是关于数据的数据. 元数据是描述数据仓库内数据的结构和建立方法的数据. 存储的数据是什么类型,什么驱动等等,这些描述数据的数据,就是元数据! 准备: package cn.hncu.pool3; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; i

Find_Excel_From_Dir获取特定目录下的excel表格,将数据复制出来

1 # -*- coding: utf-8 -*- 2 # -主要思路-,获取解压后的日志文件包 3 # -获取特定目录下的excel表格,将数据复制出来 4 import xdrlib ,sys 5 import xlrd 6 import os 7 import time 8 class Search_Excel_From_Dir: 9 #file_name = "example"#此处确定要搜寻的文件名字 10 Bdc_Csv_list = []#Excel文件列表 11 Bdc

【PHP】PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数)

[PHP]PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数) 前言 由于业务需要,我们需要从业务中汇总数据,并生成Excel文件. 思路是这样的 PHP要导出Excel表格文件->找一个好用的第三方库吧->在Composer的Packages里找一个吧->PHPExcel这么多收藏,就它了! PHPExcel 概述 PHPExcel is a library written in pure PHP and providing a set of classes th

java生成excel表格和pdf并实现下载弹出框

今天在pdf和excel中都实现了在浏览器弹出下载框 将之前在网上查找的生成excel表格代码稍微修改下: public class CreateSimpleExcelToDisk { /** * @功能:手工构建一个简单格式的Excel */ private static List<News> getNews() throws Exception { List<News> data = new ArrayList<News>(); NewsDao dao = new

Android中获取网络数据时的分页加载

//此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载,    蓝色部分是睡眠时间,自我感觉不用写  ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神指教 public class Fragment1 extends Fragment{               //加载的第几页        private int index = 0;            private List<News> news=new ArrayList<

Swift - 异步获取网络数据封装类

使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据.下面通过对数据获取类进行封装,演示如何进行数据请求与接收. 1,HttpController.swift (数据获取封装类,结果处理协议) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import UIKit //自定义http协议 protocol HttpProto

JSON异步获取网络数据

//定义一个方法来获取网络数据,接受参数为网址 func onSearch(url: String){ //定义一个NSURL var nsUrl: NSURL = NSURL(string: url)! //定义一个NSURLRequest var request: NSURLRequest = NSURLRequest(URL: nsUrl) //异步获取数据 NSURLConnection.sendAsynchronousRequest(request, queue: NSOperatio

WSH 直接将查询数据结果生成 EXCEL 表

'EXCELa.VBS '直接将查询数据结果生成 EXCEL 表,稍做修改后即可 '改成ASP文件放在服务器上面向客户 option Explicit dim conn,strConnString Set conn = WScript.CreateObject("ADODB.Connection") on error resume next strConnString ="Provider=SQLOLEDB.1;Password=UP;" & _ "