Lire ou écrire un fichier CSV
Création d'un fichier CSV
var File f
write_file f "foo.csv" "csv"
csv_column "identificateur" "libellé"
...
csv_row
csv_cell "identificateur" "valeur"
...
La valeur d'une cellule peut être non seulement une chaîne de caractère, mais aussi un nombre décimal, une date, etc.
Encodage avancé
Les options suivantes permettent de configurer les détails du formatage du fichier CSV. Comment encoder ces options au niveau de l'instruction 'write_file' est précisé dans la documentation concernant l'écriture d'un fichier texte.
Syntaxe
|
Effet
|
Exemple
|
no_header
|
Ne pas ajouter une première ligne avec le nom des colonnes.
|
no_header
|
extra_header "du texte"
|
Ajouter du texte en tête de fichier.
|
extra_header "Relevé de comptes[cr][lf]Du 1/1/2018[cr][lf]Au 31/1/2018"
|
charset "code_de_charset"
|
Spécifie l'encoding des caractères à utiliser dans le fichier produit.
|
charset "iso8859-1"
|
ascii
|
Exclue tous les caractères qui ne sont pas ASCII (c'est à dire approximativement tous les caractères accentués).
|
ascii
|
exclude "caractères_exclu" replace_with "caractère de remplacement"
|
Specifie les caractères interdits, qui seront remplacé par la chaine fournie via le paramètre 'replace_with'.
|
exclude "[0][cr][lf][dq]" replace_with "?"
|
decimal "point décimal"
|
Quel caractère utiliser pour le point décimal. La valeur par défaut est le point.
|
decimal ","
|
date "encodage_des_dates"
|
A quel format coder les dates. La valeur par défaut est yyyy-mm-dd.
|
date "dd/mm/yyyy"
|
datetime "encodage_des_dates_et_heures"
|
La valeur par défaut est yyyy-mm-dd HH:MM:SS.
|
datetime "dd/mm/yyyy HH:MM"
|
multiline "une séquence"
|
Spécifie le caractère à utiliser pour indiquer le retour à la ligne dans les champs multilignes. La valeur par défaut est un simple espace, car beaucoup de lecteurs de fichiers CSV ne supportent pas les champs multilignes.
|
multiline "[cr][lf]"
|
quote "un caractère"
|
Spécifie avec quel caractère quoter les champs qui le nécessitent. La valeur par défaut est le double quote.
|
quote "'"
|
never_quote
|
Ne jamais rajouter des quotes autour des champs.
|
never_quote
|
always_quote
|
Toujours rajouter des quotes autour des champs.
|
always_quote
|
separator "séparateur de champs"
|
Spécifie quel séparateur utiliser entre les différents champs d'une même ligne. Le séparateur par défaut est la virgule.
|
separator ";"
|
cr
|
Les retours à la ligne sont le caractère 'carriage return'. C'est l'encodage standard sur Mac.
|
cr
|
lf
|
Les retours à la ligne sont le caractère 'line feed'. C'est l'encodage standard sur Unix.
|
lf
|
cr+lf
|
Les retours à la ligne sont la séquence 'cariage return' suivi de 'line feed'. C'est l'encodage standard sur Windows et ce qui sera produit par défaut par Storga.
|
cr+lf
|
bom
|
Ajouter les trois caractères standards en tête du fichier pour indiquer qu'il est codé en UTF-8.
|
bom
|
Lecture d'un fichier CSV
var File f
...
read_file f "csv"
each_csv_column c
...
csv_column "identificateur" "libellé"
each_csv_row
var Str v := csv_cell "identificateur"
var Float f := csv_cell "montant" Float
'each_csv_column' permet d'obtenir le libellé des différentes colonnes, tel que fourni dans la première ligne du fichier CSV.
L'instruction optionnelle 'csv_column' permet d'associé un identificateur à l'un des libellés. Si elle n'est pas utilisé, c'est le libellé de la colonne qui sert d'identificateur de la colonne.
Les types supportés au niveau de l'instruction 'csv_cell' sont Str (le type par défaut), Int, Float, Date et DateTime
Les options disponibles pour la lecture d'un fichier CSV sont
Syntaxe
|
Effet
|
Exemple
|
starter "texte à trouver"
|
Les premières lignes du fichier doivent être ignorées, jusqu'à celle contentant le texte indiqué.
|
starter "Prénom"
|
header "noms des colones"
|
Le fichier ne contient pas de première ligne indiquant les noms des colones.
|
header "Prénom,Nom"
|
charset "code_de_charset"
|
Spécifie l'encoding des caractères utilisés dans le fichier.
|
charset "iso8859-1"
|
separator "séparateur de champs"
|
Spécifie le séparateur utilisé entre les différents champs d'une même ligne. Le séparateur par défaut est la virgule.
|
separator ";"
|
padding
|
Certaines cellules contiennent des espaces de padding à retirer.
|
padding
|
Le type de retour à la ligne est détecté automatiquement.
Dans le fichier, les valeurs des cellules peuvent être entourées de double quotes ou pas.
Les champs multilignes sont supportés.
Le type de chaque cellule n'est pas reconnu automatiquement. Toutes les valeurs des cellules sont retournée sous forme de texte et doivent être converties manuellement si nécessaire.