首页 > 其他分享 >这可能是前端处理excel最好的工具了

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

时间:2023-07-26 23:11:58浏览次数:39  
标签:xlsx const wb 前端 excel ws console 工具 log

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

ExcelJs 简介

功能十分简单:

读取,操作并写入电子表格数据和样式到 XLSX 和 JSON 文件。
一个 Excel 电子表格文件逆向工程项目。

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

安装

npm install exceljs

或CDN

<script src="https://cdn.jsdelivr.net/npm/[email protected]/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

标签:xlsx,const,wb,前端,excel,ws,console,工具,log
From: https://www.cnblogs.com/tanggoahead/p/17583763.html

相关文章

  • 浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
    采用VSTO或者SharedAdd-in等技术开发Excel插件,其实是在与Excel提供的API在打交道,Excel本身的组件大多数都是COM组件,也就是说通过ExcelPIA来与COM进行交互。这其中会存在一些问题,这些问题如果处理不好,通常会导致在运行的时候会抛出难以调试的COM异常,从而导致我们开发出的Excel插......
  • 浅谈Excel开发:三 Excel 对象模型
    前一篇文章介绍了Excel中的菜单系统,在创建完菜单和工具栏之后,就要着手进行功能的开发了。不论您采用何种方式来开发Excel应用程序,了解Excel对象模型尤其重要,这些对象是您与Excel进行交互的基石。据不完全统计,Excel的对象模型中有270多个对象及超过5000多个属性和方法。通过这些对......
  • 浅谈Excel开发:六 Excel 异步自定义函数
    上文介绍了Excel中的自定义函数(UDF),它极大地扩展了Excel插件的功能,使得我们可以将业务逻辑以Excel函数的形式表示,并可以根据这些细粒度的自定义函数,构建各种复杂的分析报表。普通的UDF自定义函数的基本执行逻辑是,Excel接受用户输入的函数表达式,然后通过UDF函数的处理逻辑进行处......
  • 浅谈Excel开发:七 Excel 自定义任务窗体
    前面花了三篇文章讲解了Excel中的UDF函数,RTD函数和异步UDF函数,这些都是Excel开发中的重中之重。本文现在开始接着第二篇文章的菜单系统开始讲解Excel中可供开发的界面元素,本文要讲解的是Excel中的自定义任务面板(CustomeTaskPanel,CTP)。自定义任务面板在Office2003中就引入了......
  • 浅谈Excel开发:八 Excel 项目的安装部署
    前面几篇文章讲解了Excel开发的几个比较主要的也是比较重要的方面,比如菜单系统,Excel对象模型,自定义函数,RTD函数,异步自定义函数,用户自定义任务面板等,在实际开发中我们还会遇到各种“千奇百怪”的问题,以及开发中的一些注意事项和技巧等,后面有空我会写文介绍。当我们的Excel外接应用......
  • 前端异常监控之 Sentry的部署和使用
    由于最近在整理前端异常监控相关内容,所以自己在虚拟机搭建部署了一下Sentry,把搭建过程及一些自己踩得坑整理如下一、Sentry部署Sentry搭建有两种方式:通过Python安装教程地址通过Docker容器安装教程地址我本地是用Docker进行搭建的。1、安装docker armasm复制......
  • excel 表格操作
    1.工作簿工作表工作簿:表示整个excle文件工作表:工作簿(里面可以有很多工作表)2.3.4.5.6.7.8.......
  • 国产化的接口测试、接口自动化测试工具Apipost的介绍及使用
    Apipost介绍:Apipost是API文档、API调试、APIMock、API自动化测试一体化的研发协作赋能平台,它的定位Postman+Swagger+Mock+JMeter。Apipost是接口管理、开发、测试全流程集成工具,能支撑整个研发技术团队同平台工作,主要使用者为前端开发、后端开发、测试人员。Apipost优......
  • 免费的敏捷开发需求管理工具
    传统的瀑布工作模式使用详细的需求说明书来表达需求,需求人员负责做需求调研,根据调研情况编制详细的需求说明书,进行需求评审,评审之后签字确认交给研发团队设计开发。在这样的环境下,需求文档是信息传递的主体,也是一份契约。然而详细的需求说明书有以下5大弊端:单向的信息传递,容易出现......
  • 前端几种下载文件的方式
    1、location.href方式下载对于浏览器不能打开的文件(例如:..rar.doc等)是可以实现下载的,但是对于浏览器可以打开的(例如:txt,xml等)只可以实现预览功能window.location.href="https://xxxx...测试.xlsx"2、window.open()该方式,同上,如果不能被预览,那么浏览器就会下载该文件3、a标......