Read CSV file in Dart
- Read line by line in the CSV file
This example opens the CSV file in a stream and reads the line by line. Reads the file line by line in chunks to avoid loading entire files in memory and is useful for loading larger files using stream.
import 'dart:io';
import 'dart:convert';
void main() async {
try {
final file =await File('emp.csv').openRead();
await file
.transform(utf8.decoder)
.transform(new LineSplitter())
.forEach((l) => print('$l'));
}
catch (e) {
print('Reading CSV file error: $e');
}
}
First, a File read operation is asynchronous, so added the async
keyword to the main()
function
- Open a file for reading
Parse the file and transform it with utf8.decoder,
- Use one more transformer, which takes LineSplitter, which takes comma as default delimiter. Returns an array of field data.
- Use forEach to iterate and print the data)
Write a Dart Array object into a CSV file
import 'dart:io';
import 'package:csv/CSV.dart';
void main() {
// Initialize data with Array of headers and data
final data = [
['id','Name', 'Salary'],
[1,' Eric', 5000],
[2, 'Brew', 7000],
[3, 'Bob', 3000],
];
// Create a file
final file = File('output.csv');
// Convert the array of objects into a CSV string
final csvStr = ListToCsvConverter().convert(data);
// Write string into a file
file.writeAsString(csvStr);
}
In this example,
- Imported
csv
andio
m modules - Initialize a list of objects where each object is data, First object is a header.
- Create a file object with the output file
ListToCsvConverter().convert()
converts the dart object into CSV string format.- Finally, use
file.writeAsString()
to write a CSV string into a file
On running the above code, Generates output.csv
file successfully