Convertir un tableau de données JavaScript en CSV

Concept et utilisation

La fonction arrayToSV() permet de convertir un tableau de données JavaScript (Array) en format CSV.

Il est possible de définir le jeu de données ainsi que les séparateurs de données.

Fonction

arrayToSv()

Retourne des données en format CSV à partir d'un tableau de données JavaScript (Array).

Syntaxe
arrayToSV(donnees, options);
Paramètres
donnees(Array)

Le paramètre donnees de la fonction arrayToSV() définit le tableau de données JavaScript à convertir en format CSV.

options(Object)

Le paramètre options de la fonction arrayToSV() définit les séparateurs de données à utiliser pour convertir les données.

Propriétés
lineDelimiter

La propriété lineDelimiter du paramètre options définit les séparateurs de lignes.
Si cette propriété est omise, la valeur par défaut "\n" sera utilisée.

columnDelimiter(String)

La propriété columnDelimiter du paramètre options définit les séparateurs de colonnes.
Si cette propriété est omise, la valeur par défaut ";" sera utilisée.

columnQuote(String)

La propriété columnQuote du paramètre options définit les caractères de citation à ajouter avant et après une valeur contenant les caractères utilisés pour les séparateurs.
Si cette propriété est omise, la valeur par défaut "'" sera utilisée.

Exemple de conversion d'un tableau de données JavaScript en format CSV

var donnees = [
  ["Entête 1", "Entête 2"],
  ["Valeur 1", "Valeur 2"],
  ["Valeur 3", "Valeur 4"]
];

var options = {
  lineDelimiter: '\n',
  columnDelimiter: ';',
  columnQuote: "'"
};

arrayToSV(donnees, options);

// renvoie : "Entête 1;Entête 2
//            Valeur 1;Valeur 2
//            Valeur 3;Valeur 4"

Code source de la fonction

function arrayToSV(a, b) {
  b = b || {};
  var l = b.lineDelimiter || '\n',
    c = b.columnDelimiter || ';',
    q = b.colomnQuote || '"',
    d = [];
  a.forEach(function (r) {
    var t = [];
    r.forEach(function (v) {
      t.push(typeof v === 'string' && (v.indexOf(l) > -1 || v.indexOf(c) > -1) ? q + v + q : v);
    });
    t = t.join(c);
    d.push(t);
  });
  d = d.join(l);
  return d;
}
^