如何将HTML表数据导出到excel

问题描述:

我有两个html表格并且我将这些数据导出到excel表格我试过以下代码它在Chrome中运行正常但在Internet Explorer中无法正常工作显示错误作为数据的结果搜索数据没有结果

请建议解决方案,因为用户只使用IE浏览器

提前谢谢



我尝试过:



I have two html table and im exporting that data into the excel sheet i have tried following code it works fine in chrome but not working in Internet explorer showing error as Result for "data" you search for data had no result
please suggest solution as user is using IE only
Thanks in advance

What I have tried:

<script type="text/javascript">

       var tablesToExcel = (function () {
             var uri = 'data:application/vnd.ms-excel;base64,'
   , template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>'
   , templateend = '</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head>'
   , body = '<body>'
   , tablevar = '<table>{table'
   , tablevarend = '}</table>'
   , bodyend = '</body></html>'
   , worksheet = '<x:ExcelWorksheet><x:Name>'
   , worksheetend = '</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>'
   , worksheetvar = '{worksheet'
   , worksheetvarend = '}'
   , base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
   , format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }
   , wstemplate = ''
   , tabletemplate = '';

             return function (table, name, filename) {
                 var tables = table;

                 for (var i = 0; i < tables.length; ++i) {
                     wstemplate += worksheet + worksheetvar + i + worksheetvarend + worksheetend;
                     tabletemplate += tablevar + i + tablevarend;
                 }

                 var allTemplate = template + wstemplate + templateend;
                 var allWorksheet = body + tabletemplate + bodyend;
                 var allOfIt = allTemplate + allWorksheet;

                 var ctx = {};
                 for (var j = 0; j < tables.length; ++j) {
                     ctx['worksheet' + j] = name[j];
                 }

                 for (var k = 0; k < tables.length; ++k) {
                     var exceltable;
                     if (!tables[k].nodeType) exceltable = document.getElementById(tables[k]);
                     ctx['table' + k] = exceltable.innerHTML;
                 }




<input type="button" onclick="tablesToExcel(['1', '2'], ['first', 'second'], 'myfile.xls')" value="Export to Excel" class="btn btn-primary btn-md">

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  
    <script type="text/javascript" src="http://oss.sheetjs.com/js-xlsx/xlsx.core.min.js" ></script>
    <script type="text/javascript" src="http://oss.sheetjs.com/js-xlsx/ods.min.js"></script>
    <script type="text/javascript" src="http://sheetjs.com/demos/Blob.js"></script>
    <script type="text/javascript" src="http://sheetjs.com/demos/FileSaver.js"></script>
    <script type="text/javascript" src="http://sheetjs.com/demos/Export2Excel.js"></script>
    <script>
        function download() { export_table_to_excel('myTable', 'xlsx' || 'xlsx'); }
    </script> 
    </head>
<body>
    <button onclick="download();">Export to Excel</button>
  
    <table id="myTable" border="1">
        <tr style="background-color:gray">
            <td align="center">Company</td>
            <td align="center">Contact</td>
            <td align="center">Country</td>
        </tr>
        <tr>
            <td>Alfreds Futterkiste</td>
            <td>Maria Anders</td>
            <td>Germany</td>
        </tr>
        <tr>
            <td>Centro comercial Moctezuma</td>
            <td>Francisco Chang</td>
            <td>Mexico</td>
        </tr>
        <tr>
            <td>Ernst Handel</td>
            <td>Roland Mendel</td>
            <td>Austria</td>
        </tr>
        <tr>
            <td>Island Trading</td>
            <td>Helen Bennett</td>
            <td>UK</td>
        </tr>
        
    </table>
     
  

</body>
</html>





表数据来自 w3schools [ ^ ]