Fork me on GitHub

前端 sheetjs 导出 excel 设置百分比格式

概述

前端导出 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
posted @ 2020-03-13 08:34  馒头加梨子  阅读(1741)  评论(0编辑  收藏  举报