如何使用 DataTables 和 Excel 解决 parseXML 问题?
Posted
技术标签:
【中文标题】如何使用 DataTables 和 Excel 解决 parseXML 问题?【英文标题】:How to solve the problem parseXML with DataTables and Excel? 【发布时间】:2019-03-15 07:25:46 【问题描述】:我对 DataTables 和 Excel 有疑问。我使用 pdf 和打印功能,效果很好,但 Excel 不行。我在浏览器中有这条消息(使用 F12):
> Uncaught TypeError: f.parseXML is not a function
at a (buttons.html5.min.js:26)
at _Api.action (buttons.html5.min.js:26)
at v (dataTables.buttons.min.js:16)
at HTMLButtonElement.<anonymous> (dataTables.buttons.min.js:17)
at HTMLButtonElement.dispatch (jquery-3.3.1.slim.min.js:2)
at HTMLButtonElement.v.handle (jquery-3.3.1.slim.min.js:2)
我的javascript:
<script type="text/javascript">
$(document).ready(function ()
var table = $('#summary').DataTable(
dom: 'Bfrtip',
buttons: ['excel', 'csv', 'pdf', 'print']);
);
</script>
我的 base.html.twig
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://bootswatch.com/4/flatly/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.5.4/css/buttons.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/responsive/2.2.3/css/responsive.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.5.4/css/buttons.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/select/1.2.7/css/select.dataTables.min.css">
<link rel="stylesheet" type="text/css" href="https://editor.datatables.net/extensions/Editor/css/editor.dataTables.min.css">
<link rel="stylesheet" href=" asset('css/main.css') " />
% block stylesheets %% endblock %
</head>
<body>
<script type="text/javascript"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.4/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.4/js/buttons.colVis.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.4/js/buttons.flash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.4/js/buttons.html5.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.5.4/js/buttons.print.min.js"></script>
<script src="https://cdn.datatables.net/select/1.2.7/js/dataTables.select.min.js"></script>
<script src="https://cdn.datatables.net/responsive/2.2.3/js/dataTables.responsive.min.js"></script>
<script src="https://editor.datatables.net/extensions/Editor/js/dataTables.editor.min.js"></script>
<script src="https://editor.datatables.net/extensions/Editor/js/editor.bootstrap4.min.js"></script>
<script src="https://cdn.datatables.net/plug-ins/1.10.19/sorting/datetime-moment.js"></script>
<script src="https://cdn.datatables.net/plug-ins/1.10.19/dataRender/datetime.js"></script>
<div class="container">
% block body %% endblock %
</div>
% block javascripts %% endblock %
</body>
</html>
按钮出现,但不起作用。我正在使用 Chrome。我搜索了但我没有找到解决方案。
提前谢谢你。
【问题讨论】:
【参考方案1】:您正在使用不支持 parseXML 函数的 jQuery 精简版。请改用普通版本。对于 3.3.1 版本,它将是:
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
对于所有当前版本,请转到 https://code.jquery.com/jquery/ 并选择 jQuery Core 的“缩小”版本(而不是“苗条缩小”版本)。
【讨论】:
以上是关于如何使用 DataTables 和 Excel 解决 parseXML 问题?的主要内容,如果未能解决你的问题,请参考以下文章
使用 webpack 时不显示 Datatables.net Excel 导出按钮
Datatables.net - 自定义时导出到 Excel 显示错误
如何在 Jquery Datatables 中根据条件隐藏列?
带有 Excel 的 Datatables TableTools,pdf 导出功能不适用于 firefox,但只能在 Chrome 中使用