我正在尝试在下载excel文件时将数字转换为datatables.js
中的文本。如果我通常在excel文件中手动将单引号'
放在一个它可以工作的数字之前..但是当我以编程方式执行时它不会...我在哪里做错了?以下是我的列声明;
"columns": [
{ "data": "ID", "visible": false, "searchable": false },
{
"data": "ProductCode", "title": 'Product Code', "visible": true, responsivePriority: 1, render: function (data, type, row) {
if (type === 'export') {
return "'" + data;
}
else {
return data;
}
}
},
...
]
这是我的按钮声明;
// Initialize Download Button
new $.fn.dataTable.Buttons(table, {
buttons: [{
extend: 'excel', text: 'Download Excel', className: 'btn-sm btn-success downloadButton', exportOptions: {
columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
orthogonal: 'export'
}
}]
});
在下载的excel文件中显示如此'12345
但是如果我只按F2(编辑)并按回车excel将其转换为文本:(。任何帮助都会非常明显。
答案 0 :(得分:0)
您是否尝试删除单引号?
这样做return "" + data;
。它应该工作。
答案 1 :(得分:0)
我通过在datatable.js文件中的addrow函数中注释掉下面的代码解决了这个问题。
//检测数字 - 不要将数字与前导零或负数匹配
// anywhere but the start
//if ( typeof row[i] === 'number' || (
// row[i].match &&
// $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) &&
// ! $.trim(row[i]).match(/^0\d+/) )
//) {
// cell = _createNode( rels, 'c', {
// attr: {
// t: 'n',
// r: cellId
// },
// children: [
// _createNode( rels, 'v', { text: row[i] } )
// ]
// } );
//}
//else {
以下是功能
var addRow = function ( row ) {
currentRow = rowPos+1;
rowNode = _createNode( rels, "row", { attr: {r:currentRow} } );
for ( var i=0, ien=row.length ; i<ien ; i++ ) {
// Concat both the Cell Columns as a letter and the Row of the cell.
var cellId = createCellPos(i) + '' + currentRow;
var cell;
if ( row[i] === null || row[i] === undefined ) {
row[i] = '';
}
// Detect numbers - don't match numbers with leading zeros or a negative
// anywhere but the start
//if ( typeof row[i] === 'number' || (
// row[i].match &&
// $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) &&
// ! $.trim(row[i]).match(/^0\d+/) )
//) {
// cell = _createNode( rels, 'c', {
// attr: {
// t: 'n',
// r: cellId
// },
// children: [
// _createNode( rels, 'v', { text: row[i] } )
// ]
// } );
//}
//else {
// Replace non standard characters for text output
var text = ! row[i].replace ?
row[i] :
row[i].replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, '');
cell = _createNode( rels, 'c', {
attr: {
t: 'inlineStr',
r: cellId
},
children:{
row: _createNode( rels, 'is', {
children: {
row: _createNode( rels, 't', {
text: text
} )
}
} )
}
} );
//}
rowNode.appendChild( cell );
}
relsGet.appendChild(rowNode);
rowPos++;
};