Spring Boot导出csv类模板文件,io流写csv类模板文件到本地磁盘

依赖文件

        <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);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值