【问题标题】:convert number to string when using datatables export to excel使用数据表导出到excel时将数字转换为字符串
【发布时间】:2019-12-10 08:47:54
【问题描述】:

当我尝试使用数据表按钮将数据导出为 excel 时遇到一些问题。

当我的数据类型是数字并且从0开始时,这个值就会消失。 他们还自动提供 (.) 点作为分隔符。有人可以帮我解决这个问题吗?

我的数据

导出为 excel 时

我想要这样的数据。没有(点),当数字0在开头时,数字0不会丢失

这是我的脚本

$('#submitdata').on('click',function(){
    var vbasedon = $("#selbased").val();
    var mulai = $("#start_date").val();
    var selesai = $("#end_date").val();
    var vtipe = '';

    if(vbasedon=='apartemen' || vbasedon=='rusunawa'){
        var vtipe=$(".tipedt").val();
    } else {
        vtipe='';
    }




    $.ajax({
        url: "<?= base_url('index.php/')?>",
        data: {vbasedon:vbasedon,mulai:mulai,selesai:selesai,vtipe:vtipe},
        cache: false,
        type: "POST",
        dataType:"JSON",
        success: function(msg){

            initEffortStandardTable(msg);
        }
    });




});

function initEffortStandardTable(dataObject) {

    var effortStandardTable = $('.laporan').DataTable();
    var columns = [];
    Object.keys(dataObject[0]).forEach(column=> {
        if (column === 'ctotalPerYear'
            || column === 'ftotalPerYear'
            || column === 'CPUETotalPerYear') return;
            columns.push({
                data: column,
                title : column.toString().toUpperCase().replace('_', '  '),
                footer: column
            });
    });
    effortStandardTable.destroy();
    $('#laporan').empty();
    var html = `<table class="table table-striped table-bordered table-hover laporan" ></table>`;
    $('#laporan').append(html);
    effortStandardTable = $('.laporan').DataTable({
        data: dataObject,
        columns : columns,
        "bDestroy": true,
        responsive: true,
        dom: '<"html5buttons"B>lTfgitp',
        buttons: [
        { extend: 'copy'},
        {extend: 'excel', title: 'Laporan'},
        {

            extend: 'pdfHtml5',
            orientation: 'landscape',
            pageSize: 'A4'
        }]
    });
}

【问题讨论】:

  • 如何将值导出为 excels "string-function" ="String" like '&lt;td&gt;="'+msg[i].nama+'"&lt;/td&gt;'
  • 对不起,我忘了删除那部分。我只是通过了这个 initEffortStandardTable(msg); with "msg" 是我从数据库中得到的一个数组。

标签: php jquery ajax excel datatables


【解决方案1】:

我找到了问题的答案。 我只需要通过添加 unicode '\u200C' 来操作数据。 所以我的代码会是这样的

columns.push({
data: column,
title : column.toString().toUpperCase().replace('_', '  '),
footer: column,
render: 
    data=>{data=> column == 'NIM' ? '\u200C'+data : data
});

这是我的结果。

【讨论】:

    【解决方案2】:

    在 Excel 中包含超过 15 位数字的数字,它将所有超过第十五位的数字更改为零。您可以在导出时将列值转换为字符串。

    //Use customizeData
    exportOptions: {
                       //--
                   },
    customizeData: function (data) {
                  var ind = data.header.indexOf("ColumnName"); // This code is to find the column name's index which you want to cast.
                  for (var i = 0; i < data.body.length; i++) {
                      data.body[i][ind] = '\u200C' + data.body[i][ind]; //will cast the number to string.
                    }
                 }
    

    Error_Image 如下:

    https://i.stack.imgur.com/A39hf.png

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 2022-08-11
      • 2021-02-09
      • 2011-11-28
      • 2021-10-28
      • 2019-05-24
      • 2015-10-29
      相关资源
      最近更新 更多