正在寻找允许按名称读取列的java CSV库
此外,允许以可读/简单的方式处理长行,包括写入和读取
我已经研究了opencsv
,但它不以任何顺序方式引用行中的元素,而且supercsv
不允许按名称而仅按数字查看列
另一个警告——我需要能够通过名称对列进行寻址——是列的数量不是恒定的,只有部分列标题是恒定的,比如:
Name|Number|Color1|Color2......|Color67|
在任何给定的CSV文件中,并非所有介于1和67之间的颜色都存在
你可以在下面搜索框中键入要查询的问题!
此外,允许以可读/简单的方式处理长行,包括写入和读取
我已经研究了opencsv
,但它不以任何顺序方式引用行中的元素,而且supercsv
不允许按名称而仅按数字查看列
另一个警告——我需要能够通过名称对列进行寻址——是列的数量不是恒定的,只有部分列标题是恒定的,比如:
Name|Number|Color1|Color2......|Color67|
在任何给定的CSV文件中,并非所有介于1和67之间的颜色都存在
# 1 楼答案
您可以使用开源库uniVocity-parsers。使用此库,不仅可以根据需要选择列,还可以按任意顺序选择列
具有以下标题: 名称|编号|颜色1 |颜色2|颜色67|
我们仅从csv中选择“Color1”、“Color3”和“Color2”列,代码如下:
您将获得这3列的输出数据:
# 2 楼答案
CsvReader有一个^{} 方法按名称读取列。但是^{} 对应项无法写入命名列,因此它可能只能解决一半的问题
# 3 楼答案
我不能真正与opencsv对话,但是如果您有固定数量的字段you might be able to use the JavaBean binding to do something like this
Super CSV但是,绝对支持使用CsvBeanReader、CsvDozerBeanReader或CSVMaReader(以及它们的编写等价物)按名称读取和写入CSV行
如果您希望保持简单并使用映射(以列名为键,以列值为值),那么您可以使用CsvMapReader。超级CSV网站上有关于reading和writing的CsvMapReader示例
阅读示例:
写作很相似