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

今天小二哥要分享的是一个纯前端实现读取和导出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. 前端 本地缓存localStorage/sessionStorage

    当我们刷新页面时,除了路由,页面的当前状态及数据会全部清空/重置,包括浏览器标题. 如果想保存刷新前的一些数据,可以通过window.localStorage/sessionStorage,在浏览器里 ...

  2. websocket与C# socket相互通信

    web端代码就是js代码,C#有两种方式:使用第三方库,如Fleck,使用C#原生socket编程实现   web端: <!doctype html> <html lang=&quo ...

  3. HTML中meta标签的那些属性

    <meta> 标签是 HTML 中用于描述网页元信息的元素.它位于 <head> 部分,不会显示在页面内容中,但对于浏览器.搜索引擎等具有重要作用.主要作用有:定义文档的字符编 ...

  4. PaddlePaddle 自动求导

    自动求导 在 PaddlePaddle 中使用自动求导来计算导数. 要求:$ f(x)=\sin{x} $,绘制 \(f(x)\) 和 \(\dfrac{\mathrm{d}f(x)}{\mathrm ...

  5. 2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指

    2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指 ...

  6. 2022-02-05:字典序的第K小数字。 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。 注意:1 ≤ k ≤ n ≤ 10**9。 示例 : 输入: n: 13 k: 2

    2022-02-05:字典序的第K小数字. 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字. 注意:1 ≤ k ≤ n ≤ 10**9. 示例 : 输入: n: 13 k: 2 输出 ...

  7. 【C++】初始化列表构造函数VS普通构造函数

    普通构造函数VS初始化列表构造函数 初始化列表构造函数最优先匹配问题 对于一个类而言,只要其中包含有初始化列表的构造函数,编译器在编译使用{}语法的构造时会最倾向于调用初始化列表构造函数,哪怕做类型转 ...

  8. 如何将jq动画做出高帧的感觉?(丝滑顺畅)

    前言 我最近在一点一点研究我 博客园 的前端代码,算是边敲边学吧,还算是挺有意思的. 是这样的,之前见过一个效果,就是先显示博客的背景,然后博客主界面缓缓的上升到正确位置,于是乎,干他!开撸代码! 各 ...

  9. 如何基于G6进行双树流转绘制?

    1. 背景 业务背景:CRM系统随着各业务条线对线索精细化分配的诉求逐渐增加,各个条线的流向规则会越来越复杂,各个条线甚至整个CRM的线索流转规则急需一种树形的可视化的图来表达. 技术背景:在开发之前 ...

  10. GLIBC 升级安装与 SCL 知识盲区

    前言 glibc 是 GNU 发布的 libc 库,即 c 运行库.glibc 是 linux 系统中最底层的 api,几乎其它任何运行库都会依赖于 glibc.glibc 除了封装 linux 操作 ...