You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决datatables.net导出excel时长数字被转为指数格式的问题

Datatables导出Excel长数字自动转指数值解决方案

以下3种方案可适配不同业务场景:

方案1:导出时强制指定目标列为文本格式(推荐列固定场景使用)

直接修改导出的Excel内部单元格属性,不会修改原始数据和页面展示内容,性能最优
初始化配置中excelHtml5按钮增加customize回调即可:

$('#yourTable').DataTable({
  dom: 'Bfrtip',
  buttons: [
    {
      extend: 'excelHtml5',
      customize: function(xlsx) {
        const sheet = xlsx.xl.worksheets['sheet1.xml'];
        // 示例匹配第3列(对应Excel列号为C),可按需修改匹配规则
        $('row c[r^="C"]', sheet).each(function() {
          // 55为Datatables内置的纯文本格式编号
          $(this).attr('s', '55');
          const cellVal = $(this).find('v').text();
          // 仅对11位及以上的长数字设置文本类型,可调整判断规则
          if(/^\d{11,}$/.test(cellVal)) {
            $(this).attr('t', 'str');
          }
        });
      }
    }
  ]
})

方案2:导出预处理添加零宽字符(兼容所有Excel版本)

给长数字前拼接不可见的零宽不换行空格,Excel会自动识别为文本类型,不会触发数值格式化,适配性最强

$('#yourTable').DataTable({
  dom: 'Bfrtip',
  buttons: [
    {
      extend: 'excelHtml5',
      exportOptions: {
        format: {
          body: function(data, row, column, node) {
            // 示例判断第2列(索引从0开始),可按需调整列索引和判断规则
            if(column === 1 && /^\d{11,}$/.test(data.trim())) {
              return '\u200C' + data.trim();
            }
            return data;
          }
        }
      }
    }
  ]
})

注:零宽字符不会在Excel中显示,也不影响后续数值复制、运算等操作

方案3:全表数值默认按文本导出(适用长数字列不固定场景)

无需提前指定列,导出时所有单元格默认按文本格式处理,适合表格列动态变化的场景

$('#yourTable').DataTable({
  dom: 'Bfrtip',
  buttons: [
    {
      extend: 'excelHtml5',
      customize: function(xlsx) {
        const sheet = xlsx.xl.worksheets['sheet1.xml'];
        // 遍历所有单元格设置为文本格式
        $('row c', sheet).attr('s', '55');
      }
    }
  ]
})

内容的提问来源于stack exchange,提问作者Idrak Dareshani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:18:03