xlsxjs导出的文本型数值求和问题

使用xlsxjs导出的excel

  • 如果是按文本导出,也即是设置raw:true,结果文件里数字列无法求和,原因是数字是以文本写入excel的,无法通过公式计算,即使是修改了单元格属性为数值;
  • 如果是按数字导出,也就是设置raw:false(默认设置),结果对于长串数字,会显示成科学计数法,甚至可能失去精度,原因是:
    Excel显示数字时,如果数字大于12位,它会自动转化为科学计数法;如果数字大于15位,它不仅用于科学技术法表示,还会只保留高15位,其他位都变0

解决办法:
1.通过table_to_sheet方法时设置raw:true,

sheet = XLSX.utils.table_to_sheet(document.getElementById(this.container), {
              raw: true,
              cellDates: true
            })

2.获取到sheet对象后打印出sheet对象,
在这里插入图片描述
如上图,{t:‘s’ }中 t 指 type ,s 是string缩写
3.如果需要某列的数值型字符串能够求和,就需要上图里遍历sheet,把类型改成{t:‘n’ }n表示number即可;

另外:
我没有使用fileSaverjs做导出,而是使用

let sheetName = 'sheet1',
            workBook = {
              SheetNames: [sheetName],
              Sheets: {
                [sheetName]: sheet
              }
            };
          XLSX.writeFile(workBook, `${this.excelName}.xlsx`)

这是我在看xlsxjs文档时看到的api,也好用,遂推荐给大家!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值