Apache Commons CSV - case insensitive headers?
ApacheSv实现中是否有一个内置功能,在读取csv时忽略头大小写?
不久前,我们已经实现了将csv导出文件转换为sql的实用程序。为此,我们选择了ApacheSv。到现在为止一切都很好,但现在我们有一个变更请求。
我们处理的所有csv文件都必须包含头文件,现在我们应该以不区分大小写的方式读取这些头文件,这样我们的用户就不必在其中花费他们的精力,并且观察他们创建的csv是否符合头文件大小写的要求。
代码示例:
1 2 |
其中data.name是
1 |
当用户使用csv中的"name"作为列标题,而不是大写"n"的"name"时,问题显然会出现。
我跟踪了api和source,但找不到任何东西。有没有一种方法可以强制CSVRecord使用caseinsensitivemap进行映射或类似的操作?
此功能作为csv-159添加到Apache Commons csv 1.3中。
承诺修订1708685。
我认为您必须方便地处理csv头文件,在使用
1 2 3 4 5 6 7 | //convert headers to my 'known' format (ie: lowercase) RandomAccessFile raf = new RandomAccessFile("C:\\test.csv","rw"); String firstLine = raf.readLine(); raf.seek(0); raf.writeBytes(firstLine.toLowerCase()); //your normal process to parse CSV with commons csv |
PS:我认为以其他方式实现这一点非常困难,因为这是一个封闭的API(每个类都是最终的,头映射返回内部头映射的副本)。
我没有使用apache csv,但是下面有帮助吗