【问题标题】:Apache commons csv [closed]Apache commons csv [关闭]
【发布时间】:2016-07-23 05:57:44
【问题描述】:

我无法理解 apache commons csv 库的核心。 当我想通过 apache-commons-csv 从 csv 文件中按标题名称获取列时,您能否建议我应该使用的方法? 例如,我有这样的 csv 文件:

Delays, Computation time, Communication time
0., 500000, 10
20., 563210, 20
55., 546541., 23.
12., 465487., 23.
45., 456547., 28.
87., 985458., 56.
47., 456778., 45.

我想获取数组:double[] delays, double[] compTime, double[] commTime 包含来自 csv 的值。

【问题讨论】:

    标签: java apache csv apache-commons-csv


    【解决方案1】:
    public void parseInputCSV() throws IOException {
    final Reader reader = new InputStreamReader(inputFile.toURL().openStream(), "UTF-8");
    Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(reader);
    for (CSVRecord record : records) {
        String first = record.get("FIRST_COLUMN");
        String second = record.get("SECOND_COLUMN");
        // all other columns
    }
    

    }

    【讨论】:

    • 如何按列名获取数组? =(
    • 一个数组作为一个csv元素???请在问题中发布几行 csv 文件
    • 我已经更新了问题。
    【解决方案2】:

    在文档中:

    Reader in = new FileReader("path/to/file.csv");
    Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
    for (CSVRecord record : records) {
      String lastName = record.get("Last Name");
      String firstName = record.get("First Name");
    }
    

    您将为每一行获得与列名对应的单元格。 (这里没有使用 lastName 和 firstName 并且在每次迭代时都会删除,当然)。

    【讨论】:

    • 这里只是算法,取 3 个数组,对于每一行,将单元格添加到它们的数组中......这不是 apache commons 这里。只是一个算法。
    猜你喜欢
    • 2011-06-29
    • 2010-11-29
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多