从XLS导出列中删除<span>

时间:2015-06-05 20:39:25

标签: javascript jquery datatables tabletools

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

单击导出按钮,我想隐藏/删除导出文件中的<span>元素。不要删除整列,而只删除该列中的<span>元素。

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

由于

已更新

    "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了,我只是不确定剥离<span>元素的最佳方法。

2 个答案:

答案 0 :(得分: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;
                    }
                }
            ]
        }
    } );
} );

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

修改 阅读所有这篇文章,并使用更适合您需求的选项 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?

答案 1 :(得分:1)

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

要使其正常工作,您需要删除fnCellRender。显然,如果存在fnCellRender,TableTools默认情况下不进行HTML剥离。

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

从手册:

  

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

     

DataTables有许多自动的内置类型   检测

     

...

     

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

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