generateCSV method
Generates a CSV
document.
Implementation
String generateCSV(
{String separator = ',',
List<String>? fieldsNames,
Object Function(Object? e)? valueNormalizer,
bool commaAsDecimalSeparator = false,
int decimalPrecision = 4}) {
if (isEmpty) return '';
var csv = StringBuffer();
List<K>? keys;
if (fieldsNames == null) {
keys = first.keys.toList();
}
{
var head = (fieldsNames ?? keys!)
.toStringsList()
.map(_normalizeLine)
.join(separator);
csv.write(head);
csv.write('\n');
}
if (valueNormalizer != null) {
for (var e in this) {
var values = keys != null
? e.getValuesInKeysOrder(keys)
: e.getValuesInStringKeysOrder(fieldsNames!);
var line = values
.map((e) => _normalizeLine(valueNormalizer(e).toString()))
.join(separator);
csv.write(line);
csv.write('\n');
}
} else {
for (var e in this) {
var values = keys != null
? e.getValuesInKeysOrder(keys)
: e.getValuesInStringKeysOrder(fieldsNames!);
var line = values.map((e) {
var s = normalizeCSVValue(e,
separator: separator,
commaAsDecimalSeparator: commaAsDecimalSeparator,
decimalPrecision: decimalPrecision);
return _normalizeLine(s);
}).join(separator);
csv.write(line);
csv.write('\n');
}
}
return csv.toString();
}