如何打开xls的点击一个button

我试图打开XML表单中的一个button。 我已经有一种方法(使用JavaScript)通过“另存为”xls导出html表。 在这里,我必须保存生成的xls文件,然后打开它。 现在我想改善它,所以点击从HTML页面的button,HTML表格应该打开XLS而不需要“另存为”。

这是我正在尝试使用的JavaScript:

function fnExcelReport() { var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">'; tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'; tab_text = tab_text + '<x:Name>Test Sheet</x:Name>'; tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>'; tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>'; tab_text = tab_text + "<table>"; var headingTable = $("#tableData").clone();//In my html table id="tableData" tab_text = tab_text + headingTable.html(); tab_text = tab_text + '</table>'; $('.c_tbl').each(function( index ) { tab_text = tab_text + "<table>"; tab_text = tab_text + "<tr><td></td></tr><tr><td></td></tr>"; tab_text = tab_text + '</table>'; tab_text = tab_text + "<table>"; var exportTable = $(this).clone(); tab_text = tab_text + exportTable.html(); tab_text = tab_text + '</table>'; }); tab_text = tab_text + '</body></html>'; var fileName = name + '.xls'; var blob = new Blob([tab_text], { type: "application/vnd.ms-excel;charset=utf-8" }) window.saveAs(blob, wo_var + ".xls"); } 

从HTML我试图调用这个函数fnExcelReport()使用:

 <button id="btnExport" onclick="fnExcelReport();">Open as Excel</button> 

但我不断收到以下错误:

 openInExcel.js:8 Uncaught ReferenceError: $ is not defined at fnExcelReport (openInExcel.js:8) at HTMLButtonElement.onclick (Test.html:103) 

谷歌search这个错误显示你不能把脚本引用到jquery脚本本身之前的jquery-ui。 但是我不使用JQuery。 其他的东西,我仍然给出了同样的错误“未捕获的ReferenceError:$未定义”只是在不同的行号由于变化。

  1. 我试着添加:

    $(document).ready(function(){});

    并添加调用函数fnExcelReport()里面的文件准备。

  2. 还尝试包括整个函数fnExcelReport()里面的文档准备好,然后添加$("#btnExport").click(fnExcelReport); 准备好closures文件之前 对于这个删除onclick="fnExcelReport();" 从button元素。

上述两个方法仍然给出同样的错误“Uncaught ReferenceError:$未定义”。

有人可以帮我find我做错了什么或build议任何替代方法来完成这个?

实际上,你正在使用jQuery:$是jQuery()函数的别名。 如果我是你,我会包括jQuery(从CDN):

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

或者,您可以重写这些行:

 var headingTable = $("#tableData").clone();//In my html table id="tableData" tab_text = tab_text + headingTable.html(); .... $('.c_tbl').each(function( index ) { .... var exportTable = $(this).clone(); 

如:

 var headingTable = document.getElementById('tableData').cloneNode(true); tab_text = tab_text + headingTable.innerHTML; .... var els = document.getElementsByClassName('c_tbl'); for(var i=0; i < els.length; i++) { .... var exportTable = els[i].cloneNode(true); tab_text = tab_text + exportTable.innerHTML; 

如果你想使用FileSaver.js库:

在CDN中包含来自CDN的库:

 <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js"></script> 

改变你的JS到这个:

 var blob = new Blob([tab_text], { type: "application/vnd.ms-excel;charset=utf-8" }); saveAs(blob, fileName);