Dart:
Työskentely CSV:n kanssa
Kuinka:
CSV-tiedostojen käsittelyyn Dartissa voit joko käsitellä tekstin manuaalisesti tai käyttää kolmannen osapuolen kirjastoja tehtävän yksinkertaistamiseksi. Tässä katsomme molempia lähestymistapoja.
CSV:n manuaalinen jäsennys
Jos tarpeesi ovat yksinkertaisia, saatat päättää jäsennellä CSV-merkkijonon manuaalisesti. Tämä voidaan saavuttaa käyttämällä Dart:n perus merkkijonojen käsittelyn toimintoja:
void main() {
// Esimerkki CSV-data
String csvData = "Nimi,Ikä,Sähköposti\nJohn Doe,30,[email protected]\nJane Smith,25,[email protected]";
// Jaetaan CSV-data riveihin
List<String> rivit = csvData.split('\n');
// Jokaisen rivin jäsennys
List<Map<String, String>> data = [];
List<String> otsikot = rivit.first.split(',');
for (var i = 1; i < rivit.length; i++) {
List<String> rivi = rivit[i].split(',');
Map<String, String> tietue = {};
for (var j = 0; j < otsikot.length; j++) {
tietue[otsikot[j]] = rivi[j];
}
data.add(tietue);
}
// Tulostetaan jäsennetty data
print(data);
}
// Esimerkki tuloste:
// [{Nimi: John Doe, Ikä: 30, Sähköposti: john@example.com}, {Nimi: Jane Smith, Ikä: 25, Sähköposti: jane@example.com}]
Kolmannen osapuolen kirjaston käyttö: csv
Monimutkaisempiin tilanteisiin tai koodisi yksinkertaistamiseksi voit käyttää suosittua kolmannen osapuolen kirjastoa kuten csv
. Lisää se projektiisi lisäämällä csv: ^5.0.0
(tai viimeisin versio) pubspec.yaml
tiedostosi dependencies
-kohtaan. Käytä sitä seuraavasti:
import 'package:csv/csv.dart';
void main() {
String csvData = "Nimi,Ikä,Sähköposti\nJohn Doe,30,[email protected]\nJane Smith,25,[email protected]";
// Käytetään CsvToListConverteria CSV-datan jäsennykseen
List<List<dynamic>> listaData = const CsvToListConverter().convert(csvData);
// Ensimmäinen listan alkio sisältää otsikot
List<String> otsikot = listaData.first.map((item) => item.toString()).toList();
// Poistetaan otsikkorivi ennen edelleen käsittelyä
listaData.removeAt(0);
// Muunnetaan List<Map<String, dynamic>>:ksi rakenteellisempaan muotoon
List<Map<String, dynamic>> karttatutData = listaData.map((lista) {
Map<String, dynamic> kartta = {};
for (int i = 0; i < otsikot.length; i++) {
kartta[otsikot[i]] = lista[i];
}
return kartta;
}).toList();
// Tulostetaan mapattu data
print(karttatutData);
}
// Esimerkki tuloste:
// [{Nimi: John Doe, Ikä: 30, Sähköposti: john@example.com}, {Nimi: Jane Smith, Ikä: 25, Sähköposti: jane@example.com}]
Molemmat menetelmät havainnollistavat, miten työskennellä CSV-datan kanssa: ensimmäinen manuaalisesti, oppimistarkoituksessa tai kun käsitellään erittäin yksinkertaisia CSV-rakenteita; toinen, käyttämällä tehokasta kirjastoa, joka yksinkertaistaa jäsennystä ja pystyy käsittelemään CSV-muotoilun eri monimutkaisuuksia.