Bootstrap TableExport小数问题

Bootstrap TableExport decimal issue

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

这是我的 table 的样子:

<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>

table 显示正确,但是当我使用 TableExport 插件将它导出到 excel 时,它是这样的 exported results

如您所见,插件以某种方式将其视为带小数点的数字,这正是我要避免的。我已经尝试评论 parseNumber 函数,这可能是 tableExport js 文件中的原因,但是结果总是相同的

我做错了什么?

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

你可以使用

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

有了这个,tableExport.js 将在创建 HTMLExcel 导出时使用 mso-number-format: "\@" 作为 TD 样式。这导致将单元格格式化为 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 行(行 > 0)向上的第三列(col==2)将得到 style="mso-number-format:#\,##0\.00" 和第 2 行(行 > 0)向上的第四列(col==3)会得到style="mso-number-format:\@"@Text 格式。

示例: http://jsfiddle.net/uqtubq5c/3/