【问题标题】:Remove <span> from column on XLS export从 XLS 导出的列中删除 <span>
【发布时间】:2015-08-20 22:22:00
【问题描述】:

我有一个使用 TableTools 插件的工作 jQuery DataTable (https://www.datatables.net/),其中一列的每一行都有 &lt;span&gt; 元素。

单击导出按钮时,我想从导出的文件中隐藏/删除 &lt;span&gt; 元素。不删除整列,只删除该列中的 &lt;span&gt; 元素。

我怎样才能做到这一点?我了解如何从导出中删除整个列,但我还没有找到从导出中删除特定元素的方法。

谢谢

更新

    "oTableTools": {
        "sSwfPath": "/public/swf/copy_csv_xls_pdf.swf",
        "aButtons": [
            {
                "sExtends": "print",
            },
            {
                "sExtends": "copy",
            },
            {
                "sExtends": "csv",                   
                "fnCellRender": function ( sValue, iColumn, nTr, iDataIndex ) {
                    return sValue;
                 }               
            }
        ]
      }

我有fnCellRender,但我不确定最好的方法是去掉&lt;span&gt; 元素。

【问题讨论】:

  • 在我的测试中,最新的 TableTools 已经去除了 CSV 文件中的 HTML 标签。您使用的是什么版本的 DataTables 和 TableTools?
  • @Gyrocode.com 我已经用TableTools 2.2.4 对其进行了测试,但它没有。
  • @Kstro21,请参阅下面的答案和示例。为了让 TableTools 默认去除 HTML 标签,fnCellRender 必须被移除。
  • 没有任何答案有助于解决您的问题吗?还有问题吗?

标签: javascript jquery datatables tabletools


【解决方案1】:

您需要使用文档中的按钮的fnCellRender 选项:

用于修改通过fnGetTableData API方法从表中读取的数据(用于导出数据)。这允许在导出数据之前对其进行预处理 - 例如剥离 HTML 的某些部分或后缀其他数据。

阅读所有选项here。另请阅读初始化here 时的aButtons 选项。这个想法是定义TableTools 将使用的按钮,并在按钮定义中使用sExtends 选项来扩展TableTools 按钮行为。

这是一个例子:

$(document).ready( function () {
    $('#example').dataTable( {
        "dom": 'T<"clear">lfrtip',
        "tableTools": {
            "sSwfPath": "TableTools_files/copy_csv_xls_pdf.swf",
            "aButtons": [
                {
                    "sExtends":    "csv", //extend the default csv
                    "fnCellRender": function ( sValue, iColumn, nTr, iDataIndex ) {
                        if ( iColumn === 5 ) {
                            //feel free to modify the value here
                            return sValue +" TableTools";
                        }
                        return sValue;
                    }
                }
            ]
        }
    } );
} );

阅读示例中的 cmets,根据您的需要进行调整,随时发表评论。

编辑: 阅读所有这篇文章并使用更适合您需求的选项
How to strip HTML tags with jQuery?
Jquery: Strip all specifc HTML tags from string
Remove all HTMLtags in a string (with the jquery text() function)
JavaScript: How to strip HTML tags from string?

【讨论】:

  • 感谢您的回答。我已经更新了我的问题以包含我的“oTableTools”代码。我不知道如何从字符串中去除&lt;span&gt; 元素
【解决方案2】:

在我的测试中,最新的 TableTools 已经去除了 CSV 文件中的 HTML 标签。见this example

为了使其工作,您需要删除fnCellRender。显然,如果存在fnCellRender,TableTools 默认不会进行 HTML 剥离。

此外,尽管 DataTables 尝试自动确定列数据类型,但您可能需要考虑将 column type 设置为 html 以进行搜索和过滤。

来自手册:

在客户端处理模式下运行时,DataTables 可以处理 手册中每个单元格中用于显示的数据适用于 正在执行的操作。例如,HTML 标记将被删除 来自用于过滤匹配的字符串,而排序格式可能 删除货币符号以允许对货币值进行排序 数字上。

DataTables 有许多内置类型,这些类型是自动生成的 检测到

...

html - HTML 标签的基本字符串处理

  • 排序 - 已删除 HTML 标记进行排序
  • 过滤 - 从过滤字符串中删除 HTML 标记

【讨论】:

  • 你说得对,如果我删除 fnCellRender 就可以了。 @585connor 应该升级您的 TableTools 版本或使用我的答案。
  • @Kstro21,您的回答也是正确的,因为每个文档fnCellRender 可用于剥离 HTML 的某些部分,它为用户提供了更多控制权。
  • 我更新到 TableTools 的最新稳定版本并删除了 fnCellRender。它剥离标签,但留下它们的内容。我想完全删除 &lt;span&gt; 元素。
  • @585connor,那么您肯定需要按照@Kstro21 的建议使用fnCellRender。您能否更新您的问题,发布示例单元格内容并解释您想要删除的部分?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 2014-04-25
相关资源
最近更新 更多