Bootstrap TableExport十进制问题

时间:2016-06-16 05:28:40

标签: php jquery ajax excel bootstrap-table

我有一个显示员工数据的引导表,包括具有给定格式的工资单ID:1606.xxxx

这是我的表格的样子:

<table id="table_search"
    data-toggle="table"
    data-search="true"
    data-show-refresh="true"
    data-show-toggle="true"
    data-show-columns="true"
    data-show-export="true"
    data-minimum-count-columns="2"
    data-show-pagination-switch="true"
    data-pagination="true"
    data-page-list="[10, 25, 50, 100, ALL]"
    data-show-footer="false"
    data-export-data-type="all"
    data-export-types="['excel']">
    <thead>
        <tr>
            <th data-field="id">ID</th>
            <th data-field="payroll_id" >Payroll ID</th>
            <th data-field="nama_karyawan">Employee Name</th>
            <th data-field="level">Level</th>
            <th data-field="grade">Grade</th>
            <th data-field="title">Title</th>
            <th data-field="lokasi">Location</th>
            <th data-field="cost_sales">Cost Sales</th>
            <th data-field="dept">Department</th>
            <th data-field="div">Division</th>
            <th data-field="dir">Directorat</th>
            <th data-field="active_period">Active Period</th>
        </tr>
    </thead>
</table>

该表正确显示,但是当我使用TableExport插件将其导出到excel时,它会像这样 exported results

正如你所看到的,插件以某种方式将其视为带小数的数字,这正是我所避免的。我试过评论parseNumber函数,这可能是tableExport js文件中的原因,但是结果总是出现相同的

我做错了什么?

PS:我不希望在导出文件后进行格式化,我希望它按原样导出数据。

1 个答案:

答案 0 :(得分:0)

您可以使用

...
<td data-tableexport-msonumberformat="\@">123.450</td>
...

在创建tableExport.js Excel导出时,mso-number-format: "\@"将使用TD作为HTML样式。这导致将单元格格式化为Text

实施例: http://jsfiddle.net/uqtubq5c/1/

您也可以使用

...
<td data-tableexport-msonumberformat="0.000">123.450</td>
...

这导致Excel中的数字格式0.000。因此,单元格内容仍然是一个数字,并且可以进一步用于计算。在计算中使用Text可能会导致问题。

如果您无法将自己的data-tableexport-msonumberformat属性设置为TD元素,则可以扩展tableExport.jquery.plugin

tableExport.js中:

...
      var defaults = {
        onMsoNumberFormat: onMsoNumberFormat,
...

onMsoNumberFormat必须是一个函数。

如果函数onMsoNumberFormat如下:

onMsoNumberFormat = function(cell, row, col) {
 if (row > 0 && col == 2) {
  return "#\\,##0\\.00";
 }
 if (row > 0 && col == 3) {
  return "\\@";
 }
};

然后从第2行(行&gt; 0)向上的第三列(col == 2)将获得style="mso-number-format:#\,##0\.00",从第2行(行&gt; 0)向上的第四列(col == 3)将获得style="mso-number-format:\@"@格式为Text

实施例: http://jsfiddle.net/uqtubq5c/3/