comment générer Excel par Javascript [fermé]

y a-t-il un moyen de générer Excel/CSV par Javascript? (Il convient de navigateur compaatible trop)

45
demandé sur Chinmay 2008-12-02 13:13:52

6 réponses

il y a un projet intéressant sur github appelé Excel Builder (.js) cela offre une façon côté client de télécharger des fichiers Excel xlsx et inclut des options pour le formatage du tableur Excel.

https://github.com/stephenliberty/excel-builder.js

vous pouvez rencontrer à la fois des problèmes de compatibilité avec le navigateur et Excel en utilisant cette bibliothèque, mais dans les bonnes conditions, il peut être très utile.

les démos semblent prometteurs.

http://excelbuilderjs.com/index.html

un autre projet github avec moins D'Options Excel mais moins de soucis sur les questions de compatibilité Excel peut être trouvé ici: ExcellentExport.js

https://github.com/jmaister/excellentexport

si vous utilisent AngularJS, Il ya ng-csv :

une "simple directive qui transforme des tableaux et des objets en fichiers CSV téléchargeables".

42
répondu mg1075 2014-05-05 22:06:05

Si vous pouvez générer le fichier Excel sur le serveur, qui est probablement la meilleure façon. Avec Excel, vous pouvez ajouter le formatage et obtenir la sortie à regarder mieux. Plusieurs Options Excel ont déjà été mentionnées. Si vous avez un backend PHP, vous pourriez considérer phpExcel .

si vous essayez de tout faire sur le client en javascript, Je ne pense pas Qu'Excel est une option. Vous pouvez créer un fichier CSV et créer une URL de données pour permettre à l'utilisateur de le télécharger.

j'ai créé un JSFiddle pour démontrer: http://jsfiddle.net/5KRf6/3 /

ce javascript (en supposant que vous utilisez jQuery) prendra les valeurs des boîtes de saisie dans une table et construira une chaîne de caractères CSV formatée:

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

Si vous le souhaitez, vous pouvez déplacer les données dans une balise sur la page (dans mon cas, une étiquette avec un id de "csv"):

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

vous pouvez générer une URL à ce texte avec ce code:

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

enfin, ceci ajoutera un lien pour télécharger que les données:

$("#downloadLink").html("");
$("<a></a>").
attr("href", blobURL).
attr("download", "data.csv").
text("Download Data").
appendTo('#downloadLink');
27
répondu digitaleagle 2017-08-07 16:09:21

réponse similaire postée ici .

lien pour exemple de travail

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]]);

Principales bibliothèques nécessaires -

<script src="http://alasql.org/console/alasql.min.js"></script> 
<script src="http://alasql.org/console/xlsx.core.min.js"></script> 
6
répondu Sujit Kumar Singh 2017-12-27 11:27:57

crée une méthode postback AJAX qui écrit un fichier CSV sur votre serveur web et renvoie l'url.. Définissez une IFrame cachée dans le navigateur à l'emplacement du fichier CSV sur le serveur.

votre Utilisateur sera alors présenté avec le lien de téléchargement CSV.

2
répondu 2008-12-02 10:32:28

pour répondre à votre question avec un exemple de travail:

<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
répondu Fireworm 2013-05-21 07:30:14

je vous recommande de générer un format ouvert XML fichier Excel, est beaucoup plus souple que CSV.

Lire générer un fichier Excel en ASP.NET pour plus d'information

-1
répondu Eduardo Molteni 2017-05-23 12:18:14