我有类似的问题. AFAIK OpenCSV中没有内置功能,允许使用自定义列名和顺序将bean写入CSV.
开箱即用的OpenCSV中有两个主要的MappingStrategyies:
> HeaderColumnNameMappingStrategy:允许根据自定义名称将CVS文件列映射到bean字段;将bean写入CSV时,这允许更改列标题名称,但我们无法控制列顺序
> ColumnPositionMappingStrategy:允许根据列顺序将CSV文件列映射到bean字段;在将bean写入CSV时,我们可以控制列顺序但是我们得到一个空头(实现返回新的String [0]作为标题)
我发现实现自定义列名和排序的唯一方法是编写自定义MappingStrategy.
第一个解决方案:快速简便但硬编码
创建自定义MappingStrategy:
class CustomMappingStrategy extends ColumnPositionMappingStrategy {
private static final String[] HEADER = new String[]{"TradeID", "GWML GUID", "MXML GUID", "GWML File", "MxML File", "MxML Counterparty", "GWML Counterparty"};
@Override
public String[] generateHeader() {
return HEADER;
}
}
并在StatefulBeanToCsvBuilder中使用它:
fi