Datatables Excel导出添加自定义格式化后HTML标签无法去除求助
解决DataTables导出Excel时保留HTML标签的问题
问题核心:当你自定义exportOptions.format.body函数后,DataTables默认的自动剥离HTML标签逻辑会被覆盖——哪怕你只修改了第18列,其他列直接返回原始data,也会导致这些列的HTML标签无法被自动去除。
修复方案
方案1:手动为非目标列剥离HTML标签
在format.body函数中,对非18列的内容用正则表达式去除HTML标签后再返回:
buttons: [ { extend: "excelHtml5", exportOptions: { format: { body: function (data, row, column, node) { // 定义剥离HTML标签的工具函数 const stripHtml = (str) => str.replace(/<[^>]*>/g, ''); // 第18列处理逗号转点,其他列先剥离HTML再返回 return column === 18 ? data.replace(",", ".") : stripHtml(data); }, }, }, tag: "img", className: "btn-excel", title: "file_title", titleAttr: "Excel", attr: { src: "../images/menu_img/excel.ico", }, action: newexportaction, }, ];
方案2:复用DataTables内置文本渲染器
DataTables提供了$.fn.dataTable.render.text()渲染器,专门用来剥离HTML标签,直接调用它的处理逻辑即可:
buttons: [ { extend: "excelHtml5", exportOptions: { format: { body: function (data, row, column, node) { // 用内置渲染器处理HTML剥离 const plainText = $.fn.dataTable.render.text().display(data); // 第18列额外处理逗号转点,其他列直接返回剥离后的文本 return column === 18 ? plainText.replace(",", ".") : plainText; }, }, }, tag: "img", className: "btn-excel", title: "file_title", titleAttr: "Excel", attr: { src: "../images/menu_img/excel.ico", }, action: newexportaction, }, ];
两种方案都能让非18列的HTML标签被正常剥离,同时保留你对第18列的格式修改。
内容的提问来源于stack exchange,提问作者Elif Ece Sanli
相关产品推荐
相关产品推荐

