parseCsvToMapList static method
Future<List<Map<String, dynamic> > >
parseCsvToMapList({
- required String content,
- int keyRowIndex = 0,
- String eol = '\n',
- FieldValueParser? fieldValueParser,
将csv文件转换为List
注意:部分csv文件中,部分字段分割符、转义符、行分隔符默认值与csv不一致, 在解析异常时,可能需要手动指定
content csv文件内容
keyRowIndex 字段列表所在行
eol 数据中Row分隔符定义
Implementation
static Future<List<Map<String, dynamic>>> parseCsvToMapList({
required String content,
int keyRowIndex = 0,
String eol = '\n',
FieldValueParser? fieldValueParser,
}) async {
final List<Map<String, dynamic>> results = [];
final List<List<dynamic>> parsedData = const CsvToListConverter().convert(
content,
eol: eol,
);
final List<String> fieldList = parsedData[keyRowIndex]
.map(
(e) => TextUtil.trim(e.toString()),
)
.toList();
final contentList = parsedData.sublist(keyRowIndex + 1);
for (final row in contentList) {
final Map<String, dynamic> map = {};
for (int i = 0; i < fieldList.length; i++) {
final key = fieldList[i];
final value = row.length > i ? row[i] : null;
if (fieldValueParser != null) {
map[key] = fieldValueParser(key, value);
} else {
map[key] = value;
}
}
results.add(map);
}
return results;
}