it-swarm.com.de

wie man Excel durch Javascript erzeugt

Gibt es eine Möglichkeit, Excel/CSV mit Javascript zu generieren? (Es sollte auch Browser-kompatibel sein)

56
Chinmay

Es gibt ein interessantes Projekt auf Github namens Excel Builder (.js) , das eine clientseitige Möglichkeit zum Herunterladen von Excel bietet xlsx -Dateien und enthält Optionen zum Formatieren der Excel-Tabelle.
https://github.com/stephenliberty/Excel-builder.js

Bei Verwendung dieser Bibliothek können sowohl Browser- als auch Excel-Kompatibilitätsprobleme auftreten. Unter den richtigen Bedingungen kann dies jedoch hilfreich sein.

Ein weiteres Github-Projekt mit weniger Excel-Optionen, aber weniger Bedenken hinsichtlich der Excel-Kompatibilität finden Sie hier: ExcellentExport.js
https://github.com/jmaister/excellentexport

Wenn Sie AngularJS verwenden, gibt es ng-csv:
Eine "einfache Anweisung, die Arrays und Objekte in herunterladbare CSV-Dateien verwandelt".

45
mg1075

Wenn Sie die Excel-Datei auf dem Server generieren können, ist dies wahrscheinlich der beste Weg. Mit Excel können Sie Formatierungen hinzufügen und die Ausgabe verbessern. Einige Excel-Optionen wurden bereits erwähnt. Wenn Sie ein PHP Backend haben, können Sie phpExcel in Betracht ziehen.

Wenn Sie versuchen, alles auf dem Client in Javascript zu tun, denke ich nicht, dass Excel eine Option ist. Sie können eine CSV-Datei erstellen und eine Daten-URL erstellen, damit der Benutzer sie herunterladen kann.

Ich habe eine JSFiddle erstellt, um Folgendes zu demonstrieren: http://jsfiddle.net/5KRf6/3/

Mit diesem Javascript (vorausgesetzt, Sie verwenden jQuery) werden die Werte aus den Eingabefeldern in einer Tabelle entfernt und eine CSV-formatierte Zeichenfolge erstellt:

var csv = "";
$("table").find("tr").each(function () {
    var sep = "";
    $(this).find("input").each(function () {
        csv += sep + $(this).val();
        sep = ",";
    });
    csv += "\n";
});

Wenn Sie möchten, können Sie die Daten in einem Tag auf der Seite ablegen (in meinem Fall einem Tag mit der ID "csv"):

$("#csv").text(csv);

Mit diesem Code können Sie eine URL zu diesem Text erstellen:

window.URL = window.URL || window.webkiURL;
var blob = new Blob([csv]);
var blobURL = window.URL.createObjectURL(blob);

Anschließend wird ein Link zum Herunterladen dieser Daten hinzugefügt:

$("#downloadLink").html("");
$("<a></a>").
attr("href", blobURL).
attr("download", "data.csv").
text("Download Data").
appendTo('#downloadLink');
31
digitaleagle

Ähnliche Antwort gepostet hier .

Link für Arbeitsbeispiel

var sheet_1_data = [{Col_One:1, Col_Two:11}, {Col_One:2, Col_Two:22}];
var sheet_2_data = [{Col_One:10, Col_Two:110}, {Col_One:20, Col_Two:220}];
var opts = [{sheetid:'Sheet One',header:true},{sheetid:'Sheet Two',header:false}];
var result = alasql('SELECT * INTO XLSX("sample_file.xlsx",?) FROM ?', [opts,[sheet_1_data ,sheet_2_data]]);

Hauptbibliotheken erforderlich -

<script src="http://alasql.org/console/alasql.min.js"></script> 
<script src="http://alasql.org/console/xlsx.core.min.js"></script> 
9

Erstellen Sie eine AJAX Postback-Methode, die eine CSV-Datei auf Ihren Webserver schreibt und die URL zurückgibt. Setzen Sie einen versteckten IFrame im Browser auf den Speicherort der CSV-Datei auf dem Server.

Dem Benutzer wird dann der CSV-Download-Link angezeigt.

2
gmc

Um Ihre Frage mit einem funktionierenden Beispiel zu beantworten:

<script type="text/javascript">
function DownloadJSON2CSV(objArray)
{
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

    var str = '';

    for (var i = 0; i < array.length; i++) {
        var line = new Array();

        for (var index in array[i]) {
           line.Push('"' + array[i][index] + '"');
        }

        str += line.join(';');
        str += '\r\n';
    }
    window.open( "data:text/csv;charset=utf-8," + encodeURIComponent(str));
}
</script>
0
Fireworm