ExcelJS:Excel 檔案處理完整指南
備註
本文基於 ExcelJS v4 版本撰寫。
為什麼選擇 ExcelJS?
前情提要
在 Node.js 生態系中,處理 Excel 檔案的套件主要就是 xlsx 和 exceljs 這兩個。我過往接觸的專案中大部分是使用 xlsx,不過最近公司專案在做弱掃的時候,掃出了 xlsx(SheetJS)這個套件有安全漏洞需要修復。查了一下才發現 xlsx 已經四年沒有在 npm 上更新了,一直停留在 0.18 版,而修復漏洞的版本是 0.19 以上,但這個版本只能到 SheetJS 官方的 GitHub 上取得,不再提供 npm 安裝。既然 xlsx 已經不再維護 npm 版本,那 exceljs 自然就成了首選。實際用下來,發現 exceljs 有幾個不錯的地方:
- 持續維護:在 npm 上持續更新,社群也還算活躍
- 樣式支援完整:字型、顏色、邊框、填充、對齊這些樣式設定都有支援,這點比 xlsx 的免費版本好很多
- 可以插入圖片:如果報表需要放 logo 或圖表截圖,這個功能就很實用
- 支援串流處理:處理大檔案的時候可以用串流 API,不會一次把整個檔案載入記憶體
- 有 TypeScript 型別定義:開發體驗比較好
基本概念:Excel 的結構
在開始寫 code 之前,必須先了解一下 Excel 檔案的結構以及名詞定義,因為 ExcelJS 的 API 設計就是照著這個結構來的。