嗨,我正在使用jQuery Datatables 1.10。我正在尝试导出Datatable的多个标题行,但没有得到。但它只导出了第二个标题行。我正在使用按钮:
buttons: [{
extend: 'excel',
header: true
}, {
extend: 'print',
header: true
}],
My table结构类似
<table id="example" style="color: black;" class="display compact cell-border" cellspacing="0">
<thead>
<tr>
<th rowspan="2">Sl.No</th>
<th rowspan="2">Zone</th>
<th colspan="2">Allotted</th>
<th colspan="2">Vacant</th>
<th colspan="2">Amenities</th>
<th colspan="2">Total</th>
</tr>
<tr>
<th>No Of Plots</th>
<th>Area</th>
<th>No Of Plots</th>
<th>Area</th>
<th>No Of Plots</th>
<th>Area</th>
<th>No Of Plots</th>
<th>Area</th>
</tr>
</thead>
</table>
9条答案
按热度按时间toe950271#
上面提到的solution on the DataTable-forum不适用于最新版本。我已经将其修改为适合我的方式。我在buttons.html5.js中添加了一个本地函数:
然后,我将同一文件中
DataTable.ext.buttons.excelHtml5
中的代码更改为:f2uvfpb92#
由于我们大多数人都搞不清楚这种方法到底是如何工作的,所以我想详细介绍一下Ronnie给出的解决方案。
1.要使Excel按钮工作,请添加
buttons.html5.js
、dataTables.buttons.min.js
、jszip.min.js
。1.对于多行表头表导出,在文档底部的
buttons.html5.js
中添加below函数1.在同一文件中使用查找
DataTable.ext.buttons.excelHtml5
并替换代码块至
就是这样。您可以导出多个标题行。
如果你想导出合并的单元格,下面的代码将帮助你。
将此功能添加到按钮自定义功能中。
ijxebb2r3#
答案由@ronnie https://stackoverflow.com/a/42535830/5835910是工作。要使它工作下载文件从jquery数据表下载构建器https://datatables.net/download/index。
请不要使用示例页面中的文件。
nbewdwxp4#
嗨,也许我有点晚了,但我希望我的回答能帮助其他人。我使用一个额外的库导出了所有行,在我的例子中是table2excel。我只是使用**html()函数复制了标题行,并使用.DataTable()**函数获取了所有行。代码如下所示:
它解决了我的问题。
lf3rwulv5#
最好查看此数据表文档。请在下面找到URL Export multiple row headers
piah890a6#
我创建了一个自定义buttons.html5.js(基于Ronnie的解决方案),它允许Excel导出中的多个页眉和页脚
https://gist.github.com/emersonmoretto/41993309f74a4b09f8e90c0a541de342
46scxncf7#
你好,我迟到了,但我发现了一个简单的解决方案,由https://stackoverflow.com/a/56370447。是的,它不是dataTable库,但希望它能帮助一些开发人员谁正在寻找另一个解决方案。
我刚刚将值从“my_id_table_to_export”更改为
<a href="#" onclick="download_table_as_csv('my_id_table_to_export');">Download as CSV</a>
到'示例'(dataTable ID)
<a href="#" onclick="download_table_as_csv('example');">Download as CSV</a>
然后我调用了函数(请看上面的解决方案)
uqdfh47h8#
由于这是此问题的最佳搜索结果,因此我想分享一下我的解决方法。
数据库导出函数将从最后一个标题行开始。即使最后一行被隐藏,它也会这样做!
因此,解决此问题的一个非常简单的方法是向标题中再添加一行,为其给予要导出的列名,然后隐藏该行。
例如:
它仍然只导出一个标题行,但这样您至少可以控制导出标题的内容。
编辑:刚刚意识到排序也应用于最后一列,因此如果它被隐藏,您将无法排序。添加“bSortCellsTop:true”添加到配置中应该可以解决这个问题。
编辑2:抱歉,没关系。添加bSortCellsTop:false完全破坏了整个解决方案。哇,真是一团糟。
20jt8wwn9#
打印时使用按钮中的自定义功能。因为DataTable只支持一个标题行。