依赖文件
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
导出类代码
import cn.hutool.core.annotation.Alias;
public class MktNodeImport{
@Alias("上级节点名称")
private String startName;
@Alias("节点关系名称")
private String reName;
@Alias("下级节点名称")
private String endName;
public String getStartName() {
return startName;
}
public void setStartName(String startName) {
this.startName = startName;
}
public String getReName() {
return reName;
}
public void setReName(String reName) {
this.reName = reName;
}
public String getEndName() {
return endName;
}
public void setEndName(String endName) {
this.endName = endName;
}
@Override
public String toString() {
return "MktNodeImport{" +
"startName='" + startName + '\'' +
", reName='" + reName + '\'' +
", endName='" + endName + '\'' +
'}';
}
}
导出业务代码
public void test(){
//导出的文件路径
String filePath = "D:/testpath/";
//导出的文件名
String fileName = IdUtils.fastUUID() + ".csv";
//利用糊涂工具包导出
CsvWriter csvWriter = CsvUtil.getWriter(filePath + fileName, CharsetUtil.CHARSET_UTF_8);
//存储导出的表头名称
String[] csvContext = null;
//获取类的所有属性
Field[] declaredFields = MktNodeImport.class.getDeclaredFields();
//遍历获取属性的注解,使用注解值当表头
for(Field field : declaredFields){
Alias annotation = field.getAnnotation(Alias.class);
if(annotation != null){
if(csvContext == null){
csvContext = new String[1];
csvContext[0] = annotation.value();
}else {
int length = csvContext.length;
String[] temCsv = new String[length + 1];
System.arraycopy(csvContext, 0, temCsv, 0, csvContext.length);
csvContext = temCsv;
csvContext[length] = annotation.value();
}
}
}
//导出数据
csvWriter.write(csvContext);
}