Java自定义字段导出

该博客介绍了如何使用注解处理实现Excel导出功能,包括获取导出字段的方法和自定义导出头信息。提供了`ExportHelper`类用于处理Excel头信息和字段名的映射,并展示了如何根据前端选择的字段进行自定义导出。
摘要由CSDN通过智能技术生成

实体类

	@ExcelProperty(value = "投资项目名称")
    @ColumnWidth(20)
    private String projectName;

@ExcelProperty :导出的标题名
@ColumnWidth:宽度

@Data
@Slf4j
public class ExportHelper {
    /**
     * 根据export类获取表头信息
     */
    public static List<String> listHeads(Class<?> clazz) {
        Field[] declaredFields = clazz.getDeclaredFields();
        List<String> headList = new ArrayList<>();
        for (Field declaredField : declaredFields) {
            if (declaredField.isAnnotationPresent(ExcelProperty.class)) {
                ExcelProperty annotation = declaredField.getAnnotation(ExcelProperty.class);
                headList.add(annotation.value()[0]);
            }
        }
        return headList;
    }

    /**
     * 根据表头信息获取字段名
     */
    public static List<String> listPropertyName(List<String> heads, Class<?> clazz) {
        Field[] declaredFields = clazz.getDeclaredFields();
        List<String> propertyList = new ArrayList<>();
        for (String head : heads) {
            for (Field declaredField : declaredFields) {
                if (declaredField.isAnnotationPresent(ExcelProperty.class)) {
                    ExcelProperty annotation = declaredField.getAnnotation(ExcelProperty.class);
                    if (head.equals(annotation.value()[0])) {
                        propertyList.add(declaredField.getName());
                    }
                }
            }
        }
        return propertyList;
    }
    }
/**
     * 获取Excel导出头信息
     */
    @GetMapping("/getExportHeads")
    public R<List<String>> getExportHeads() {
        List<String> heads = ExportHelper.listHeads(ExportProject.class);
        return R.ok(heads);
    }

    /**
     * 导出excel
     */
    @PostMapping("exportProject")
    public void exportProject(HttpServletResponse response, @RequestBody SubjectQuery query) throws IOException {
        Assert.notEmpty(query.getHeads(), "自定义导出头不能为空");
        WebHelper.responseDownloadExcel(response, "项目导出");
        List<ExportProject> projects = subjectService.listProjectExport(query);
        List<String> fileList = ExportHelper.listPropertyName(query.getHeads(), ExportProject.class);
        EasyExcel.write(response.getOutputStream(), ExportProject.class).includeColumnFiledNames(fileList).sheet("项目导出").doWrite(projects);
    }


其中getExportHeads这个方法可以给前端返回可以导出的字段,返回结果如图所示

在这里插入图片描述
前端可以选择其中的字段通过query中的字段 heads传递给后端实现自定义导出字段:
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值