美文网首页
Apache Commons CSV使用指南

Apache Commons CSV使用指南

作者: 飞扬小初 | 来源:发表于2017-01-05 13:05 被阅读0次

    解析文件

    解析Excel CSV文件

    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");
    }
    

    先通过文件路径获取到一个FileReader,然后读取CSV记录。默认自动带有Header信息.

    设置读取文件的编码类型

    Reader in = new InputStreamReader(new FileInputStream(path),"UTF-8");
    Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(in);
    for (CSVRecord record : records) {
        if (record.size() < 9){
            System.out.println("<9");
            continue;
        }
    String columnOne = record.get(5);
    Float columnTwo = Float.parseFloat(record.get(6));
    result.put(columnOne,columnTwo);
    }
    

    可以通过设置InputStreamReader来配置以何种编码类型读取文件。

    使用Headers头信息

    Apache Commons CSV提供了好几种方式来访问CSV文件的内容,最简单的方式就是使用数据的索引序号来访问。一般CSV文件都会有一个header头信息,表明这个表的每一列的数值的内涵。

    使用索引访问内容

    Reader in = new FileReader("path/to/file.csv");
    Iterable<CSVRecord> records = CSVFormat.RFC4180.parse(in);
    for (CSVRecord record : records) {
        String columnOne = record.get(0);
        String columnTwo = record.get(1);
    }
    

    可以通过自定义Header来访问数据:

    Reader in = new FileReader("path/to/file.csv");
    Iterable<CSVRecord> records = CSVFormat.RFC4180.withHeader("ID", "CustomerNo", "Name").parse(in);
    for (CSVRecord record : records) {
        String id = record.get("ID");
        String customerNo = record.get("CustomerNo");
        String name = record.get("Name");
    }
    

    甚至可以使用枚举类型类定义Header标签

    public enum Headers {
        ID, CustomerNo, Name
    }
    Reader in = new FileReader("path/to/file.csv");
    Iterable<CSVRecord> records = CSVFormat.RFC4180.withHeader(Headers.class).parse(in);
    for (CSVRecord record : records) {
        String id = record.get(Headers.ID);
        String customerNo = record.get(Headers.CustomerNo);
        String name = record.get(Headers.Name);
    }
    

    一般Header标签都是第一行,因此可以使用默认第一行为header的方式读取。

    Reader in = new FileReader("path/to/file.csv");
    Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRowAsHeader().parse(in);
    for (CSVRecord record : records) {
        String id = record.get("ID");
        String customerNo = record.get("CustomerNo");
        String name = record.get("Name");
    }
    

    相关文章

      网友评论

          本文标题:Apache Commons CSV使用指南

          本文链接:https://www.haomeiwen.com/subject/wrkzvttx.html