在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條件格式。
相關文章
相關標籤/搜索