我正在使用 opencsv-4.0
编写一个 csv 文件,我需要在输出文件中添加列标题。
这是我的代码。
public static void buildProductCsv(final List<Product> product,
final String filePath) {
try {
Writer writer = new FileWriter(filePath);
// mapping of columns with their positions
ColumnPositionMappingStrategy<Product> mappingStrategy = new ColumnPositionMappingStrategy<Product>();
// Set mappingStrategy type to Product Type
mappingStrategy.setType(Product.class);
// Fields in Product Bean
String[] columns = new String[] { "productCode", "MFD", "EXD" };
// Setting the colums for mappingStrategy
mappingStrategy.setColumnMapping(columns);
StatefulBeanToCsvBuilder<Product> builder = new StatefulBeanToCsvBuilder<Product>(writer);
StatefulBeanToCsv<Product> beanWriter = builder.withMappingStrategy(mappingStrategy).build();
// Writing data to csv file
beanWriter.write(product);
writer.close();
log.info("Your csv file has been generated!");
} catch (Exception ex) {
log.warning("Exception: " + ex.getMessage());
}
}
上面的代码创建了一个包含数据的 csv 文件。但它不包括该文件中的列标题。
如何添加列标题以输出 csv?
原文由 Bishan 发布,翻译遵循 CC BY-SA 4.0 许可协议
ColumnPositionMappingStrategy#generateHeader 返回空数组
如果您从 BeanToCsv 构建器中删除 MappingStrategy
它将 Product 的类成员写为 CSV 标头
如果您的产品类成员名称是
这应该是正确的解决方案
否则,添加 @CsvBindByName 注释
输出:
注意;由于 OpenCSV 库使用反射,类、getter 和 setter 需要公开