首先导入js插件库 bootstrap-table-export.js 和tableExport.js
一、由于前台都是使用js加载数据和官方的js库支持的方法不同,出现了导出的excel文件一直为空的问题
在导出时获取数据的方法findRows(tableExport.js文件中)中原方法如下:
function findRows ($tpart, rowSelector) {
return $tpart.find(rowSelector).filter (function () {
return $(this).find('table').length === 0 && $(this).parents('table').length === 1;
});
}
在获取数据后加了一个过滤器,由于页面加载数据的方式不同,导致$tpart中是没有table标签的,所以返回值为空,导致导出的文件数据一直是空。在此处可以将后边的过滤器去掉,正常返回数据就可以了。
function findRows ($tpart, rowSelector) {
return $tpart.find(rowSelector);
/*.filter (function () {
return $(this).find('table').length === 0 && $(this).parents('table').length === 1;
});*/
}
二、但是接下来,又有了新的问题,导出的数据中,如果有数字类型的,或者字符串以0开头的,会自动去掉。
在网上查了后,可以加"mso-number-format:\@\''将值以文本类型输出,在tableExport.js文件中将源代码改成如下方式,即解决问题:
var tdcss = $(cell).data("tableexport-msonumberformat");
if ( typeof tdcss == 'undefined' && typeof defaults.onMsoNumberFormat === 'function' )
tdcss = defaults.onMsoNumberFormat(cell, row, col);
/*if ( typeof tdcss != 'undefined' && tdcss !== '' )
tdstyle = 'style="mso-number-format:\'' + tdcss + '\'';*/
tdstyle = 'style="mso-number-format:\@\'' + tdcss + '\'';
三、然而接下又一个坑来了。测试时只用WPS测试了,发现用office根本没用。文件用记事本打开,发现值是没有问题的,只是office不识别。用WPS和office的excel试了半天,在单元格上加了一个属性解决了问题,如下:trData += '<td x:str='+tdvalue;