You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:52:25