我想为CSV文件中的列添加标题。我正在使用CSV lib ver 4.0.4和我的代码:
List<List<dynamic>> rows = List<List<dynamic>>();
for (int i = 0; i <rootAttendanceList.length;i++) {
List<dynamic> row = List();
row.add(rootAttendanceList[i].name);
row.add(rootAttendanceList[i].company);
rows.add(row);
}
String dir = (await getApplicationDocumentsDirectory()).absolute.path;
String file = "$dir";
File f = new File(file+"/myreport.csv");
String csv = const ListToCsvConverter().convert(rows);
f.writeAsString(csv);
print(f.path);
有效。但我想添加标题。
答案 0 :(得分:0)
所以CSV文件的基本结构如下,
Title1,Title2,Title3 (represent headers)
one,two,three (represent 1st row)
example1,example2,example3 (represent 2nd row)
String csv = const ListToCsvConverter().convert(rows);
f.writeAsString(csv);
print(f.path);
在您的代码中,csv是使用函数ListToCsvConverter()检索的字符串。现在,您只需要在字符串前面加上一个包含字符串csv的标头。 假设您的标题是名称,地址,国家/地区,那么您的代码就是这样。
String header = "name,address,country";
String csv = const ListToCsvConverter().convert(rows);
f.writeAsString(csv);
print(f.path);
但是在这里您可以在CSV文件字符串中看到每一行都有行尾。每个记录都用“,”符号分隔。因此,您必须使用参数“ fieldDelimiter”和“ eol”告诉ListToCsvConverter()函数有关这两个的信息。 因此,这是最后的代码,其中将endofline(eol)添加到我们的标头字符串中,并将参数传递给函数
String header = "name,address,country\n";
String csv = const ListToCsvConverter(
fieldDelimiter: ",",
eol: "\n"
).convert(rows);
f.writeAsString(csv);
print(f.path);
我希望这会帮助您和其他面临相同问题的人。我知道会有很多打字错误,但希望您能理解我正在解释的概念。为了更清楚,您可以检查我的代码Here。只需通过函数backupDB()。
如果我在某些地方写错了,请告诉我,并帮助我进行纠正。感谢您抽出宝贵的时间来解决我的问题。祝你有美好的一天。