概述
前端導出 excel 文件常用的庫是 sheetjs。今天 PM 提了一個需求就是所有的數字都使用數字格式,特別是百分比也使用數字格式。我想了很久終於解決了,記錄下來,供以后開發時參考,相信對其它人也有用。
問題
通過查看 sheetjs的官方文檔,我們可以發現,它支持這幾種導出格式:Boolean、Error、Number、Date、Text、Stub,里面沒有百分比格式,怎么辦呢?
方法就是使用格式化為 0.00% 的數字格式,其中后面2個0是自定義2個小數位,可以多加或者少加。
源碼
Show me the code:
const workbook = XLSX.utils.book_new();
const sheet = XLSX.utils.json_to_sheet(data);
Object.keys(sheet).forEach((item) => {
const cell = sheet[item];
const value = cell.v;
if (cell.t === 's' && value.indexOf('%') > -1) {
cell.z = '0.00%';
cell.t = 'n';
cell.v = Number(value.substring(0, value.length - 1)) / 100;
}
});
XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1');
XLSX.writeFile(workbook, filename);
題外話
- 這個庫真的很強大,還可以自定義很多其他的東西。
- 安利一下我自己寫的 excel 導出庫download-excel