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
将在创建 HTML
Excel 导出时使用 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
格式。
我有一个 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
将在创建 HTML
Excel 导出时使用 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
格式。