大家好,我是程序视点的小二哥!

今天小二哥要分享的是一个纯前端实现读取和导出excel文件的工具库:ExcelJS

ExcelJs 简介

功能十分简单:

读取,操作并写入电子表格数据和样式到 XLSX 和 JSON 文件。

一个 Excel 电子表格文件逆向工程项目。

在本文中,我们使用xlsx文件。xlsx是Microsoft Excel使用的开放XML电子表格文件格式的文件扩展名。这也是工作中用得最多的一种文件之一。

安装

npm install exceljs

或CDN

<script src="https://cdn.jsdelivr.net/npm/exceljs@1.13.0/dist/exceljs.min.js" />

使用

首先,新建工作簿。

const ExcelJS = require('exceljs');

const wb = new ExcelJS.Workbook();

有个这个对象后,接下来的任何操作都是在这个工作簿对象上处理的。

读取

我们从现有的 xlsx 文件中读取。我们假设前两列中有一些数据。


const fileName = 'items.xlsx'; wb.xlsx.readFile(fileName).then(() => { const ws = wb.getWorksheet('Sheet1'); const c1 = ws.getColumn(1); c1.eachCell(c => { console.log(c.value);
}); const c2 = ws.getColumn(2); c2.eachCell(c => { console.log(c.value);
});
}).catch(err => {
console.log(err.message);
});

这里注意几个API:

读取工作表数据,我们使用该函数:

wb.xlsx.readFile(xxx)

获取指定工作表:

const ws = wb.getWorksheet('Sheet1');

获取某列数据

ws.getColumn(1);

迭代每列中单元格的数据

c1.eachCell(c => {

    console.log(c.value);
});

写入

这里我们写入一个全新的xlsx文件。

const Excel = require('exceljs');

const fileName = 'simple.xlsx';

const wb = new Excel.Workbook();
const ws = wb.addWorksheet('My Sheet'); ws.getCell('A1').value = 'John Doe';
ws.getCell('B1').value = 'gardener';
ws.getCell('C1').value = new Date().toLocaleString(); const r3 = ws.getRow(3);
r3.values = [1, 2, 3, 4, 5, 6]; wb.xlsx
.writeFile(fileName)
.then(() => {
console.log('file created');
})
.catch(err => {
console.log(err.message);
});

向新的工作簿中增加一张工作表

const ws = wb.addWorksheet('My Sheet');

向指定单元格写入数据

ws.getCell('A1').value = 'John Doe';

向指定行中写入一组数据

const r3 = ws.getRow(3);
r3.values = [1, 2, 3, 4, 5, 6];

最后就是写入一个文件:

wb.xlsx
.writeFile(fileName)
.then(() => {
console.log('file created');
})
.catch(err => {
console.log(err.message);
});

其他

ExcelJs还支持写入多组数据

ws.addRows([
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]]
);

添加列标题定义列键和宽度

const headers = [
{ header: 'First name', key: 'fn', width: 15 },
{ header: 'Last name', key: 'ln', width: 15 },
{ heade
r: 'Occupation', key: 'occ', width: 15 },
{ header: 'Salary', key: 'sl', width: 15 },
] ws.columns = headers;

ExcelJS的功能还远不止这些。

还有如页眉和页脚,冻结/拆分视图,自动筛选器,合并单元格等。

ExcelJS还支持读写CSV文件

更多内容,请查阅下方链接。

ExcelJS地址

https://github.com/exceljs/exceljs

这可能是前端处理excel最好的工具了的更多相关文章

  1. 前端导出Excel兼容写法

    今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容. 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源, ...

  2. 前端导出excel表

    前端导出excel表 方式一: 前端js实现 : https://www.cnblogs.com/zhangym118/p/6235801.html 方式二: java后端实现: https://bl ...

  3. 前端读取Excel报表文件 js-xlsx

    1.http://www.cnblogs.com/imwtr/p/6001480.html (前端读取Excel报表文件) 2.https://github.com/SheetJS/js-xlsx

  4. 前端导出Excel

    1.首先,需要下载一个叫better-xlsx,的插件,以yarn 为例 ' yarn add better-xlsx --save '下载相关依赖包( npm 方式 ' npm i better-x ...

  5. js前端导出excel

    此例子是利用html特性,纯前端导出excel,样式不好看,兼容主流浏览器. var tableid = jQuery(this).closest("div.tab-label-wrap&q ...

  6. H5纯前端生成Excel表格

    H5纯前端生成Excel表格方法如下: <!DOCTYPE html> <html> <head> <title></title> < ...

  7. 踹掉后端,前端导出Excel!

    前言 导出Excel文件这个功能,通常都是在后端实现返回前端一个下载链接,但有时候我们只想导出前端页面上已经有了的数据,不想再调后端导出接口浪费服务器资源,学习本文demo例子,我们踹掉后端,直接在前 ...

  8. react 前端导出Excel

    1.首先下载 js-export-excel npm install js-export-excel; 2.下载 xlsx npm install xlsx; 3.引入    import * as  ...

  9. Web前端优化最佳实践及工具集锦

    Web前端优化最佳实践及工具集锦 发表于2013-09-23 19:47| 21315次阅读| 来源Googe & Yahoo| 118 条评论| 作者王果 编译 Web优化Google雅虎P ...

  10. TestLink学习七:TestLink测试用例Excel转换XML工具

    TestLink对于测试用例的管理来说,是蛮强大的,但是在导入导出这块,功能有点弱,本文针对测试用例的导入,转载了一个Excel转换成xml工具. 1.根据到处的测试用例xml,定义一下我的Excel ...

随机推荐

  1. SpringBoot之Mybatis开启SQL记录和Pagehelper

    配置mybatis mybatis: #mapper路径 mapper-locations: classpath:mapper/*.xml configuration: #日志输出 log-impl: ...

  2. Python 字典嵌套

    字典嵌套 含义:将一系列字典存储在列表中,或将列表作为值存储在字典中 在列表中嵌套字典.在字典中嵌套列表.在字典中嵌套字典 字典列表 创建多个字典,将字典存放在列表中 使用range()自动生成多个字 ...

  3. Pwn系列之Protostar靶场 Stack3题解

    (gdb) disass main Dump of assembler code for function main: 0x08048438 <main+0>: push ebp 0x08 ...

  4. Linux中重定向应注意的事情

    引言 你是否见过bash ... 2>&1 1>file.txt的写法? 还没发现这样的写法有什么问题? 那么恭喜你, 看完本文你又将学会一个新知识! 重定向的错误用法 以引言中命 ...

  5. Vue中使用富文本编辑器

    原文链接:https://blog.csdn.net/qq_45695853/article/details/114635009

  6. 2022-11-23: 分数排名。输出结果和表的sql如下。请写出输出结果的sql语句? +-------+------+ | score | rank | +-------+------+ | 4.

    2022-11-23: 分数排名.输出结果和表的sql如下.请写出输出结果的sql语句? ±------±-----+ | score | rank | ±------±-----+ | 4.00 | ...

  7. 2020-11-15:手写代码:行有序、列也有序的二维数组中,找num,找到返回true,否则false?

    福哥答案2020-11-15: 此题来源于leetcode240和剑指 Offer(第 2 版)面试题4.1.线性查找.从二维数组的坐下角开始查找.如果当前元素等于目标值,则返回 true.如果当前元 ...

  8. 【GiraKoo】Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)

    [解决]Could NOT find PkgConfig (missing PKG_CONFIG_EXECUTABLE) 环境 Ubuntu 22.04 现象 在编写CMakeLists.txt时,调 ...

  9. docker容器使用(1)

    docker容器使用(1) 几个简单的参数 查看全部的容器 docker ps -a -d 以分离模式运行/在后台运行 -i以交互模式运行 -t在终端运行 -p --publish 端口映射-p表示把 ...

  10. 计算机网络 vlan

    目录 一.vlan的概念 二.vlan的优势 三.vlan的种类 四.静态vlan的配置 五.trunk的概念和配值 六.实验 一.vlan的概念 在传统的以太网中,所有的用户都是同一个广播域,当数据 ...