【发布时间】:2022-12-03 00:39:33
【问题描述】:
我在 5.6 版中使用 OpenCSV,并遵循示例 https://www.geeksforgeeks.org/mapping-java-beans-to-csv-using-opencsv/ 但无法将我的写入 csv 文件。
public static void main(String[] args){
List<MyPartbean> mybeans = new List<MyPartbean>();
MyPartbean b1 = new MyPartbean("123", "Red");
MyPartbean b2 = new MyPartbean("456", "Blue");
mybeans.add(b1);
mybeans.add(b2);
file_location = "/tmp/out.csv";
String[] columns = new String[]{"Number", "Description"};
CSVUtils.writeToCSV(String file_location, MyPartbean.class,
mybeans, columns)
}
豆:
public class MyPartbean extends HashMap {
String number="";
String description="";
public MyPartbean(String number, String desc){
this.number = number;
this.description = desc;
}
public void setNumber(String number){ this.number = number;}
public void setDescription(String description){ this.description = description;}
public String getNumber() {return number;}
public String getDescription() {return description;}
}
写入 CSV:
public class CSVUtils {
public static void writeToCSV(String file_location, Class type,
List<MyPartbean> records, String[] columns)
throws IOException, CsvRequiredFieldEmptyException, CsvDataTypeMismatchException {
FileWriter writer = new FileWriter(file_location);
ColumnPositionMappingStrategy mappingStrategy = new
ColumnPositionMappingStrategy();
mappingStrategy.setType(type);
mappingStrategy.setColumnMapping(columns);
debug("mapping: " +mappingStrategy.getColumnMapping().length);
StatefulBeanToCsv<MyPartbean> beanToCsv =
new StatefulBeanToCsvBuilder<MyPartbean>(writer)
.withMappingStrategy(mappingStrategy)
. withSeparator(',')
.withQuotechar(CSVWriter.NO_QUOTE_CHARACTER)
.build();
beanToCsv.write(records);
for(int i=0; i<records.size(); i++){
MyPartbean item = (MyPartbean) records.get(i);
debug(i + " " + item.getNumber() + " :: " + item.getDescription());
}
writer.close();
}
}
输出文件有两个“,”,由列数[] 表示。但是没有列和值
,,
,,
有什么建议吗?
【问题讨论】:
-
由于多种原因,所提供的代码无法编译。
-
注意:编译错误修复代码使用 OpenCSV 4.1 版生成预期结果(非空输出文件),如本教程中使用的那样(URL 请参见 OP)。