Javascript 将jQuery数据表导出到Excel时的表格单元格格式
我的应用程序中有一个需要导出到Excel的datatable,但在Excel中导出datatable时,每个单元格的格式类型为“General”。但是,我希望我的所有单元格在Excel中以“文本”格式显示 我尝试将数据转换为字符串,但它通常仍显示结果。如果我尝试将数据转换为Int,那么它会在Excel中以数字格式显示,但我希望所有内容都以文本格式显示 以下是我试图更改数据类型的函数:Javascript 将jQuery数据表导出到Excel时的表格单元格格式,javascript,jquery,datatable,datatables,phpexcel,Javascript,Jquery,Datatable,Datatables,Phpexcel,我的应用程序中有一个需要导出到Excel的datatable,但在Excel中导出datatable时,每个单元格的格式类型为“General”。但是,我希望我的所有单元格在Excel中以“文本”格式显示 我尝试将数据转换为字符串,但它通常仍显示结果。如果我尝试将数据转换为Int,那么它会在Excel中以数字格式显示,但我希望所有内容都以文本格式显示 以下是我试图更改数据类型的函数: { "targets": 13, "render": function (data, type, r
{
"targets": 13,
"render": function (data, type, row){
var d = data.toString();
return d;
}
}
这里我只针对一个专栏。但是,我希望以我的所有列为目标。即使只针对一个专栏也行不通
任何帮助都将不胜感激。您可以应用以下代码来完成任务:
$('#example').DataTable( {
dom: 'Bfrtip',
columns: [
{ data: 'name' },
{ data: 'surname' },
{ data: 'position' },
{ data: 'office' },
{ data: 'salary' }
],
buttons: [
{
extend: 'excelHtml5',
customize: function(xlsx) {
//Get the built-in styles
//refer buttons.html5.js "xl/styles.xml" for the XML structure
var styles = xlsx.xl['styles.xml'];
//Create our own style to use the "Text" number format with id: 49
var style = '<xf numFmtId="49" fontId="0" fillId="0" borderId="0" xfId="0" applyFont="1" applyFill="1" applyBorder="1" applyNumberFormat="1"/>';
// Add new node and update counter
el = $('cellXfs', styles);
el.append(style).attr('count', parseInt(el.attr('count'))+1);
// Index of our new style
var styleIdx = $('xf', el).length - 1;
//Apply new style to the first (A) column
var sheet = xlsx.xl.worksheets['sheet1.xml'];
//Set new style default for the column (optional)
$('col:eq(0)', sheet).attr('style', styleIdx);
//Apply new style to the existing rows of the first column ('A')
//Skipping the header row
$('row:gt(0) c[r^="A"]', sheet).attr('s', styleIdx);
},
exportOptions: {
format: {
body: function(data, row, column, node) {
return column === 0 ? "\0" + data : data;
}
}
},
},
]
} );
更新日期:2019年4月4日 在上面的代码中添加了一个额外的技巧,以确保非常大的数字仍被视为文本:
exportOptions: {
format: {
body: function(data, row, column, node) {
return column === 0 ? "\0" + data : data;
}
}
},
JSFIDLE已更新numFmtId=“49”是Excel中文本单元格格式的预定义ID。您可以通过解压缩测试XLSX文件并分析xl\styles.xml和xl\worksheets\sheet1.xml来获得它,试图找到USPS跟踪编号的解决方案,即“92001902416755000004290987”。此脚本不适用于此格式。虽然它将单元格样式设置为数字格式“文本”,但值仍然显示不正确。例如,上述值最终为“9.2001902416755E+25”。我渴望找到一种方法来实现这一点。2019年4月4日的更新为我提供了“52100350002002002094983”之类的数据。如果我能帮助您,请您查看我对您问题的答案,并单击答案分数下的
v
,将答案标记为已接受。非常感谢。
exportOptions: {
format: {
body: function(data, row, column, node) {
return column === 0 ? "\0" + data : data;
}
}
},