![](/img/trans.png)
[英]How to write list of objects in a csv using opencsv CSVWriter in java
[英]Is there a way to export List of objects to .CSV in Java using OpenCSV?
我嘗試使用OpenCSV在 Java 中生成 a.csv 文件。 我想在沒有硬編碼的情況下生成結果。
我有一個具有以下字段的實體:Id、Title、Overview 等。在電影列表中,我存儲數據庫中的所有數據。
我想在.csv 中寫這個列表,而不告訴標題或其他東西。
例子。
...writeToCSV(Movie.class)不是 writeToCSV(“ID”、“標題”等)
第一步,我使用了 Apache POI,但他不能正常工作。
@Slf4j
@Setter
@NoArgsConstructor
public class CSVHelper {
private CSVFormat csvFormat;
private PrintWriter printWriter;
private CSVPrinter csvPrinter;
public void writeHeader(Class<?> c) {
List<String> headers = getHeaders(c);
try {
setCsvPrinter(new CSVPrinter(printWriter, csvFormat));
} catch (IOException e) {
throw new RuntimeException(e);
}
headers.forEach(header -> {
try {
csvPrinter.print(header);
} catch (IOException e) {
throw new RuntimeException(e);
}
});
}
public void writeToCsv(List<?> list, Class<?> c) {
writeHeader(c);
List<String> headers = getHeaders(c);
try {
setCsvPrinter(new CSVPrinter(printWriter, csvFormat));
} catch (IOException e) {
throw new RuntimeException(e);
}
list.forEach(o -> {
try {
csvPrinter.println();
} catch (IOException e) {
throw new RuntimeException(e);
}
headers.forEach(header -> {
try {
Method method = c.getMethod("get" + header.substring(0, 1).toUpperCase() + header.substring(1));
String value = String.valueOf(method.invoke(o));
csvPrinter.print(value);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
});
}
private static List<String> getHeaders(Class<?> c) {
List<Field> fields = List.of(c.getDeclaredFields());
return fields.stream().map(Field::getName).collect(Collectors.toList());
}
}
我喜歡直接使用 object 方法,無需我提供任何代碼。 此代碼正在運行,但對實體的任何更改都不起作用。
從文檔中:
在大多數情況下,編寫 CSV 文件的最簡單方法是 StatefulBeanToCsv,它最容易使用 StatefulBeanToCsvBuilder 創建,因此命名是因為曾經有一個 BeanToCsv。謝天謝地,沒有更多了。
// List<MyBean> beans comes from somewhere earlier in your code.
Writer writer = new FileWriter("yourfile.csv");
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
beanToCsv.write(beans);
writer.close();
來源: http://opencsv.sourceforge.net/#writing_from_a_list_of_beans
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.