将每个属性的单个 bean rowise 写入 csv
Write single bean rowise per attribute to csv
我正在使用 opencsv,我有一个模型(假设 Person
具有三个属性 name, age, sex
),我想将其存储到 csv 文件中。
它应该如下所示:
"name";"Jon";
"age";"30";
"sex";"male";
第一列包含 属性 名称,第二列包含值(如键值对)。
我的实现如下所示:
writer = new FileWriter("./settings.csv");
StatefulBeanToCsvBuilder<Person> beanToCsv = new StatefulBeanToCsvBuilder<SettingsModel>(writer);
StatefulBeanToCsv<SettingsModel> beanWriter = beanToCsv.build();
beanWriter.write(model);
writer.close();
我知道 beanToCsv
上有一些可用的设置,但我不知道如何设置。
如果可能的话?
感谢您的帮助:)
StatefulBeanToCsv 具有将 bean 序列化为表格格式的标准方式。
您真正想要的是将 bean 扁平化为键值对。所以技巧应该使用 BeanMap 来保存 Person bean 数据。由于 Person bean 没有嵌套对象,我们可以简单地将其转换为 ValueHolder.key 和 ValueHolder.value.
最终以这种方式应用此策略ColumnPositionMappingStrategy:
ColumnPositionMappingStrategy<ValueHolder> strategy = new ColumnPositionMappingStrategy<>();
strategy.setType(ValueHolder.class);
strategy.setColumnMapping("key", "value");
FileWriter writer = new FileWriter("./settings.csv");
StatefulBeanToCsvBuilder<ValueHolder> csvBuilder = new StatefulBeanToCsvBuilder<>(writer);
StatefulBeanToCsv<ValueHolder> beanWriter = csvBuilder.withSeparator(';').withMappingStrategy(strategy).build();
beanWriter.write(content);
writer.close();
可以访问完整的工作示例 here。
我正在使用 opencsv,我有一个模型(假设 Person
具有三个属性 name, age, sex
),我想将其存储到 csv 文件中。
它应该如下所示:
"name";"Jon";
"age";"30";
"sex";"male";
第一列包含 属性 名称,第二列包含值(如键值对)。
我的实现如下所示:
writer = new FileWriter("./settings.csv");
StatefulBeanToCsvBuilder<Person> beanToCsv = new StatefulBeanToCsvBuilder<SettingsModel>(writer);
StatefulBeanToCsv<SettingsModel> beanWriter = beanToCsv.build();
beanWriter.write(model);
writer.close();
我知道 beanToCsv
上有一些可用的设置,但我不知道如何设置。
如果可能的话? 感谢您的帮助:)
StatefulBeanToCsv 具有将 bean 序列化为表格格式的标准方式。
您真正想要的是将 bean 扁平化为键值对。所以技巧应该使用 BeanMap 来保存 Person bean 数据。由于 Person bean 没有嵌套对象,我们可以简单地将其转换为 ValueHolder.key 和 ValueHolder.value.
最终以这种方式应用此策略ColumnPositionMappingStrategy:
ColumnPositionMappingStrategy<ValueHolder> strategy = new ColumnPositionMappingStrategy<>();
strategy.setType(ValueHolder.class);
strategy.setColumnMapping("key", "value");
FileWriter writer = new FileWriter("./settings.csv");
StatefulBeanToCsvBuilder<ValueHolder> csvBuilder = new StatefulBeanToCsvBuilder<>(writer);
StatefulBeanToCsv<ValueHolder> beanWriter = csvBuilder.withSeparator(';').withMappingStrategy(strategy).build();
beanWriter.write(content);
writer.close();
可以访问完整的工作示例 here。