Hutool Hutool
(opens new window)
🏡首页
📖指南
  • 核心(Hutool-core)
  • 配置文件(Hutool-setting)
  • 日志(Hutool-log)
  • 缓存(Hutool-cache)
  • JSON(Hutool-json)
  • 加密解密(Hutool-crypto)
  • DFA查找(Hutool-dfa)
  • 数据库(Hutool-db)
  • HTTP客户端(Hutool-http)
  • 定时任务(Hutool-cron)
  • 扩展(Hutool-extra)
  • 布隆过滤(Hutool-bloomFilter)
  • 切面(Hutool-aop)
  • 脚本(Hutool-script)
  • Office文档操作(Hutool-poi)
  • 系统调用(Hutool-system)
  • 图形验证码(Hutool-captcha)
  • 网络Socket(Hutool-socket)
  • JWT(Hutool-jwt)
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
(opens new window)
🏡首页
📖指南
  • 核心(Hutool-core)
  • 配置文件(Hutool-setting)
  • 日志(Hutool-log)
  • 缓存(Hutool-cache)
  • JSON(Hutool-json)
  • 加密解密(Hutool-crypto)
  • DFA查找(Hutool-dfa)
  • 数据库(Hutool-db)
  • HTTP客户端(Hutool-http)
  • 定时任务(Hutool-cron)
  • 扩展(Hutool-extra)
  • 布隆过滤(Hutool-bloomFilter)
  • 切面(Hutool-aop)
  • 脚本(Hutool-script)
  • Office文档操作(Hutool-poi)
  • 系统调用(Hutool-system)
  • 图形验证码(Hutool-captcha)
  • 网络Socket(Hutool-socket)
  • JWT(Hutool-jwt)
💡javaDoc (opens new window)
⏳更新记录 (opens new window)
  • 🍎gitee (opens new window)
  • 🍏github (opens new window)
  • 快速入门

  • 核心(Hutool-core)

    • AI(Hutool-ai)

    • 克隆

    • 类型转换

    • 日期时间

    • IO流相关

    • 工具类

    • 语言特性

    • JavaBean

    • 集合类

    • Map

    • Codec编码

    • 文本操作

      • CSV文件处理工具-CsvUtil
        • 介绍
        • 使用
          • 读取CSV文件
          • 读取为CsvRow
          • 读取为Bean列表
          • 生成CSV文件
          • 乱码问题
      • Unicode编码转换工具-UnicodeUtil
      • 可复用字符串生成器-StrBuilder
      • 字符串切割-StrSplitter
    • 注解

    • 比较器

    • 异常

    • 数学

    • 线程和并发

    • 图片

    • 网络

    • 源码编译

  • 配置文件(Hutool-setting)

  • 日志(Hutool-log)

  • 缓存(Hutool-cache)

  • JSON(Hutool-json)

  • 加密解密(Hutool-crypto)

  • DFA查找(Hutool-dfa)

  • 数据库(Hutool-db)

  • HTTP客户端(Hutool-http)

  • 定时任务(Hutool-cron)

  • 扩展(Hutool-extra)

  • 布隆过滤(Hutool-bloomFilter)

  • 切面(Hutool-aop)

  • 脚本(Hutool-script)

  • Office文档操作(Hutool-poi)

  • 系统调用(Hutool-system)

  • 图形验证码(Hutool-captcha)

  • 网络Socket(Hutool-socket)

  • JWT(Hutool-jwt)

  • 指南
  • 核心(Hutool-core)
  • 文本操作
Hutool
2023-03-28
目录

CSV文件处理工具-CsvUtil

特别赞助 by:

# 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文件本身为一种简单文本格式,有编码区分,你可以使用任意编码。

但是当使用Excel读取CSV文件时,如果你的编码与系统编码不一致,会出现乱码的情况,解决方案如下:

  1. 可以将csv文本编码设置为与系统一致,如Windows下可以设置GBK

  2. 可以增加BOM头来指定编码,这样Excel可以自动识别bom头的编码完成解析。

上次更新: 2025/05/21, 11:39:56
Punycode实现-PunyCode
Unicode编码转换工具-UnicodeUtil

← Punycode实现-PunyCode Unicode编码转换工具-UnicodeUtil→

Theme by Vdoing | Copyright © 2023-2025 Hutool | MulanPSL-2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×