OpenCSV读取csv文件时,如果最后一列没有数据,读取出来的集合比抬头字段少

OpenCSV读取csv文件时,如果最后一列没有数据,读取出来的集合比抬头字段少
com.opencsv.exceptions.CsvRequiredFieldEmptyException: Number of data fields does not match number of headers.

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7757114
  • 这篇博客你也可以参考下:Opencsv读取CSV
  • 除此之外, 这篇博客: OpenCsv使用中的 OpenCsv写数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 将内容输出到文件,默认CSV格式文件是以“,”隔开的。

        /**
         * 写数据
         */
        public static void writeCsv() {
            String myPath = "D:\\WorkSpace\\IDEA_WorkSpace\\sortalgorithm-demos\\src\\main\\resources\\csvouttest.csv";
            String[] data1 = {"姓名", "性别", "年龄"};
            String[] data2 = {"云天明", "男", "17"};
            String[] data3 = {"韩菱纱", "女", "16"};
    
            //将数据放到列表里面
            List<String[]> datas = new ArrayList();
            datas.add(data1);
            datas.add(data2);
            datas.add(data3);
    
            //将内容输入到文件
            try (CSVWriter writer = new CSVWriter(Files.newBufferedWriter(Paths.get(myPath), StandardCharsets.UTF_8),
                    CSVWriter.DEFAULT_SEPARATOR,
                    CSVWriter.NO_QUOTE_CHARACTER,
                    CSVWriter.NO_ESCAPE_CHARACTER,
                    CSVWriter.DEFAULT_LINE_END)) {
                //写数据到文件
                writer.writeAll(datas);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    

    得到文件内容:

    姓名,性别,年龄
    云天明,,17
    韩菱纱,,16
    
  • 您还可以看一下 李宁老师的数据分析“薪”法修炼-面试篇课程中的 读写CSV文件小节, 巩固相关知识点