nodejs html转excel,Nodejs获取网络数据并生成Excel表格

这篇博客介绍了如何在Node.js中使用node-xlsx模块来处理Excel文件。首先,通过npm安装node-xlsx模块,然后在代码中引入并使用它来读取和写入数据。示例展示了从远程API获取数据,将其转换为二维数组,并写入CSV文件的过程。此外,还提供了一个简单的Ajax请求实现。这个教程对于需要在Node.js环境中处理Excel数据的开发者非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

0255b60e15e728c2ac15e08372572c9e.png

以上就是本文的全部内容,希望对大家的学习有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值