Java读取CSV,读取带逗号、换行的CSV

JAVA读取CSV文件

网上搜java读取CSV,看到很多帖子写的是这样读取的。
这种方式读取一般的CSV文件是可以的,但是遇到一些比较特别的(如内容带逗号、内容有换行的)就不行了

public static List<String> importCsv(File file){
    List<String> dataList=new ArrayList<String>();
    
    BufferedReader br=null;
    try { 
        br = new BufferedReader(new FileReader(file));
        String line = ""; 
        while ((line = br.readLine()) != null) { 
            dataList.add(line);
        }
    }catch (Exception e) {
    }finally{
        if(br!=null){
            try {
                br.close();
                br=null;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    return dataList;
}

下面介绍一种比较好的读取CSV方式

准备工作
  1. 导入hutool包
<!-- hutool工具类-->
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.8</version>
</dependency>
  1. 准备CSV文件(内容带逗号、内容有换行的)
    CSV文件图片截图
标题1,标题2,标题3,标题4
内容1,嘻嘻嘻嘻嘻嘻擦擦擦擦擦擦,tyyyyyy,tttt
得得,得的,"芙蓉峰润肤,
乳芙蓉峰,润肤乳",,feffrfrfr

读取为CsvRow
public static void main(String[] args) {
    CsvReader reader = CsvUtil.getReader();
    //从文件中读取CSV数据
    CsvData data = reader.read(FileUtil.file("/xxx/工作簿1.csv"));
    List<CsvRow> rows = data.getRows();
    int i = 0;
    //遍历行
    for (CsvRow csvRow : rows) {
        i++;
        System.out.print("第"+i+"行   ");
        //getRawList返回一个List列表,列表的每一项为CSV中的一个单元格(既逗号分隔部分)
        //Console.log(csvRow.getRawList());
        System.out.print(csvRow.get(0)+"   ");
        System.out.print(csvRow.get(1)+"   ");
        System.out.print(csvRow.get(2)+"   ");
        System.out.println(csvRow.get(3));
    }
}

读取为bean
package org.jeecg.modules.system.service;

import cn.hutool.core.annotation.Alias;
import lombok.Data;

@Data
public class TestBean {

    @Alias("标题1")
    private String title1;

    @Alias("标题2")
    private String title2;

    @Alias("标题3")
    private String title3;

    @Alias("标题4")
    private String title4;
}

使用

final CsvReader reader = CsvUtil.getReader();
//假设csv文件在classpath目录下
final List<TestBean> result = reader.read(
        ResourceUtil.getUtf8Reader("/xxx/工作簿1.csv"), TestBean.class);
System.out.println(result);
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值