此外,允许以可读/简单的方式处理长行,无论是写入还是读取。
我查看了 opencsv
但它没有以任何顺序方式引用行中的元素,并且 supercsv
不允许按名称查看列而只能查看数字.
另一个警告 - 我需要能够按名称寻址列 - 列数不是常量,只有部分列标题是常量,例如:
Name|Number|Color1|Color2......|Color67|
并非 1 到 67 之间的所有颜色都出现在任何给定的 CSV 文件中。
最佳答案
我真的不能说 opencsv,但如果你有固定数量的字段 you might be able to use the JavaBean binding to do something like this .
Super CSV但是,绝对支持使用 CsvBeanReader、CsvDozerBeanReader 或 CsvMapReader(以及它们的等价物)按名称读写 CSV 行。
如果您希望保持简单并使用映射(列名作为键,列值作为值),那么您可以使用 CsvMapReader . reading上有例子和 writing在 Super CSV 网站上使用 CsvMapReader。
阅读示例:
ICsvMapReader mapReader = new CsvMapReader(
new FileReader("foo.csv"), CsvPreference.EXCEL_PREFERENCE);
try {
final String[] headers = mapReader.getHeader(true);
Map<String, String> row;
while( (row = mapReader.read(headers)) != null) {
for (String header : headers) {
System.out.println(header + " is " + row.get(header));
}
}
} finally {
mapReader.close();
}
写法很相似。
关于java - 寻找允许按名称读取列的 Java CSV 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734454/