在Node.js中使用ejsexcel输出EXCEL文件

一、背景

在Nodejs应用程序中输出Excel,第一印象想到的通常是node-xlsx,这类插件不只须要咱们经过JS写入数据,还须要经过JS进行EXCEL显示样式的管理node

这是个大问题,不只代码冗余,并且很是不易于维护,假设业务须要合并一个单元格,或者换个颜色,咱们都须要从新修改代码。git

反思这个问题的核心,跟使用JS来操做页面样式实际上是同一个道理,咱们没有把数据/业务逻辑操做和样式分离github

在WEB开发中,咱们有了CSS来分离处理样式的问题。函数

如今,在输出EXCEL的时候,咱们也但愿将样式问题分离出去。this

 

二、ejsexcel 

ejsexcel 就是在这样的背景下诞生的。spa

一、业务人员提供EXCEL模板,包含显示样式以及固定文本。操作系统

二、数据部分由开发者按照ejs格式录入。插件

三、Nodejs应用程序只须要准备好数据,而后经过ejsexcel注入到EXCEL模板中便可。excel

 

三、DEMO

一、Excel模板code

能够输出单个对象,也能够经过forRow关键字进行循环输出。

另外,其中的脚本一样支持JS相关函数。

 

二、注入数据

 //读取excel模板
        let daily_excel_template = fs.readFileSync(DAILY_TEMPLATE)

        //用数据源(对象)data渲染Excel模板
        let self = this
        ejsExcel.renderExcelCb(daily_excel_template, reportData, function(err,exlBuf2){
            if(err) {
                logger.fatal('[EXCEL生成失败!]:'+DAILY_TEMPLATE)
                logger.info(err)
                return;
            }
            fs.writeFileSync(filename, exlBuf2);
            logger.info('[EXCEL生成成功!]:'+DAILY_TEMPLATE)
        });

 

以上是部分代码:

首先读取模板EXCEL文件,而后调用ejsExcel.renderExcelCb方法将数据注入模板中,由模板生成最终的EXCEL文件。

 

四、注意的问题

  • 做者手工编译了Node-Expat,因此使用前确保你使用的node版本以及操做系统已经被正确编译,如没有须要自行编译对应版本的node-expat二进制文件。点击这里查看目前已经编译的版本。
  • 目前还不支持EXCEL条件格式。
相关文章
相关标签/搜索