从 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/),其中一列的每一行都有 <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>
元素。
【问题讨论】:
在我的测试中,最新的 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”代码。我不知道如何从字符串中去除<span>
元素【参考方案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。它剥离标签,但留下它们的内容。我想完全删除 <span>
元素。
@585connor,那么您肯定需要按照@Kstro21 的建议使用fnCellRender
。您能否更新您的问题,发布示例单元格内容并解释您想要删除的部分?以上是关于从 XLS 导出的列中删除 <span>的主要内容,如果未能解决你的问题,请参考以下文章
使用 SQLPLUS 删除假脱机 xls 文件中的 <p> 标记
我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?