標籤:this 輸出 color 核心 資料 條件 而且 關鍵字 render
1、背景
在Nodejs應用程式中輸出Excel,第一印象想到的一般是node-xlsx,這類外掛程式不僅需要我們通過JS寫入資料,還需要通過JS進行EXCEL顯示樣式的管理。
這是個大問題,不僅代碼冗餘,而且非常不易於維護,假設業務需要合并一個儲存格,或者換個顏色,我們都需要重新修改代碼。
反思這個問題的核心,跟使用JS來操作頁面樣式其實是同一個道理,我們沒有把資料/商務邏輯操作和樣式分離。
在WEB開發中,我們有了CSS來分離處理樣式的問題。
現在,在輸出EXCEL的時候,我們也希望將樣式問題分離出去。
2、ejsexcel
ejsexcel 就是在這樣的背景下誕生的。
1、業務人員提供EXCEL模板,包含顯示樣式以及固定文本。
2、資料部分由開發人員按照ejs格式錄入。
3、Nodejs應用程式只需要準備好資料,然後通過ejsexcel注入到EXCEL模板中即可。
3、DEMO
1、Excel模板
可以輸出單個對象,也可以通過forRow關鍵字進行迴圈輸出。
另外,其中的指令碼同樣支援JS相關函數。
2、注入資料
//讀取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檔案。
4、注意的問題
- 作者手工編譯了Node-Expat,所以使用前確保你使用的node版本以及作業系統已經被正確編譯,如沒有需要自行編譯對應版本的node-expat二進位檔案。點擊這裡查看目前已經編譯的版本。
- 目前還不支援EXCEL條件式格式設定。
在Node.js中使用ejsexcel輸出EXCEL檔案