教你Node.js+SpreadJS从服务端生成Excel电子表格

介绍

在实际工作中,我们常常需要使用Excel电子表格进行数据的整理和计算,而手动操作Excel也常常无法满足我们的需求。那么,如何使用代码生成Excel电子表格呢?本文将介绍使用Node.js和SpreadJS从服务端生成Excel电子表格的方法。

SpreadJS介绍

SpreadJS是一款基于JavaScript的电子表格控件,支持多种格式的电子表格,包括XLSX、CSV、JSON等。除此之外,SpreadJS还提供了丰富的API,可以通过代码自定义电子表格的样式和行为。

准备工作

在开始使用SpreadJS之前,我们需要先安装相关的依赖,包括Node.js、Express和SpreadJS。其中,Node.js是一款基于Chrome V8引擎的JavaScript运行环境,用于搭建后台服务器。Express是一款基于Node.js的Web框架,用于快速搭建Web应用。SpreadJS则是我们本文要使用的电子表格控件。

首先,我们需要安装Node.js。可以从官网下载安装包,也可以使用nvm进行安装:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

nvm install node

安装完成后,我们可以使用npm安装Express和SpreadJS:

npm install express

npm install @grapecity/spread-sheets

生成Excel电子表格

下面,我们将介绍使用Node.js和SpreadJS从服务端生成Excel电子表格的方法。

准备数据

首先,我们需要准备要写入到Excel电子表格中的数据。在本文中,我们使用一个简单的JSON数据作为示例:

const data = [

{id: 1, name: 'John Doe', age: 30},

{id: 2, name: 'Jane Smith', age: 25},

{id: 3, name: 'Bob Johnson', age: 40}

];

设置表头

在生成电子表格之前,我们需要先设置表头。表头通常包括每一列的名称和宽度。为了方便起见,我们可以使用一个数组来定义表头信息:

const headers = ['ID', 'Name', 'Age'];

const widths = [100, 200, 100];

生成电子表格

有了数据和表头之后,我们就可以开始生成电子表格了。下面是具体的代码实现:

//引入SpreadJS库

const GC = require("@grapecity/spread-sheets");

//定义电子表格

const workbook = new GC.Spread.Sheets.Workbook();

//获取表格的第一张工作表

const sheet = workbook.getActiveSheet();

//设置表头

for(let i=0; i<headers.length; i++) {

//设置列宽

sheet.setColumnWidth(i, widths[i]);

//设置表格内容

sheet.setValue(0, i, headers[i]);

}

//写入数据

for(let i=0; i<data.length; i++) {

sheet.setValue(i+1, 0, data[i].id);

sheet.setValue(i+1, 1, data[i].name);

sheet.setValue(i+1, 2, data[i].age);

}

//保存电子表格

workbook.saveToFile("output.xlsx", GC.Spread.Sheets.IO.FileType.Xlsx);

以上代码中,我们首先引入SpreadJS库,然后创建一个空的电子表格,获取第一张工作表。接着,我们设置表头的列宽和内容,并将数据写入到表格中。最后,我们将电子表格保存为XLSX格式的文件。

使用Express生成Excel电子表格

有了上面的代码,我们就可以在本地生成Excel电子表格了。但如果我们需要在Web应用中动态生成电子表格,并通过浏览器下载,应该如何实现呢?

在Express中,我们可以使用res.attachment方法设置响应头,将生成的电子表格作为附件下载到客户端。下面是具体的代码实现:

const express = require('express');

const app = express();

const GC = require("@grapecity/spread-sheets");

//...省略定义数据和表头的代码...

app.get('/export', (req, res) => {

//定义电子表格

const workbook = new GC.Spread.Sheets.Workbook();

//获取表格的第一张工作表

const sheet = workbook.getActiveSheet();

//...省略设置表头和写入数据的代码...

//设置响应头,告诉浏览器下载文件

res.attachment('output.xlsx');

//将电子表格写入响应中

workbook.save(GC.Spread.Sheets.IO.FileType.Xlsx, res);

});

//...省略其他路由和启动服务器的代码...

在上面的代码中,我们定义了一个名为/export的路由,当请求该路由时,我们生成电子表格并将其作为附件返回给客户端。通过这种方式,我们就可以实现在浏览器中下载动态生成的Excel电子表格的功能。

总结

本文介绍了使用Node.js和SpreadJS从服务端生成Excel电子表格的方法。通过准备数据、设置表头和创建电子表格,我们可以使用代码生成我们需要的Excel电子表格,并通过Express将其下载到客户端。希望本文的内容对大家有所帮助。