Dart:
Travailler avec CSV
Comment faire :
Pour gérer les fichiers CSV en Dart, vous pouvez soit traiter le texte manuellement, soit utiliser des bibliothèques tierces pour simplifier la tâche. Ici, nous examinerons les deux approches.
Analyse manuelle de CSV
Si vos besoins sont simples, vous pourriez choisir d’analyser manuellement une chaîne CSV. Cela peut être réalisé en utilisant les fonctions de manipulation de chaînes de caractères de base de Dart :
void main() {
// Données CSV d'exemple
String csvData = "Name,Age,Email\nJohn Doe,30,[email protected]\nJane Smith,25,[email protected]";
// Division des données CSV en lignes
List<String> lines = csvData.split('\n');
// Analyse de chaque ligne
List<Map<String, String>> data = [];
List<String> headers = lines.first.split(',');
for (var i = 1; i < lines.length; i++) {
List<String> row = lines[i].split(',');
Map<String, String> record = {};
for (var j = 0; j < headers.length; j++) {
record[headers[j]] = row[j];
}
data.add(record);
}
// Affichage des données analysées
print(data);
}
// Exemple de sortie :
// [{Name: John Doe, Age: 30, Email: john@example.com}, {Name: Jane Smith, Age: 25, Email: jane@example.com}]
Utilisation d’une bibliothèque tierce : csv
Pour des scénarios plus complexes ou pour simplifier votre code, vous pouvez utiliser une bibliothèque tierce populaire comme csv
. Commencez par l’ajouter à votre projet en incluant csv: ^5.0.0
(ou la version la plus récente) dans votre fichier pubspec.yaml
sous dependencies
. Utilisez-la ensuite comme suit :
import 'package:csv/csv.dart';
void main() {
String csvData = "Name,Age,Email\nJohn Doe,30,[email protected]\nJane Smith,25,[email protected]";
// Utilisez CsvToListConverter pour analyser les données CSV
List<List<dynamic>> listData = const CsvToListConverter().convert(csvData);
// Le premier élément de la liste contient les en-têtes
List<String> headers = listData.first.map((item) => item.toString()).toList();
// Suppression de la ligne d'en-tête avant de traiter plus loin
listData.removeAt(0);
// Convertir en List<Map<String, dynamic>> pour un format plus structuré
List<Map<String, dynamic>> mappedData = listData.map((list) {
Map<String, dynamic> map = {};
for (int i = 0; i < headers.length; i++) {
map[headers[i]] = list[i];
}
return map;
}).toList();
// Affichage des données mappées
print(mappedData);
}
// Exemple de sortie :
// [{Name: John Doe, Age: 30, Email: john@example.com}, {Name: Jane Smith, Age: 25, Email: jane@example.com}]
Les deux méthodes démontrent comment travailler avec des données CSV : la première manuellement, à des fins d’apprentissage ou lors de la manipulation de structures CSV très simples ; la seconde, en utilisant une bibliothèque puissante qui simplifie l’analyse et peut gérer différentes complexités de formatage CSV.