最近開發的項目上需要把數據導出為 xlsx 文檔,找了一圈,發現 node-xlsx 簡單好用,分享給各位。
關于 node-xlsx
在 web 開發中,管理后臺生成 Excel 報表并且下載,一個很常用的功能,很多 JAVAscript 開發者也提供了很多的這方面的工具卡來實現這一功能。今天介紹的 node-xlsx 就是一個基于 node.js 和 SheetJS 、處理 xlsx 格式的工具庫。
node-xlsx 的技術特性
- 底層基于強大的 SheetJS 構建,對 xlsx 文檔的格式兼容性足夠好
- 支持導出和讀取 xlsx 文檔,一個工具庫解決導入導出需求
- 只有少數幾個 api ,使用非常簡單
開發上手體驗
最近在做電商后臺的訂單管理部分,需要將訂單數據導出給運營同事,也需要導入處理好的訂單報表。雖然之前也研究過用純 JavaScript 來實現導出 excel 表格,但倒出來的文檔的兼容性很難保證。
找了一圈,發現 node-xlsx 這個工具庫,剛好能夠滿足功能的需求:報表字段相對簡單,沒有過多數據嵌套。
安裝和使用
需要注意的是,node-xlsx 是一個 node.js 庫,只能通過 npm 安裝,在服務端使用:
npm install node-xlsx --save
然后在項目中引入,就可以使用了。下面的代碼是通過讀取二進制文件或者 buffer 來處理導入的 xlsx 文檔:
import xlsx from 'node-xlsx';
// Or var xlsx = require('node-xlsx').default;
// Parse a buffer
const workSheetsFromBuffer = xlsx.parse(fs.readFileSync(`${__dirname}/myFile.xlsx`));
// Parse a file
const workSheetsFromFile = xlsx.parse(`${__dirname}/myFile.xlsx`);
導出為 xlsx 文檔
import xlsx from 'node-xlsx';
const data = [
[1, 2, 3],
[true, false, null, 'sheetjs'],
['foo', 'bar', new Date('2014-02-19T14:30Z'), '0.3'],
['baz', null, 'qux'],
];
var buffer = xlsx.build([{name: 'mySheetName', data: data}]); // Returns a buffer
默認數據的第一行就是表頭,node-xlsx 還支持設定每一列的寬度和合并單元格,這樣基本上就能輸出數據報表了,就這么幾個 api,使用非常簡單!
注意事項
node-xlsx 只能處理結構相對簡單的數據文檔,如果數據格式比較復雜,可以到 SheetJS 去查詢數據格式的處理方法。不過如果想要設置單元格樣式這樣的功能,node-xlsx 可能就滿足不了了。
免費開源說明
node-xlsx 是一個基于 SheetJS 構建的免費工具庫,運行在 node.js 服務上,node-xlsx 和 SheetJS 的源碼都基于 Apache 2.0 開源協議托管在 Github 上,任何個人和公司都可以免費下載使用,也可以用在商業項目上。