主页

前言

基于对对数据库信息导出为excel表格供用户下载的需要,本文大致介绍一个node.js中一个强大的excel表格解析模块node-xlsx。其中express是一个强大的web服务器框架这里就不做过多介绍了。

安装模块

表格生成模块

npm install node-xlsx

web服务器器框架模块

npm install express

搭建一个服务器监听请求

// 导入服务器模块
const express = require('express');

// 创建服务器对象
const app = express();

// 绑定路由
app.get('/getExcel', (req,res)=>{
    // 路由处理函数
})

// 启动服务器,监听85端口
app.listen(85, () => {
    console.log('服务器启动成功!')
})

生成表格的主体函数

// 导入excel生成模块
const xlsx = require("node-xlsx");

const list = [{
name: "sheet",
data: [
    ["data1", "data2", "data3"],
    ["data1", "data2", "data3"],
    ["data1", "data2", "data3"],
],
}, ];

// 得到一个表格文件流
const buffer = xlsx.build(list);

其中list为需要生成的表格数据,name是表格溥名
buffer是一个文件流,若想要将表格保存到本地可使用fs模块的写入文件方法,将buffer做为写入文件的内容即可保存到本地。

设置响应头

声明这是一个需要下载的文件

res.set({
    'Content-Type': 'application/octet-stream', // 告诉浏览器这是一个二进制文件
    'Content-Disposition': 'attachment; filename=Asnull.xlsx' // 告诉浏览器这是一个需要下载的文件并且文件名为Asnull.xlsx
});

响应客户端请求

res.send(buffer)

整体代码

// 导入服务器模块
const express = require('express');
// 导入excel生成模块
const xlsx = require("node-xlsx");

// 创建服务器对象
const app = express();

// 绑定路由
app.get('/getExcel', (req, res) => {
    // 路由处理函数

    // 表格数据
    const list = [{
        name: "Asnull",
        data: [
            ["data1", "data2", "data3"],
            ["data1", "data2", "data3"],
            ["data1", "data2", "data3"],
        ],
    }, ];

    // 得到一个表格文件流
    const buffer = xlsx.build(list);

    res.set({
        'Content-Type': 'application/octet-stream', // 告诉浏览器这是一个二进制文件
        'Content-Disposition': 'attachment; filename=Asnull.xlsx' // 告诉浏览器这是一个需要下载的文件并且文件名为Asnull.xlsx
    });

    // 响应客户端请求进行下载
    res.send(buffer)

})

// 启动服务器,监听85端口
app.listen(85, () => {
    console.log('服务器启动成功!')
})

我们访问监听的地址http://localhost:85/getExcel,即可调起下载,效果如下
202276134713.png

上面代码中的list是需要导出的数据源

list是一个数组包含着对象,list的每一个元素都会成为excel表格的一个sheet,name就是sheet的标题,data的结构是一个二维数组,所以在导出数据之前需要对导出数据进行处理,化成二维数组的形式。
如果想要导出一个表格多个sheet,list可以这样写

const list = [
  {
    name: "sheet1",
    data: [
      ["data1", "data2", "data3"],
      ["data1", "data2", "data3"],
      ["data1", "data2", "data3"],
    ],
  },
  {
    name: "sheet2",
    data: [
      ["data1", "data2", "data3"],
      ["data1", "data2", "data3"],
      ["data1", "data2", "data3"],
    ],
  },
  {
    name: "sheet3",
    data: [
      ["data1", "data2", "data3"],
      ["data1", "data2", "data3"],
      ["data1", "data2", "data3"],
    ],
  },
];

202276134942.png

参考:

node.js

版权属于:Asnull
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0
查看目录

目录

来自 《node.js根据指定数据生成excel表格并响应客户端下载》
评论

博主很懒,啥都没有
43 文章数
5,259 评论量
5 分类数
48 页面数
已在风雨中度过 54年116天10小时29分