【问题标题】:Dart CSV Writing飞镖 CSV 写作
【发布时间】:2019-06-16 14:04:08
【问题描述】:

嘿,所以我并没有真正搞砸太多,但我想知道是否真的有一种方法(在我进入一个永无止境的兔子洞之前)在 Dart/Flutter 中读取和写入 CSV 文件?我需要写入文件,不一定要读取它们,而且我愿意竭尽全力这样做。任何库都可以,内置函数甚至更好。感谢您提供任何和所有帮助!

【问题讨论】:

    标签: csv dart flutter


    【解决方案1】:

    使用来自https://pub.dartlang.org/packages/csv的包csv

    如果你有一个List<List<dynamic>>项目需要转换成csv,

    String csv = const ListToCsvConverter().convert(yourListOfLists);
    

    如果要将 csv 写入文件,

    /// Write to a file
    final directory = await getApplicationDocumentsDirectory();
    final pathOfTheFileToWrite = directory.path + "/myCsvFile.csv";
    File file = await File(pathOfTheFileToWrite);
    file.writeAsString(csv);    
    

    另外,如果你想将 csv 文件直接读入list<list<dynamic>>

    final input = new File('a/csv/file.txt').openRead();
    final fields = await input.transform(UTF8.decoder).transform(csvCodec.decoder).toList();
    

    【讨论】:

    • 插入CSV文件时,如何指定具体是哪个文件?
    • 在上面的例子中,文件是a/csv/file.txt。在实际场景中,您可以通过读取外部存储目录或应用程序目录来获取文件路径。使用path_provider 包获取目录路径信息。 @Fethi
    • 但是在插入时提到的第一个代码中没有指定任何路径,它是如何插入到它的?
    • 更新了相同@Fethi的答案
    • 如何将更多数据附加到现有工作表中?使用mode: FileMode.append 追加到最后一个条目,不带空格或转到新行,而执行"$csv\n" 只会被下一个条目覆盖。
    【解决方案2】:

    根据新包和指南(2019)使用以下代码

    csv来自https://pub.dartlang.org/packages/csv

    如果你有一个List<List<dynamic>>项目需要转换成csv,

    String csv = const ListToCsvConverter().convert(yourListOfLists);
    

    然后您可以使用文件操作将字符串写入文件。

    file.writeAsString('$csv');
    

    另外,如果你想将 csv 文件直接读入list<list<dynamic>>

    final input = new File('a/csv/file.txt').openRead();
    final fields = await input.transform(utf8.decoder).transform(new CsvToListConverter()).toList();
    

    【讨论】:

    • 谢谢各位,你们拯救了我的一天,它真的有效
    猜你喜欢
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2020-07-15
    • 2015-07-18
    相关资源
    最近更新 更多