Javascript 尝试在导出期间从数据表中剥离html
我使用的数据表正是这个例子。因此,为了导出数据,我使用了一个函数,该函数允许我在excel中使用换行符更改Javascript 尝试在导出期间从数据表中剥离html,javascript,datatable,export-to-excel,Javascript,Datatable,Export To Excel,我使用的数据表正是这个例子。因此,为了导出数据,我使用了一个函数,该函数允许我在excel中使用换行符更改。 我用了这个: return column === 5 ? data.replace( /<br\s*\/?>/ig, "\n"): data; 返回列===5?data.replace(//ig,“\n”):数据; 然而,当我尝试添加第二个我想对不同列进行的更改时,它不起作用。。。我尝试在第一个工作替换的正下方添加以下内容: return column === 1 ? d
。
我用了这个:
return column === 5 ? data.replace( /<br\s*\/?>/ig, "\n"): data;
返回列===5?data.replace(//ig,“\n”):数据;
然而,当我尝试添加第二个我想对不同列进行的更改时,它不起作用。。。我尝试在第一个工作替换的正下方添加以下内容:
return column === 1 ? data.replace( /<.*?>/ig, ""): data;
返回列===1?data.replace(//ig,“”):数据;
首先将
更改为换行符后,我想基本上去掉所有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'
]
});
var fixNewLine={
出口选择:{
格式:{
正文:函数(数据、列、行){
返回列===5?数据。替换(//ig,“\n”):数据;
返回列===1?数据。替换(//ig,“”):数据;
}
}
}
};
变量t2e=$('#table2excel')。数据表({
dom:'Bfrtip',
按钮:[
$.extend(true,{},fixNewLine{
扩展:“excelHtml5”
} ),
“pdf”、“打印”、“复制”、“csv”/、“excel”
]
});
代码中不能有多个返回语句,只能执行第一个返回语句,请尝试以下操作:
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;
}
}
}
};
var fixNewLine={
出口选择:{
格式:{
正文:函数(数据、列、行){
如果(列==5){
data=data.replace(//ig,“\n”);
}
返回列===1?数据。替换(//ig,“”):数据;
}
}
}
};
单独处理每一列的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;
}
}
}
}
};
var fixNewLine={
导出选项:{
格式:{
正文:函数(数据、行、列、节点){
开关(列){
案例1:返回列===1?数据。替换(//ig,“”):数据;中断;
案例2:返回列===2?数据。替换(//ig,“”):数据;中断;
案例3:返回列===3?数据。替换(//ig,“”):数据;中断;
案例4:返回列===4?数据。替换(//ig,“”):数据;中断;
案例5:返回列===5?数据。替换(//ig,“”):数据;中断;
案例6:返回列===6?数据。替换(//ig,“”):数据;中断;
默认值:返回数据;中断;
}
}
}
}
};
Wow-man谢谢!这起作用了。但现在我尝试对我的所有列执行此操作:首先使用换行符更改
,然后删除剩余的html。所以我在body函数中尝试了这个方法:data=data.replace(//ig,“\n”);data=data.replace(//ig,“”);返回数据代码>但它没有正确保存换行符。。。您知道有什么解决方法吗?在最后一个default
案例中的return语句之后,您不需要break
。)你在做一些奇怪的事。。。当您有一个开关
时,案例1
将始终是列===1
,因此您不需要进行额外检查。您可以用return(column>0&&column<7):data.replace(//ig,“”)重写整个case语句?数据