【发布时间】:2015-08-12 04:57:23
【问题描述】:
我有一个 Java bean A 如下
String name;
List<Address> address;
Address 又是一个 bean,如下所示
String city;
int pinCode;
当使用 @Parsed 的 univocity bean writer 处理器注解时,地址字段被写入 csv 文件中的对象。如何使它打印城市和密码值?
这是我生成 CSV 文件的代码
File csvFile = File.createTempFile("NEW" + ".csv", "");
Writer out = new FileWriter(csvFile);
FixedWidthFieldLengths lengths = new FixedWidthFieldLengths(30, 20);
FixedWidthWriterSettings settings = new FixedWidthWriterSettings(lengths);
// Creates a BeanWriterProcessor that handles annotated fields in the UserVo class.
settings.setRowWriterProcessor(new BeanWriterProcessor<UserVO>(UserVO.class));
// Sets the file headers
settings.setHeaders("Username", "listOfAddresses");
// Creates a writer with the above settings;
FixedWidthWriter writer = new FixedWidthWriter(out, settings);
// Writes the headers specified in the settings
writer.writeHeaders();
// writes a fixed width row with empty values (new UserVO instance).
writer.processRecord(new UserVO());
// writes values of UserVO
writer.processRecords(userVOs);
writer.close();
response().setContentType("text/csv");
response().setHeader("Content-disposition", "attachment;filename=" + csvFile.getName());
return ok(csvFile);
并且UserVO 映射到带有@Parsed 注释的输出文件,如下所示
public class UserVO {
@NullString(nulls = { "?", "-" })
@LowerCase
@Parsed
private String username;
@Parsed
private List<Address> listOfAddresses;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public List<Address> getListOfAddresses() {
return listOfAddresses;
}
public void setListOfAddresses(List<Address> listOfAddresses) {
this.listOfAddresses = listOfAddresses;
}
}
【问题讨论】:
-
张贴一些你在 CSV 中写作的代码
-
@Sarz 已经发布了代码 sn-p
标签: java csv export-to-csv