最近開發(fā)的項目上需要把數(shù)據(jù)導(dǎo)出為 xlsx 文檔,找了一圈,發(fā)現(xiàn) node-xlsx 簡單好用,分享給各位。
關(guān)于 node-xlsx
在 web 開發(fā)中,管理后臺生成 Excel 報表并且下載,一個很常用的功能,很多 JAVAscript 開發(fā)者也提供了很多的這方面的工具卡來實現(xiàn)這一功能。今天介紹的 node-xlsx 就是一個基于 node.js 和 SheetJS 、處理 xlsx 格式的工具庫。
node-xlsx 的技術(shù)特性
- 底層基于強大的 SheetJS 構(gòu)建,對 xlsx 文檔的格式兼容性足夠好
- 支持導(dǎo)出和讀取 xlsx 文檔,一個工具庫解決導(dǎo)入導(dǎo)出需求
- 只有少數(shù)幾個 api ,使用非常簡單
開發(fā)上手體驗
最近在做電商后臺的訂單管理部分,需要將訂單數(shù)據(jù)導(dǎo)出給運營同事,也需要導(dǎo)入處理好的訂單報表。雖然之前也研究過用純 JavaScript 來實現(xiàn)導(dǎo)出 excel 表格,但倒出來的文檔的兼容性很難保證。
找了一圈,發(fā)現(xiàn) node-xlsx 這個工具庫,剛好能夠滿足功能的需求:報表字段相對簡單,沒有過多數(shù)據(jù)嵌套。
安裝和使用
需要注意的是,node-xlsx 是一個 node.js 庫,只能通過 npm 安裝,在服務(wù)端使用:
npm install node-xlsx --save
然后在項目中引入,就可以使用了。下面的代碼是通過讀取二進制文件或者 buffer 來處理導(dǎo)入的 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`);
導(dǎo)出為 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
默認數(shù)據(jù)的第一行就是表頭,node-xlsx 還支持設(shè)定每一列的寬度和合并單元格,這樣基本上就能輸出數(shù)據(jù)報表了,就這么幾個 api,使用非常簡單!
注意事項
node-xlsx 只能處理結(jié)構(gòu)相對簡單的數(shù)據(jù)文檔,如果數(shù)據(jù)格式比較復(fù)雜,可以到 SheetJS 去查詢數(shù)據(jù)格式的處理方法。不過如果想要設(shè)置單元格樣式這樣的功能,node-xlsx 可能就滿足不了了。
免費開源說明
node-xlsx 是一個基于 SheetJS 構(gòu)建的免費工具庫,運行在 node.js 服務(wù)上,node-xlsx 和 SheetJS 的源碼都基于 Apache 2.0 開源協(xié)議托管在 Github 上,任何個人和公司都可以免費下載使用,也可以用在商業(yè)項目上。






