目录
第一步:封装所需实体
第二步:导出csv工具类
第三步:junit测试
第一步:封装所需实体
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class General {
private String name;
private String money;
private String color;
}
第二步:导出csv工具类
import java.io.*;
import java.lang.reflect.Field;
import java.util.List;
public class JavaToCsv {
public static void exportCsv(String filePath, String[] titles, List list) throws Exception {
//导出文件路径
File file = new File(filePath);
OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
ow.write(new String(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF})); //处理乱码,可省略
//标题部分,如果csv不需要标题,可省略
for (String title : titles) {
ow.write(title);
ow.write(",");
}
ow.write("rn");
//写内容
for (Object obj : list) {
//获取obj 所有字段
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (field.get(obj)==null || field.get(obj)==""){ //有的属性值如果为null,可以防止空指针
ow.write("");
ow.write(",");
continue;
}else{
ow.write(field.get(obj).toString());
ow.write(",");
continue;
}
}
//写完一行换行
ow.write("rn");
}
ow.flush();
ow.close();
System.out.println("导出成功:"+filePath);
}
}
第三步:junit测试
String filePath = "D://general112233.csv"; //你想生成csv文件路径
String[] titles = new String[]{"name","money","color"};//设置csv表头,和实体属性尽量一致
try {
JavaToCsv.exportCsv(filePath, titles, generalList);//generalList为数据库查询数据封装的集合
} catch (Exception e) {
e.printStackTrace();
}
import java.io.*; import java.lang.reflect.Field; import java.util.List; public class JavaToCsv { public staticvoid exportCsv(String filePath, String[] titles, List list) throws Exception { //导出文件路径 File file = new File(filePath); OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(file), "utf-8"); ow.write(new String(new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF})); //处理乱码,可省略 //标题部分,如果csv不需要标题,可省略 for (String title : titles) { ow.write(title); ow.write(","); } ow.write("rn"); //写内容 for (Object obj : list) { //获取obj 所有字段 Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); if (field.get(obj)==null || field.get(obj)==""){ //有的属性值如果为null,可以防止空指针 ow.write(""); ow.write(","); continue; }else{ ow.write(field.get(obj).toString()); ow.write(","); continue; } } //写完一行换行 ow.write("rn"); } ow.flush(); ow.close(); System.out.println("导出成功:"+filePath); } }
第三步:junit测试
String filePath = "D://general112233.csv"; //你想生成csv文件路径
String[] titles = new String[]{"name","money","color"};//设置csv表头,和实体属性尽量一致
try {
JavaToCsv.exportCsv(filePath, titles, generalList);//generalList为数据库查询数据封装的集合
} catch (Exception e) {
e.printStackTrace();
}
控制台及生成csv文件的结果: