从 XLS 导出的列中删除 <span>

Posted

技术标签:

【中文标题】从 XLS 导出的列中删除 <span>【英文标题】:Remove <span> from column on XLS export 【发布时间】: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 必须被移除。 没有任何答案有助于解决您的问题吗?还有问题吗? 【参考方案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 stringRemove 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。您能否更新您的问题,发布示例单元格内容并解释您想要删除的部分?

以上是关于从 XLS 导出的列中删除 <span>的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQLPLUS 删除假脱机 xls 文件中的 <p> 标记

我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?

有没有办法从 R 的列中取出异常值?

从 PowerBI 表的列中删除“%”符号

如何从结构类型数组的列中删除特定元素

从数据框中删除不包括一组列的列中的nan行。