如何添加头CSV文件Flutter?

时间:2019-11-29 14:19:01

标签: flutter flutter-dependencies

我想为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);

有效。但我想添加标题。

1 个答案:

答案 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()。

如果我在某些地方写错了,请告诉我,并帮助我进行纠正。感谢您抽出宝贵的时间来解决我的问题。祝你有美好的一天。