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

发布于 2018-03-14 08:45:55

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

查看更多

关注者
0
被浏览
7.1k
大饼博士
大饼博士 认证专家 2018-03-14
这家伙不懒,可这里写不开!
$(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:

23 个回答
ajw333
ajw333 2018-05-25
这家伙很懒,什么也没写!

最新更新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())?'\\@':'';
                }
              }
            },
jinbanglong
jinbanglong 2018-07-16
越努力,越幸运!

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

F4NNIU
F4NNIU 认证专家 2018-03-15
我知道的一定回复,如果觉得我的回答还不错,求点赞打赏 。^_^

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

大饼博士
大饼博士 认证专家 2018-04-27
这家伙不懒,可这里写不开!

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

ajw333
ajw333 2018-05-28
这家伙很懒,什么也没写!

@F4NNIU 应该的

F4NNIU
F4NNIU 认证专家 2018-03-14
我知道的一定回复,如果觉得我的回答还不错,求点赞打赏 。^_^

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

jiangpengju
jiangpengju 2018-03-15
这家伙很懒,什么也没写!

@大饼博士 非常感谢

ajw333
ajw333 2018-04-27
这家伙很懒,什么也没写!

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

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

...

) 在哪个文件中配置

ajw333
ajw333 2018-04-30
这家伙很懒,什么也没写!

己解决,感谢

878655436
878655436 2018-05-17
这家伙很懒,什么也没写!

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

F4NNIU
F4NNIU 认证专家 2018-05-25
我知道的一定回复,如果觉得我的回答还不错,求点赞打赏 。^_^

@ajw333 感谢分享。

我也不知道该叫什么
这家伙很懒,什么也没写!

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

大饼博士
大饼博士 认证专家 2018-06-30
这家伙不懒,可这里写不开!

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

我也不知道该叫什么
这家伙很懒,什么也没写!

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

我也不知道该叫什么
这家伙很懒,什么也没写!

@大饼博士 好了 谢谢了

shehuiren
shehuiren 2018-08-11
这家伙很懒,什么也没写!

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

ajw333
ajw333 2018-09-06
这家伙很懒,什么也没写!

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

              fileName:'适龄儿童',
              ignoreColumn: [0, -1],
           //   mso:{
                  worksheetName:'适龄儿童',
            //      fileFormat:  'xlsx',
                  //修复导出数字不显示为科学计数法
              onMsoNumberFormat: function (cell, row, col) {
                    return !isNaN($(cell).text())?'\\@':'';
                }
          //    }
            }, 把mso备注了
qq471754603
qq471754603 2018-09-28
这家伙很懒,什么也没写!

17楼完美解决

lnyyj
lnyyj 2019-07-09
这家伙很懒,什么也没写!

@大饼博士 大神打扰下,我两种方法都试过,为啥显示的还是科学计数法?
exportOptions:{

                mso:{
                    onMsoNumberFormat: function (cell, row, col) {
                        return !isNaN($(cell).text()) ? '\\@' : '';
                    },
                },
                onMsoNumberFormat: function (cell, row, col) {
                    return !isNaN($(cell).text()) ? '\\@' : '';
                },
            }
kanganxi
kanganxi 2019-03-05
这家伙很懒,什么也没写!

@大饼博士 不好意思打扰了,请问一下我的代码是这样子` table.bootstrapTable({

            url: $.fn.bootstrapTable.defaults.extend.index_url,
            exportTypes: ['csv','excel'],
            pk: 'id',
            sortName: 'id',
            exportOptions: {
                fileName:Moment().format("YYYYMMDD-HHmm")+'-财务',
                ignoreColumn: [0, 'operate'],
                onMsoNumberFormat: function (cell, row, col) {
                    return !isNaN($(cell).text())?'\\@':'';
                },
            },
            columns: [
                [`

但是导出来还是显示科学计数,请问一般是什么问题造成的,感谢

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览