如何读取两个表头的数据

问题描述 投票:0回答:1

读取带有两个标题的 csv 数据的最佳方法是什么。

        try (CSVReader csvReader = new CSVReaderBuilder(new InputStreamReader(file.getInputStream()))
            .withCSVParser(new CSVParserBuilder().withSeparator(',').build())
            .build()) {

        HeaderColumnNameMappingStrategy<TemperatureData> strategy = new HeaderColumnNameMappingStrategy<>();
        strategy.setType(TemperatureData.class);

        CsvToBean<TemperatureData> csvToBean = new CsvToBeanBuilder<TemperatureData>(csvReader)
                .withMappingStrategy(strategy)
                .withSkipLines(2)
                .build();

        List<TemperatureData> dataList = csvToBean.parse();

        Map<String, List<TemperatureData>> groupedData = new HashMap<>();

但是这样我只得到第二个带有值的标题

数据就像

id,id,id,id,id,subid,subid,subid,subid,subid
pname,pname,pname,pname,pname,pname,pname,pname,pname,pname,
value,value,value,value,value,value,value,value,value,value,

我尝试获得类似的输出

Id    | Id    |
pname | pname |
value | value |
java spring csv opencsv
1个回答
0
投票

抱歉我没有正确解释

问题在于输出 输出

CsvData{, OC='THHS5', IC='IC S', 日期='null', 时间='null', 计数器='null', THHS='null', TH1='null', TH2='空', TH3='空', ICS='空'} CsvData{, OC='18.1', IC='停止', date='null', time='null', counter='null', THHS='null', TH1='null', TH2='null' , TH3='空',ICS='空'}

我正在尝试这样

                for (TemperatureData data : dataList) {
            String key = data.getOC078(); 
            if (!groupedData.containsKey(key)) {
                groupedData.put(key, new ArrayList<>());
            }
            groupedData.get(key).add(data);
        }
        
        for (Map.Entry<String, List<TemperatureData>> entry : groupedData.entrySet()) {
            System.out.println("Key: " + entry.getKey());
            for (TemperatureData data : entry.getValue()) {
                System.out.println(data);
            }
            System.out.println("------------------------------");
        }

温度数据类

    @CsvBindByName(column = "OC(062)")
private String OC62;

@CsvBindByName(column = "IC(012)")
private String IC;

@CsvBindByName(column = "Date")
private String date;

@CsvBindByName(column = "Time")
private String time;

@CsvBindByName(column = "Counter")
private String counter;

@CsvBindByName(column = "TH1")
private String _TH1;

@CsvBindByName(column = "TH2")
private String _TH2;

@CsvBindByName(column = "TH3")
private String _TH3;

@CsvBindByName(column = "IC S")
private String _ICS;

    @Override
public String toString() {
    return "CsvData{" +
            ", OC='" + OC62 + '\'' +
            ", IC='" + IC + '\'' +
            ", date='" + date + '\'' +
            ", time='" + time + '\'' +
            ", counter='" + counter + '\'' +
            ", THHS='" + _THHS + '\'' +
            ", TH1='" + _TH1 + '\'' +
            ", TH2='" + _TH2 + '\'' +
            ", TH3='" + _TH3 + '\'' +
            ", ICS='" + _ICS + '\'' +
            '}';
}
© www.soinside.com 2019 - 2024. All rights reserved.