You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Apache Commons CSV解析含A1/B2类单元格值的CSV并定义行号?

使用Apache Commons CSV解析含A1/B2类单元格值的CSV文件

嘿,我来帮你搞定这两个关于Apache Commons CSV的问题,都是日常开发里很常见的场景,处理起来一点都不难!

1. 解析以A1/B2作为单元格值的CSV文件

这类带斜杠的单元格值完全不会给解析添乱,只要你的CSV文件格式规范(比如用逗号做分隔符,要是单元格里包含分隔符的话记得用引号包裹),Apache Commons CSV就能直接处理。

给你个实用的代码示例参考:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.IOException;

public class CSVParserDemo {
    public static void main(String[] args) throws IOException {
        // 定义CSV格式,默认用逗号分隔,你也可以根据自己的文件自定义分隔符
        CSVFormat format = CSVFormat.DEFAULT.withHeader(); // 要是你的文件有表头就加这个,没有直接去掉
        
        try (CSVParser parser = new CSVParser(new FileReader("your-file.csv"), format)) {
            for (CSVRecord record : parser) {
                // 按表头名称取单元格值,比如假设表头是"CellValues"
                String cellValue = record.get("CellValues");
                System.out.println("读取到的单元格值:" + cellValue); // 会输出A1/B2这类内容
            }
        }
    }
}

如果你的CSV没有表头,直接用CSVFormat.DEFAULT就行,然后通过索引取值,比如record.get(0)获取第一列的内容。

2. 解析含B1、B2、C3记录的CSV + 行编号需求

当然可以解析这类文件!而且关于行编号,Apache Commons CSV本身就自带了行号获取的方法,根本不用额外手动设置~

CSVRecord类的getRecordNumber()方法会返回当前记录的行号(默认从1开始计数:如果文件有表头,表头是行号1;要是你用withSkipHeaderRecord()跳过了表头,那数据行就从1开始计数)。

结合自定义表头的示例代码如下:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.IOException;

public class CSVRowNumberDemo {
    public static void main(String[] args) throws IOException {
        // 自定义表头,比如你的列对应A、B、C
        CSVFormat format = CSVFormat.DEFAULT
                .withHeader("A", "B", "C") // 设置自定义表头
                .withSkipHeaderRecord(); // 原文件有表头就加这个跳过,没有的话直接删掉
        
        try (CSVParser parser = new CSVParser(new FileReader("your-data.csv"), format)) {
            for (CSVRecord record : parser) {
                long rowNumber = record.getRecordNumber();
                String bColumnValue = record.get("B"); // 获取B列的B1、B2等值
                System.out.printf("行号%d,B列内容:%s%n", rowNumber, bColumnValue);
            }
        }
    }
}

这样就能轻松把行号和对应的单元格值关联起来,完全满足你的需求。

内容的提问来源于stack exchange,提问作者Ratha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:15:16