翼度科技»论坛 编程开发 JavaScript 查看内容

这可能是前端处理excel最好的工具了

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
大家好,我是程序视点的小二哥!
今天小二哥要分享的是一个纯前端实现读取和导出excel文件的工具库:ExcelJS
ExcelJs 简介

功能十分简单:
读取,操作并写入电子表格数据和样式到 XLSX 和 JSON 文件。
一个 Excel 电子表格文件逆向工程项目。
在本文中,我们使用xlsx文件。xlsx是Microsoft Excel使用的开放XML电子表格文件格式的文件扩展名。这也是工作中用得最多的一种文件之一。
安装
  1. npm install exceljs
复制代码
或CDN
  1. <script src="https://cdn.jsdelivr.net/npm/exceljs@1.13.0/dist/exceljs.min.js" />
复制代码
使用

首先,新建工作簿。
  1. const ExcelJS = require('exceljs');
  2. const wb = new ExcelJS.Workbook();
复制代码
有个这个对象后,接下来的任何操作都是在这个工作簿对象上处理的。
读取

我们从现有的 xlsx 文件中读取。我们假设前两列中有一些数据。
  1. const fileName = 'items.xlsx';
  2. wb.xlsx.readFile(fileName).then(() => {
  3.    
  4.     const ws = wb.getWorksheet('Sheet1');
  5.     const c1 = ws.getColumn(1);
  6.    
  7.     c1.eachCell(c => {
  8.         console.log(c.value);
  9.     });
  10.     const c2 = ws.getColumn(2);
  11.    
  12.     c2.eachCell(c => {
  13.         console.log(c.value);
  14.     });
  15. }).catch(err => {
  16.     console.log(err.message);
  17. });
复制代码
这里注意几个API:
读取工作表数据,我们使用该函数:
  1. wb.xlsx.readFile(xxx)
复制代码
获取指定工作表:
  1. const ws = wb.getWorksheet('Sheet1');
复制代码
获取某列数据:
  1. ws.getColumn(1);
复制代码
迭代每列中单元格的数据:
  1. c1.eachCell(c => {
  2.     console.log(c.value);
  3. });
复制代码
写入

这里我们写入一个全新的xlsx文件。
  1. const Excel = require('exceljs');
  2. const fileName = 'simple.xlsx';
  3. const wb = new Excel.Workbook();
  4. const ws = wb.addWorksheet('My Sheet');
  5. ws.getCell('A1').value = 'John Doe';
  6. ws.getCell('B1').value = 'gardener';
  7. ws.getCell('C1').value = new Date().toLocaleString();
  8. const r3 = ws.getRow(3);
  9. r3.values = [1, 2, 3, 4, 5, 6];
  10. wb.xlsx
  11.   .writeFile(fileName)
  12.   .then(() => {
  13.     console.log('file created');
  14.   })
  15.   .catch(err => {
  16.     console.log(err.message);
  17.   });
复制代码
向新的工作簿中增加一张工作表:
  1. const ws = wb.addWorksheet('My Sheet');
复制代码
向指定单元格写入数据:
  1. ws.getCell('A1').value = 'John Doe';
复制代码
向指定行中写入一组数据:
  1. const r3 = ws.getRow(3);
  2. r3.values = [1, 2, 3, 4, 5, 6];
复制代码
最后就是写入一个文件:
  1. wb.xlsx
  2.     .writeFile(fileName)
  3.     .then(() => {
  4.       console.log('file created');
  5.     })
  6.     .catch(err => {
  7.       console.log(err.message);
  8.     });
复制代码
其他

ExcelJs还支持写入多组数据
  1. ws.addRows([
  2.     [1, 2, 3, 4, 5],
  3.     [6, 7, 8, 9, 10],
  4.     [11, 12, 13, 14, 15],
  5.     [16, 17, 18, 19, 20]]
  6. );
复制代码
添加列标题并定义列键和宽度
  1. const headers = [
  2.     { header: 'First name', key: 'fn', width: 15 },
  3.     { header: 'Last name', key: 'ln', width: 15 },
  4.     { heade
  5.     r: 'Occupation', key: 'occ', width: 15 },
  6.     { header: 'Salary', key: 'sl', width: 15 },
  7. ]
  8. ws.columns = headers;
复制代码
ExcelJS的功能还远不止这些。
还有如页眉和页脚,冻结/拆分视图,自动筛选器,合并单元格等。
ExcelJS还支持读写CSV文件。
更多内容,请查阅下方链接。
ExcelJS地址
https://github.com/exceljs/exceljs

来源:https://www.cnblogs.com/tanggoahead/p/17583763.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具