百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

node.js 15 如何操作Excel文件

suiw9 2024-11-24 21:43 27 浏览 0 评论

上一篇: node.js 14 自动化工具 (爬虫) Selenium安装使用


绝大部分编程语言都有Office文件的操作库,nodejs也不例外。而且nodejs的世界里,Excel操作模块还是比较多的,这就涉及到选择问题了。到底选哪个Excel操作模块?

Excel操作模块PK

让我们看一下npm包里面的各类Excel操作模块

  • ExcelJS

最近更新在4天前,也就是2020年3月份更新的。最新版本3.8.2。从版本维护,文件更新方面都是有保障的。每周的下载量为12万5797次,使用面也是比较广的。再来看文档方面,各类操作都有代码,关键的是有中文翻译的文档。应该说这是一个不错的选择。

  • Excel

最近更新在7个月之前,大概是2019年8月份。最新版本为1.0.1。每周的下载量为4410次。除了寥寥数行代码外,几乎没有什么文档。

  • node-xlsx

最近更新在1年前,大约是2019年初。最新版本 0.15.0。但是周下载量不错,达到了3万8千多次。文档方面也相对比较完备。应该说node-xlsx也是一个不错的选择。

  • SheetJS js-xlsx

最近更新在13天前,也是2020年3月份。最新版本0.15.6。每周的下载量达到了55万8千次,这个使用面是非常广泛了。文档也比较齐全。这是一个非常不错的选择。

  • ejsExcel

这是一款国人做的Excel操作模块。最近一次更新在4个月前,也就是2019年11月。最新版本为3.6.0。但是每周下载量是这几个模块中最低的,只有396次。

考虑到文档,中文,下载量,版本维护等,我选择使用ExcelJS来作为Excel文件操作的模块。

ExcelJS安装

使用命令:npm install exceljs --save

D:\Projects\nodejs\NodeDemo\excel>npm install exceljs --save
npm WARN deprecated mkdirp@0.5.4: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN excel@1.0.0 No description
npm WARN excel@1.0.0 No repository field.
+ exceljs@3.8.2
added 92 packages from 115 contributors and audited 256 packages in 45.139s
2 packages are looking for funding
  run `npm fund` for details
found 0 vulnerabilities

ExcelJS 代码示例

  • 创建Workbook

首先需要引入exceljs模块,通过Excel.Workbook()来构建Workbook。

const Excel = require('exceljs')
var workbook = new Excel.Workbook();
  • 设置Workbook属性
workbook.creator = 'Vincent';
workbook.lastModifiedBy = 'Vincent';
workbook.created = new Date(2020, 3, 28);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2020, 3, 28);
  • 添加Worksheet
workbook.addWorksheet('My Sheet')
  • 访问Worksheet

提供三种方法,可以通过遍历所有的worksheet,也可以通过worksheet名称或者id来访问。

//遍历所有worksheet
workbook.eachSheet(function(worksheet, sheetId) {
  // ...
});
 //通过名称访问
var worksheet = workbook.getWorksheet('My Sheet');
 
//通过id访问
var worksheet = workbook.getWorksheet(1);
  • 行操作

添加行只需要调用addRow方法并传入数组即可。

worksheet.addRow([1, 'Vincent', 18]);
worksheet.addRow([2, 'Tom', 25]);

获取行信息,需要调用worksheet.getRow(index).values方法。

var row = worksheet.getRow(1).values;

该代码可以获取第一行的值,返回值为数组。

  • 列操作
//设定列
worksheet.columns = [
  { header: 'Id', key: 'id', width: 10 },
  { header: 'Name', key: 'name', width: 32 },
  { header: 'D.O.B.', key: 'DOB', width: 10,}
];

//获取列
var idCol = worksheet.getColumn('id');
var nameCol = worksheet.getColumn('B');
var dobCol = worksheet.getColumn(3);

//添加数组到列中
worksheet.getColumn(6).values = [1,2,3,4,5];
  • 单元格操作
//获取单元格
var cell = worksheet.getCell('C3');
 
// 设定单元格value
cell.value = 'Vincent'

//合并单元格
worksheet.mergeCells('A4:B5');

//获取单元格value
worksheet.getCell('B5').value

//获取单元格注释
worksheet.getCell('A1').note

//设定单元格注释
worksheet.getCell('A1').note='单元格注释'
  • 公式 Formula
//单元格公式以及计算值设定
worksheet.getCell('A3').value = { formula: 'A1+A2', result: 7 };

注意,上面如果只是设定formula不设定result是不起作用的。经过实际测试,result可以不一定是百分百正确的计算值。当写入文件后,打开excel时,excel会自动通过公式计算并显示正确值。

  • 读取xlsx文件
// read from a file
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(filename)
  .then(function() {
    // use workbook
  });
  • 写入Excel文件
// write to a file
var workbook = createAndFillWorkbook();
workbook.xlsx.writeFile(filename)
  .then(function() {
    // done
  });

总体ExcelJS模块的API是比较丰富的,可以应对绝大部分Excel操作。并且文档相对比较详细。

如果朋友们有什么问题,欢迎留言讨论。

相关推荐

nginx的反向代理(Nginx的反向代理和负载均衡)

nginxProxy代理1、代理原理反向代理服务的实现:需要有一个负载均衡设备(即反向代理服务器)来分发用户请求,将用户请求分发到后端正真提供服务的服务器上。服务器返回自己的服务到负载均衡设备。负...

Nginx UI: 更好用更现代化的Nginx 管理面板

各位铲屎官大家好,我是喵~...

性能测试之tomcat+nginx负载均衡(nginxtcp负载均衡)

nginxtomcat配置准备工作:两个tomcat执行命令cp-rapache-tomcat-8.5.56apache-tomcat-8.5.56_2修改被复制的tomcat2下con...

nginx upstream节点健康检查(nginx tcp 健康检查)

1、前提条件编译nginx时增加nginx_upstream_check_module模板git地址:https://github.com/yaoweibin/nginx_upstream_check...

Nginx 的高并发处理能力(nginx支持高并发原理)

为了实现Nginx的高并发处理能力,需要从**硬件资源**、**操作系统**、**Nginx配置**等多个方面进行优化。以下是详细的配置和示例:---...

Nginx最全详解(万字图文总结)(nginxs)

大家好,我是mikechen。Nginx是非常重要的负载均衡中间件,被广泛应用于大型网站架构,下面我就全面来详解Nginx@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题...

如何用 Nginx 实现前端灰度发布(nginx 灰度测试规则)

前言在前端开发中,灰度发布是一种重要的策略,它允许我们在不影响所有用户的情况下,逐步推出新功能或更新。通过灰度发布,我们可以测试新版本的稳定性和性能,同时收集用户反馈。今天,我们将探讨如何使用Ngi...

nginx配置优化场景-直接套用so happy!

前言(叠甲在先)Nginx是一款高性能的Web服务器,广泛应用于互联网领域。...

Nginx配置前后端服务(nginx前后端分离部署)

nginx安装完成后,可以通过命令查看配置文件nginx-t配置文件nginx.conf,是总的配置,有的人会把配置全部配置到这个文件中,如果服务很多,这个文件变得非常庞大,我见过一个配置很大的,在...

使用Nginx配置TCP负载均衡(nginx如何配置负载均衡)

假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。...

Nginx服务器深度指南:安装、配置、优化指令超详解

在当今数字化时代,Web服务器是支撑互联网应用的关键基础设施。Nginx作为一款高性能的开源Web服务器,凭借卓越的性能、丰富的功能和出色的稳定性,在Web服务器领域占据了重要地位。无论是大型互联网公...

Nginx的配置详解(附代码)(nginx基本配置)

本篇文章给大家带来的内容是关于Nginx的配置详解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。常用配置项在工作中,我们与Nginx打交道更多的是通过其配置文件来进行。...

Nginx配置文件详解(nginx配置文件详解带实例)

Nginx配置文件详解Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。...

从 0 到 1:构建高可用 Linux 负载均衡集群(基于 Nginx + Keepalived)

在高并发业务场景下,单台服务器往往无法支撑大量请求,因此需要使用**负载均衡(LoadBalancing)**技术来提升系统的稳定性和可用性。Nginx+Keepalived是常见的开源负载均...

配置Nginx TCP转发(nginx 接口转发)

Nginx一般用在HTTP的转发,TCP的转发大都会使用HAProxy。工作中遇到一个需求,用到了Nginx服务作为TCP转发。场景是这样,数据采集设备通过公网将数据推送到后端应用服务,服务部署在业主...

取消回复欢迎 发表评论: