尝试在导出过程中从数据表中删除 html

Trying to strip html from Datatables during export

本文关键字:数据表 删除 html 过程中      更新时间:2023-09-26

我在这里使用数据表作为示例。因此,为了导出数据,我使用了一个函数,该函数允许我在 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'
        ]
});

代码中不能有多个返回语句,只执行第一个,请尝试以下操作:

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;
                }
            } 
        } 
    }
};