[英]Trying to strip html from Datatables during export
我使用的數據表與此處的示例完全相同。 因此,要導出數據,我使用了一個允許我在excel中用換行符更改<br>
的功能。 我用這個:
return column === 5 ? data.replace( /<br\s*\/?>/ig, "\n"): data;
但是,當我嘗試添加第二個更改時,我想對其他列進行更改,這是行不通的……我嘗試在第一個工作替換項的正下方添加此更改:
return column === 1 ? data.replace( /<.*?>/ig, ""): data;
在首先將<br>
更改為換行符后,我希望基本上除去所有html標記。 但是就像我現在的代碼一樣, 第二部分在導出過程中只是被忽略了。有人知道我在做什么錯嗎?
這是我的完整代碼:
var fixNewLine = {
exportOptions: {
format: {
body: function ( data, column, row ) {
return column === 5 ? data.replace( /<br\s*\/?>/ig, "\n"): data;
return column === 1 ? data.replace( /<.*?>/ig, ""): data;
}
}
}
};
var t2e = $('#table2excel').DataTable({
dom: 'Bfrtip',
buttons:[
$.extend( true, {}, fixNewLine, {
extend: 'excelHtml5'
} ),
'pdf', 'print', 'copy', 'csv' //, 'excel'
]
});
您不能在代碼中有多個return語句,只有第一個將被執行,請嘗試以下操作:
var fixNewLine = {
exportOptions: {
format: {
body: function ( data, column, row ) {
if (column === 5) {
data = data.replace(/<br\s*\/?>/ig, "\n");
}
return column === 1 ? data.replace(/<.*?>/ig, ""): data;
}
}
}
};
一個單獨處理每個列的switch語句對我來說確實很好。 在下面查看我的用法...
var fixNewLine = {
exportOptions: {
format: {
body: function ( data, row, column, node ) {
switch(column){
case 1 : return column === 1 ? data.replace(/<.*?>/ig, "") : data; break;
case 2 : return column === 2 ? data.replace(/<.*?>/ig, "") : data; break;
case 3 : return column === 3 ? data.replace(/<.*?>/ig, "") : data; break;
case 4 : return column === 4 ? data.replace(/<.*?>/ig, "") : data; break;
case 5 : return column === 5 ? data.replace(/<.*?>/ig, "") : data; break;
case 6 : return column === 6 ? data.replace(/<.*?>/ig, "") : data; break;
default : return data; break;
}
}
}
}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.