当前位置: 代码网 > it编程>编程语言>Java > Java实现读取CSV文件数据内容(含逗号处理)

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

2025年07月04日 Java 我要评论
最近在公司写项目时,有个读取/修改csv格式文件数据的需求。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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com