vue XLSX导出长数字变科学计数法怎么解决?

1、订单号在html中是文本导出的时候自动转成数字了
2、在写出到excel的时候长数字最后三位全部变成0,数据已经错了,所以在excel里改格式没用
3、尝试过吧xlsx模块里所有的toExponential全部删了也是没用

      var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"));
      var wbout = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array"
      });
      try {
        FileSaver.saveAs(
          new Blob([wbout], { type: "application/octet-stream" }),
          "sheetjs.xlsx"
        );
      } catch (e) {
        if (typeof console !== "undefined") console.log(e, wbout);
      }
      return wbout;
阅读 10.1k
4 个回答

第一行代码加上 { raw: true } 导出的时候使用原来的格式
var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"),{ raw: true });

标准答案是 ="${number}",比如原本是 12345678,就输出 ="12345678",利用公式。

使用 ` 会在表格里留下痕迹,也不好。

比较简单粗暴的方式是把可能的长数字列前面加一个字符 `

比如 12345678901234567890 变成 `12345678901234567890,Excel 遇到非纯数字列就会停止科学计数法转换。

支付宝、微信支付等商户平台后台导出订单就是这么干的。

当然了最优解肯定是先设置指定列单元格格式是文本,然后再给单元格赋值(注意先后顺序,先赋值再改格式就晚了)。不过我没用过你说的这个库,怎么设置自己摸索一下吧。


补充:

楼下 @Meathill 提到了利用公式来输出文本,也很巧妙。但要注意公式里的双引号千万别丢了,否则还是以数值形式输出,又变科学技术法了。

转换为字符串类型,也就是Excel中的 数值 --> 文本

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏