导出 Excel 文件时身份证号变成科学计数法怎么办?

jiangpengju 7月前 1549

导出 Excel 文件时身份证号变成科学计数法怎么办?

最后于 5月前 被F4NNIU编辑 (完善标题)
最佳回复
  • 大饼博士 7月前
    $(document).ready(function()
      {
        $('#table').bootstrapTable('refreshOptions', {
            exportOptions: {onMsoNumberFormat: DoOnMsoNumberFormat}
        });
      });
      function DoOnMsoNumberFormat(cell, row, col) {
         return (row > 0 && col == 0) ? '\\@' : '';
      }

    row ,col数值根据你的列号修改,索引是从0开始的
    所以 去掉标题栏 row 一般从 1 开始,col根据自己的情况来,或者不判断,所有的单元格都是文本格式
    关于 \\@ ,参见 tableExport.jquery.plugin#options

    "\@" 强制为文本格式
    "0" 数字 无小数
    "0\.000" 数字 三位小数
    "0%" 百分比 无小数
    "Percent" 百分比 两位小数
    或者 直接闭包
    $('#table').tableExport({type: 'excel', onMsoNumberFormat: function(cell, row, col) {
        return (row > 0 && col == 0) ? '\\@' : '';
      }
    });

    当然了,为了一致性,最好写在js文件的 table.bootstrapTable 配置里面

    table.bootstrapTable({
      ...
       exportOptions: {
                type: 'excel', 
               onMsoNumberFormat: function(cell, row, col) {
                    return (row > 0 && col == 0) ? '\\@' : '';
               }}
    ...
    
    ) 

    这是我最推荐的方法:joy:

最新回复 (21)
  • F4NNIU 打赏 7月前
    感谢TA
    0 引用 2

    @jiangpengju 之前在群里有人说给数值加上 ’ (单引号),让 Excel 认为是字符。

  • 大饼博士 最佳回复 7月前
    感谢TA
    0 引用 3
    $(document).ready(function()
      {
        $('#table').bootstrapTable('refreshOptions', {
            exportOptions: {onMsoNumberFormat: DoOnMsoNumberFormat}
        });
      });
      function DoOnMsoNumberFormat(cell, row, col) {
         return (row > 0 && col == 0) ? '\\@' : '';
      }

    row ,col数值根据你的列号修改,索引是从0开始的
    所以 去掉标题栏 row 一般从 1 开始,col根据自己的情况来,或者不判断,所有的单元格都是文本格式
    关于 \\@ ,参见 tableExport.jquery.plugin#options

    "\@" 强制为文本格式
    "0" 数字 无小数
    "0\.000" 数字 三位小数
    "0%" 百分比 无小数
    "Percent" 百分比 两位小数
    或者 直接闭包
    $('#table').tableExport({type: 'excel', onMsoNumberFormat: function(cell, row, col) {
        return (row > 0 && col == 0) ? '\\@' : '';
      }
    });

    当然了,为了一致性,最好写在js文件的 table.bootstrapTable 配置里面

    table.bootstrapTable({
      ...
       exportOptions: {
                type: 'excel', 
               onMsoNumberFormat: function(cell, row, col) {
                    return (row > 0 && col == 0) ? '\\@' : '';
               }}
    ...
    
    ) 

    这是我最推荐的方法:joy:

    最后于 7月前 被大饼博士编辑
    感谢以下的小伙的赞赏支持
  • F4NNIU 打赏 7月前
    感谢TA
    0 引用 4

    @大饼博士 非常感谢分享。

  • jiangpengju 楼主 7月前
    感谢TA
    0 引用 5

    @大饼博士 非常感谢

  • ajw333 5月前
    感谢TA
    0 引用 6

    @大饼博士 table.bootstrapTable({
    ...
    exportOptions: {

            type: 'excel', 
           onMsoNumberFormat: function(cell, row, col) {
                return (row > 0 && col == 0) ? '\\@' : '';
           }}

    ...

    ) 在哪个文件中配置

  • 大饼博士 5月前
    感谢TA
    0 引用 7

    你对应的控制器js里,搜索 table.bootstrapTable 写在这个里面

  • ajw333 5月前
    感谢TA
    0 引用 8

    己解决,感谢

  • 878655436 5月前
    感谢TA
    0 引用 9

    如果是超过 10万条数据,如何分页呢

  • ajw333 4月前
    感谢TA
    0 引用 10

    最新更新5.13版以前的使用 exportOptions: {

                  
                      //修复导出数字不显示为科学计数法
                  onMsoNumberFormat: function (cell, row, col) {
                        return !isNaN($(cell).text())?'\\@':'';
                    }
                 
                },

    5.13以后的使用 exportOptions: {

                 
                  mso:{
                     // fileFormat:        'xlsx',
                      //修复导出数字不显示为科学计数法
                  onMsoNumberFormat: function (cell, row, col) {
                        return !isNaN($(cell).text())?'\\@':'';
                    }
                  }
                },
    最后于 4月前 被ajw333编辑
    感谢以下的小伙的赞赏支持
  • F4NNIU 打赏 4月前
    感谢TA
    0 引用 11

    @ajw333 感谢分享。

  • ajw333 4月前
    感谢TA
    0 引用 12

    @F4NNIU 应该的

  • 感谢TA
    0 引用 13

    @大饼博士 image.png
    是这样写吧 但是为什么我的没有变化

  • 大饼博士 3月前
    感谢TA
    0 引用 14
    我也不知道该叫什么 @大饼博士 ![image.png](//cdn.forum.fastadmin.net/uploads/201806/30/15cab4fbf92c98bb1de86fdfdc4244f2) 是这 ...

    新版的方法变化了,参照10楼

  • 感谢TA
    0 引用 15

    @大饼博士 我用的是最早的版本 10楼的两种方法都试过了 但是都没有效果

  • 感谢TA
    0 引用 16

    @大饼博士 好了 谢谢了

  • jinbanglong 3月前
    感谢TA
    0 引用 17

    QQ截图20180716110232.png
    10楼可以,赞一个

  • shehuiren 2月前
    感谢TA
    0 引用 18

    @ajw333 你的两种方法我都试了,好像还是没效果,有什么地方是特别注意的吗?

  • ajw333 1月前
    感谢TA
    0 引用 19

    @shehuiren 最新版中,这样可以 exportOptions: {

                  fileName:'适龄儿童',
                  ignoreColumn: [0, -1],
               //   mso:{
                      worksheetName:'适龄儿童',
                //      fileFormat:  'xlsx',
                      //修复导出数字不显示为科学计数法
                  onMsoNumberFormat: function (cell, row, col) {
                        return !isNaN($(cell).text())?'\\@':'';
                    }
              //    }
                }, 把mso备注了
  • qq471754603 21天前
    感谢TA
    0 引用 20

    17楼完美解决

  • 未登录
    23
返回