Member 12966735 Ответов: 1

Как экспортировать данные HTML таблицы в excel


У меня есть две html-таблицы, и я экспортирую эти данные в лист excel, я попробовал следующий код, он отлично работает в chrome, но не работает в Internet explorer, показывая ошибку в результате для "данных", которые вы ищете, данные не имели никакого результата
пожалуйста, предложите решение, так как пользователь использует только IE
Заранее спасибо

Что я уже пробовал:

<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">

Karthik_Mahalingam

попробовать это
http://sheetjs.com/demos/table.html

Karthik_Mahalingam

ладно

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

<!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[^]


Member 12966735

Он работает нормально, но у меня есть 2 таблицы, как я могу сделать это с двумя таблицами

Karthik_Mahalingam

вызовите функцию дважды с идентификатором таблицы