在Nodejs應用程序中輸出Excel,第一印象想到的通常是node-xlsx,這類插件不只須要咱們經過JS寫入數據,還須要經過JS進行EXCEL顯示樣式的管理。node
這是個大問題,不只代碼冗餘,並且很是不易於維護,假設業務須要合併一個單元格,或者換個顏色,咱們都須要從新修改代碼。git
反思這個問題的核心,跟使用JS來操做頁面樣式實際上是同一個道理,咱們沒有把數據/業務邏輯操做和樣式分離。github
在WEB開發中,咱們有了CSS來分離處理樣式的問題。函數
如今,在輸出EXCEL的時候,咱們也但願將樣式問題分離出去。this
ejsexcel 就是在這樣的背景下誕生的。spa
一、業務人員提供EXCEL模板,包含顯示樣式以及固定文本。操作系統
二、數據部分由開發者按照ejs格式錄入。插件
三、Nodejs應用程序只須要準備好數據,而後經過ejsexcel注入到EXCEL模板中便可。excel
一、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文件。