Java实现读取CSV文件数据内容(含逗号处理)

 更新时间:2025年07月04日 09:57:26   作者:Java皇帝  
这篇文章主要为大家详细介绍了如何使用Java实现读取CSV文件数据内容,包含了逗号处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

最近在公司写项目时,有个读取/修改csv格式文件数据的需求。

Java读取csv文件时默认是按照 ,[英文逗号]分割的,如果数据内容不包含逗号直接整行读取即可,但内容包含了,[英文逗号] 读取的并不是我想要的内容

 经过研究找到hutool工具下CsvUtil 可以用,操作如下

依赖

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.22</version>
        </dependency>

代码 demo

CsvReader reader = CsvUtil.getReader();
//读取方式1
CsvData data = reader.read(FileUtil.file("test.csv"));
//读取方式2
CsvData data = reader.read(new InputStreamReader(inputStream, CharsetUtil.UTF_8));
//读取方式3 转为对象数据
 List<Bean> data = reader.read(ResourceUtil.getUtf8Reader("bean.csv"), Bean.class)

csv整行数据包括表头
List<CsvRow> rows = data.getRows();
for (CsvRow csvRow : rows) {

//修改index=修改数据下标 value改的内容
csvRow.set(index,value);

//读取 整行数据
List<String> columnList = csvRow.getRawList();

}

//单列数据
for (CsvRow csvRow : rows) {
csvRow.get(rowNum)
}

个人封装方法

基于csv列返回对应对象数据

    public static <T> List<T> getFromZipTable(Sring file, String fileName, Class<T> clazz)
            throws Exception {
        List<T> result = reader.read(ResourceUtil.getUtf8Reader(file), clazz);
        inputStream.close();
        return CollectionUtils.isNotEmpty(result) ? result : new ArrayList<>(0);
    }

 获取指定文件列内容

    /**
     * 获取指定文件列内容
     */
    public static List<String> getColumnValueFromZip(InputStream inputStream, String fileName, String columnName)
            throws Exception {
        List<String> columnValue = new ArrayList<>();
        try {
            //从文件中读取CSV数据
            CsvReader reader = CsvUtil.getReader();
            CsvData data = reader.read(new InputStreamReader(inputStream, CharsetUtil.UTF_8));
            List<CsvRow> rows = data.getRows();
            //获条件索引
            int rowNum = -1;
            CsvRow headers = rows.get(0);
            for (int i = 0; i < headers.size(); i++) {
                if (headers.get(i).toString().equals(columnName)) {
                    rowNum = i;
                    break;
                }
            }
            if (rowNum == -1) {
                return columnValue;
            }
            //遍历行
            boolean headerFlag = true;
            for (CsvRow csvRow : rows) {
                //跳过表头
                if (headerFlag) {
                    headerFlag = false;
                    continue;
                }
                columnValue.add(csvRow.get(rowNum));
            }
        } finally {
            inputStream.close();
        }
        return columnValue;
    }

到此这篇关于Java实现读取CSV文件数据内容(含逗号处理)的文章就介绍到这了,更多相关Java读取CSV内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java实现学生教师管理系统

    java实现学生教师管理系统

    这篇文章主要为大家详细介绍了java实现学生教师管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-10-10
  • 解决Swagger2返回map复杂结构不能解析的问题

    解决Swagger2返回map复杂结构不能解析的问题

    这篇文章主要介绍了解决Swagger2返回map复杂结构不能解析的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • springboot结合mybatis-plus快速生成项目模板的方法

    springboot结合mybatis-plus快速生成项目模板的方法

    Mybatis-Plus是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生,接下来通过本文给大家分享springboot结合mybatis-plus快速生成项目模板的方法,感兴趣的朋友一起看看吧
    2021-06-06
  • Java 中FastJson的基本使用

    Java 中FastJson的基本使用

    fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。下面通过本文给大家介绍Java 中FastJson的基本使用,需要的朋友参考下吧
    2017-11-11
  • 浅谈mybatisPlus的Ipage分页和map参数的问题

    浅谈mybatisPlus的Ipage分页和map参数的问题

    这篇文章主要介绍了mybatisPlus的Ipage分页和map参数的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java加载ICC文件的方法和示例代码

    Java加载ICC文件的方法和示例代码

    ICC文件,通常用于颜色管理,定义了如何将一个颜色空间转换为另一个颜色空间,在Java中,我们可能需要加载这些文件来进行颜色转换或管理,本文将为您提供加载ICC文件的方法和示例代码,需要的朋友参考下吧
    2023-08-08
  • SpringBoot + MyBatis-Plus构建树形结构的几种方式

    SpringBoot + MyBatis-Plus构建树形结构的几种方式

    在实际开发中,很多数据都是树形结构,本文主要介绍了SpringBoot + MyBatis-Plus构建树形结构的几种方式,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Spring AOP简介及统一处理

    Spring AOP简介及统一处理

    AOP面向切面编程,它是一种思想,它是对某一类事情的集中处理,本文给大家介绍Spring AOP简介及统一处理,感兴趣的朋友跟随小编一起看看吧
    2023-09-09
  • SpringBoot中内置的49个常用工具类使用

    SpringBoot中内置的49个常用工具类使用

    SpringBoot以其强大的自动配置和丰富的生态系统成为Java开发的首选框架,本文将介绍49个常用工具类,并通过简洁的代码示例展示它们的基本用法,希望对大家有一定的帮助
    2025-04-04
  • java导出大批量(百万以上)数据的excel文件

    java导出大批量(百万以上)数据的excel文件

    这篇文章主要为大家详细 介绍了java导出大批量即百万以上数据的excel文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04

最新评论