2016-03-27 12 views
0

ich das Skript von @bettelbursche aus diesem Thema geschrieben beziehe mich: Export html table data to Excel using JavaScript/JQuery is not working properly in chrome browse (Anmerkung: Ich kann es antworten, weil ich nicht den Mindestbetrag der Buchungen erforderlich erreicht haben)speichern html als xls - JS Dialog Fehler speichern

Ich versuche, eine angezeigte HTML-Tabelle nur als XLS zu speichern, die funktioniert, aber nach dem Klicken auf die Schaltfläche Speichern wird die generierte Datei "Download" (Chrome) oder "unbekannt" (Safari) genannt und fehlt der Dateierweiterung und beim Öffnen der umbenannten download.xls-Datei auch eine Warnung von Excel auszulösen.

Das Problem scheint in dieser Linie zu sein:

sa = txtArea1.document.execCommand("SaveAs", true, "DataTableExport.xls"); 

Voll Skript unter:

 <script> 
    function fnExcelReport() 
    { 
     var tab_text = '<table border="1px" style="font-size:10px" ">'; 
     var textRange; 
     var j = 0; 
     var tab = document.getElementById('export'); // id of table 
     var lines = tab.rows.length; 

     // the first headline of the table 
     if (lines > 0) { 
      tab_text = tab_text + '<tr bgcolor="#DFDFDF">' + tab.rows[0].innerHTML + '</tr>'; 
     } 

     // table data lines, loop starting from 1 
     for (j = 1 ; j < lines; j++) {  
      tab_text = tab_text + "<tr>" + tab.rows[j].innerHTML + "</tr>"; 
     } 

     tab_text = tab_text + "</table>"; 
     tab_text = tab_text.replace(/<A[^>]*>|<\/A>/g, "");    //remove if u want links in your table 
     tab_text = tab_text.replace(/<img[^>]*>/gi,"");     // remove if u want images in your table 
     tab_text = tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); // reomves input params 
     // console.log(tab_text); // aktivate so see the result (press F12 in browser) 

     var ua = window.navigator.userAgent; 
     var msie = ua.indexOf("MSIE "); 

     // if Internet Explorer 
     if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) { 
      txtArea1.document.open("txt/html","replace"); 
      txtArea1.document.write(tab_text); 
      txtArea1.document.close(); 
      txtArea1.focus(); 
      sa = txtArea1.document.execCommand("SaveAs", true, "DataTableExport.xls"); 
     } 
     else // other browser not tested on IE 11 
      sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); 

     return (sa); 
    } 
    </script> 

Ich vermuten, dass Chrome das Speichern unter Dialog abgeschrieben, aber alle Unterlagen auf, dass nicht finden kann. Lustig ist, dass das Problem in allen Browsern auf MAC/PC ausgelöst wird. Ich würde mich über einige Informationen hierzu freuen;)

+0

Verwandte: [Gibt es eine Möglichkeit, eine vorgeschlagene Dateiname angeben, wenn Daten mit: URI] (http: // Stackoverflow .com/questions/283956/is-there-any-way-to-specify-a-suggest-filename-when-using-data-uri) – jeremy

+0

Initiiert die JS-Funktion nicht, keine Reaktion nach dem Klicken auf den Link. – Armitage2k

Antwort

0

Ihr Problem liegt nicht in der von Ihnen angegebenen Zeile. Dieser Codeabschnitt ist für den Internet Explorer gedacht, wie in den Code-Kommentaren erläutert.

Die Frage ist hier:

sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); 

Nichts Der Browser ist zu sagen, was die Datei und nichts stellt jede Dateierweiterung zu nennen. Sie können dies beheben, indem Sie this answer implementieren, oder noch mehr, weil Sie ursprünglich die Frage this answer in Ihren Code verlinkt haben, indem Sie die Zeile, die ich oben angegeben habe, ersetzen.

, das zu tun, ersetzen:

else // other browser not tested on IE 11 
      sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); 

mit:

else { // other browser not tested on IE 11 
    var link = document.createElement('a'); 
    link.download = "DataTableExport.xls"; 
    link.href = 'data:application/vnd.ms-excel,' + encodeURIComponent(tab_text); 
    link.click(); 
} 
+0

Ich kann mit der Excel-Warnmeldung leben, aber wie kann ich den Dateinamen und die Erweiterung für den obigen Code definieren? – Armitage2k

+0

@ Armitage2k Überprüfen Sie die zweite Antwort, mit der ich verlinkt bin. – jeremy

+0

Ich habe das Skript in der zweiten Antwort ausgeführt, aber das alles erstellt eine leere Excel-Datei. Das Problem, das ich habe, ist, ich weiß nicht, wie man das Skript sagt, dass ich den Inhalt von

bekommen muss. – Armitage2k

Verwandte Themen