java上传csv错误信息,java - 保存之前/之后由于CSV差异导致的错误解析(Java w / Apache Commons CSV) - 堆栈内存溢出...

我有一个37列CSV文件,我使用Apache Commons CSV 1.2在Java中解析。 我的设置代码如下:

//initialize FileReader object

FileReader fileReader = new FileReader(file);

//intialize CSVFormat object

CSVFormat csvFileFormat = CSVFormat.DEFAULT.withHeader(FILE_HEADER_MAPPING);

//initialize CSVParser object

CSVParser csvFileParser = new CSVParser(fileReader, csvFileFormat);

//Get a list of CSV file records

List csvRecords = csvFileParser.getRecords();

// process accordingly

我的问题是,当我将要处理的CSV复制到我的目标目录并运行我的解析程序时,我收到以下错误:

Exception in thread "main" java.lang.IllegalArgumentException: Index for header 'Title' is 7 but CSVRecord only has 6 values!

at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:110)

at launcher.QualysImport.createQualysRecords(Unknown Source)

at launcher.QualysImport.importQualysRecords(Unknown Source)

at launcher.Main.main(Unknown Source)

但是,如果我将文件复制到我的目标目录,打开并保存它,然后再次尝试该程序,它的工作原理。 打开并保存CSV会添加最后所需的逗号,这样我的程序就无法获得没有足够的标题来阅读。

对于上下文,这里是保存之前/之后的示例行:

之前(失败):“数据”,“数据”,“数据”,“数据”

之后(工作):“数据”,“数据”,,,“数据”,,,“数据”,,,,,,

所以我的问题是:为什么我打开并保存CSV格式会发生变化? 我没有更改任何值或编码,保存时MS-DOS或常规.csv格式的行为是相同的。 另外,我在我的测试中使用Excel来复制/打开/保存。

我需要使用一些编码或格式设置吗? 我能以编程方式解决此问题吗?

提前致谢!

编辑#1:

对于其他上下文,当我第一次在原始文件中查看空行时,它只有新行^ M字符,如下所示:

^M

在Excel中打开并保存之后,我的所有37个空字段看起来都像这样:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^M

这是Windows编码差异吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值