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

如何使用OpenCSV按指定表头名称提取CSV列并输出到新文件

基于OpenCSV按表头名提取CSV列的实现方案

首先引入OpenCSV依赖,以Maven为例:

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>5.6</version> <!-- 可替换为最新稳定版本 -->
</dependency>

完整实现代码如下:

import com.opencsv.CSVReaderHeaderAware;
import com.opencsv.CSVWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Map;

public class CsvColumnExtractor {
    public static void main(String[] args) {
        // 按需修改输入输出路径、目标提取列
        String inputPath = "input.csv";
        String outputPath = "output.csv";
        String[] targetColumns = {"ID", "Name", "Age"};
        
        try (
            CSVReaderHeaderAware reader = new CSVReaderHeaderAware(new FileReader(inputPath));
            CSVWriter writer = new CSVWriter(new FileWriter(outputPath),
                    CSVWriter.DEFAULT_SEPARATOR,
                    CSVWriter.NO_QUOTE_CHARACTER,
                    CSVWriter.DEFAULT_ESCAPE_CHARACTER,
                    CSVWriter.DEFAULT_LINE_END)
        ) {
            // 写入输出文件表头
            writer.writeNext(targetColumns);
            
            Map<String, String> rowData;
            // 逐行读取并按表头名提取字段
            while ((rowData = reader.readMap()) != null) {
                String[] outputRow = new String[targetColumns.length];
                for (int i = 0; i < targetColumns.length; i++) {
                    outputRow[i] = rowData.get(targetColumns[i]);
                }
                writer.writeNext(outputRow);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

该实现完全基于表头名称匹配列,原始CSV的列顺序调整、其他列增删都不会影响提取逻辑,输出格式与要求一致,无多余引号包裹字段。

内容的提问来源于stack exchange,提问作者LeeGeon-jin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:45:08