• CSV文件处理工具-CsvUtil


    介绍

    逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

    Hutool针对此格式,参考FastCSV项目做了对CSV文件读写的实现(Hutool实现完全独立,不依赖第三方)

    CsvUtil是CSV工具类,主要封装了两个方法:

    • getReader 用于对CSV文件读取
    • getWriter 用于生成CSV文件

    这两个方法分别获取CsvReader对象和CsvWriter,从而独立完成CSV文件的读写。

    使用

    读取CSV文件

    读取为CsvRow

    CsvReader reader = CsvUtil.getReader();
    //从文件中读取CSV数据
    CsvData data = reader.read(FileUtil.file("test.csv"));
    List<CsvRow> rows = data.getRows();
    //遍历行
    for (CsvRow csvRow : rows) {
        //getRawList返回一个List列表,列表的每一项为CSV中的一个单元格(既逗号分隔部分)
        Console.log(csvRow.getRawList());
    }
    

    CsvRow对象还记录了一些其他信息,包括原始行号等。

    读取为Bean列表

    首先测试的CSV:test_bean.csv:

    姓名,gender,focus,age
    张三,男,无,33
    李四,男,好对象,23
    王妹妹,女,特别关注,22
    
    1. 定义Bean:
    // lombok注解
    @Data
    private static class TestBean{
        // 如果csv中标题与字段不对应,可以使用alias注解设置别名
        @Alias("姓名")
        private String name;
        private String gender;
        private String focus;
        private Integer age;
    }
    
    1. 读取
    final CsvReader reader = CsvUtil.getReader();
    //假设csv文件在classpath目录下
    final List<TestBean> result = reader.read(
                    ResourceUtil.getUtf8Reader("test_bean.csv"), TestBean.class);
    
    1. 输出:
    CsvReaderTest.TestBean(name=张三, gender=男, focus=无, age=33)
    CsvReaderTest.TestBean(name=李四, gender=男, focus=好对象, age=23)
    CsvReaderTest.TestBean(name=王妹妹, gender=女, focus=特别关注, age=22)
    

    生成CSV文件

    //指定路径和编码
    CsvWriter writer = CsvUtil.getWriter("e:/testWrite.csv", CharsetUtil.CHARSET_UTF_8);
    //按行写出
    writer.write(
        new String[] {"a1", "b1", "c1"}, 
        new String[] {"a2", "b2", "c2"}, 
        new String[] {"a3", "b3", "c3"}
    );
    

    效果如下:
    CSV文件处理工具-CsvUtil

    注意
    CSV文件本身为一种简单文本格式,有编码区分。Excel读取CSV文件中含有中文时时必须为GBK编码(Windows平台下),否则会出现乱码。

  • 相关阅读:
    react实例:理解dva构建项目的原理
    Git多人协作常用命令
    justreq——反向代理与本地缓存数据
    使用ember-cli脚手架快速构建项目
    数据可视化d3.v4.js
    【Bootstrap基础学习】04 Bootstrap的HTML和CSS编码规范
    【Bootstrap基础学习】03 Bootstrap插件示例
    【Bootstrap基础学习】02 Bootstrap的布局组件应用示例
    【Bootstrap基础学习】01 Bootstrap的CSS
    【Bootstrap基础学习】00 序
  • 原文地址:https://www.cnblogs.com/exmyth/p/15483457.html
Copyright © 2020-2023  润新知