DataTables导出到Excel下载一个zip文件。

6
我正在使用Buttons扩展在jQuery DataTables上实现导出按钮。除了导出到Excel的按钮之外,我已经使所有按钮工作正常。
以下所有脚本均已包含:
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/datatables/media/js/jquery.dataTables.js"></script>
<script src="bower_components/datatables/media/js/dataTables.bootstrap.js"></script>
<script src="bower_components/datatables-buttons/js/dataTables.buttons.js"></script>
<script src="bower_components/datatables-buttons/js/buttons.html5.js"></script>
<script src="bower_components/datatables-buttons/js/buttons.print.js"></script>
<script src="bower_components/datatables-buttons/js/buttons.bootstrap.js"></script>
<script src="bower_components/jszip/dist/jszip.js"></script>
<script src="bower_components/pdfmake/build/pdfmake.js"></script>
<script src="bower_components/pdfmake/build/vfs_fonts.js"></script>

然后我创建按钮并将它们附加到一个 div 中:
// Create and render buttons
new $.fn.dataTable.Buttons( table, {
    buttons: ['copyHtml5', 'csvHtml5', 'excelHtml5', 'pdfHtml5', 'print']
})
table.buttons().container().appendTo($('.header-right'), self);

当点击Excel按钮时,我的应用程序会下载一个xlsx.zip文件。为什么不是下载".xlsx"文件呢?
我也尝试通过手动添加扩展名来扩展按钮,但无论我将扩展名属性设置为什么,最终都会变成"extension-name.zip"。
new $.fn.dataTable.Buttons( table, {
    buttons: [
        {
            extend: 'excelHtml5',
            extension: '.xlsx'
        }
    ]
 })

你有什么问题? - Axel Amthor
问题添加在最后。 - j.fong
最终结果不是要有一个 .zip 扩展名吗?.zip 文件内将包含 .xlsx 文件。 - Papa
1
尝试更改JS文件的顺序,以便最后加载buttons.html5.js - Gyrocode.com
@j.fong,你有什么进展吗?我也遇到了类似的问题。Excel按钮下载一个zip文件。 - Raeesaa
解决方法如下: { extend: 'excelHtml5', title: 'payments', extension: '.xlsx' } 我必须明确设置标题和扩展名。 - j.fong
3个回答

9

设置Title属性对我有用。

以下内容以.xlsx文件扩展名导出。

 buttons: [{
            extend: 'excelHtml5',
            title: 'Location Report' 
            }
          ],.....etc

如果未设置标题,则导出的文件将使用 .zip 文件扩展名。

 buttons: [{
            extend: 'excelHtml5',
            title: '' 
            }
          ],.....etc

5
我也遇到了相同的问题……但我认为这与浏览器有关。
  • 在 Mozilla Firefox 中,当您点击 Excel 导出时,它会询问您是否要打开或保存文件。当您点击“打开”时,它会将文件暂时保存为 zip 格式并打开 zip 文件(实际上是 .xlsx 文件)。
  • 如果您将扩展名从 zip 改为 xlsx,那么您就可以继续使用了。
  • 而当您点击“保存”时,它只会保存 .xlsx 文件。
  • 而在 Chrome 中,它直接将文件保存为 .xlsx。

4

我也遇到过同样的问题。在Chrome中运行得非常完美,但在Mozilla Firefox中无法正常工作......

经过了很多努力和研究之后,我找到了解决方案。

请在datatable js文件后将以下文件包含在您的脚本中。//cdn.datatables.net/buttons/1.1.2/js/buttons.html5.min.js

这对我来说是有效的。


1
我已经为此苦苦挣扎了数小时,但它完美地解决了我的问题。给这个人颁发一枚奖章吧。 - Lucas Meine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接