springboot整合easyExcel实现报表导入导出

1.引入maven坐标

     <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
   	 </dependency>

2.编写导出实体类

package com.myservice.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * @ClassName UserEntity
 * @Description TODO
 * @Author kejj
 * @Date 2020/9/26 16:35
 * @Version 1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserEntity {
	
    @ExcelProperty("用户名") 
    private String userName;
    @ExcelProperty("年龄")
    private int age;
    
    @ExcelProperty("生日")
    @ColumnWidth(30)  //设置行宽
    private Date birthday;
    @ExcelProperty("备注")
    private String desc;


}

3.实现监听器

package com.myservice.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
 * @ClassName UserListerner
 * @Description TODO
 * @Author kejj
 * @Date 2020/9/26 16:39
 * @Version 1.0
 */
@Component
@Scope("prototype")
public class UserListerner extends AnalysisEventListener<UserEntity> {

/**
逻辑处理
*/
    @Override
    public void invoke(UserEntity userEntity, AnalysisContext analysisContext) {
        System.out.println(userEntity);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

4.对外暴露接口

package com.myservice.excel;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.builder.ExcelReaderBuilder;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName ExportExcel
 * @Description TODO
 * @Author kejj
 * @Date 2020/9/26 16:29
 * @Version 1.0
 */
@Controller
@RequestMapping("/excel")
public class ExportExcel {

    /**
     * 文件上传
     * @param file
     * @return
     * @throws IOException
     */
    @RequestMapping("/upload")
    @ResponseBody
    public Map read(MultipartFile file) throws IOException {
        ExcelReaderBuilder read = EasyExcel.read(file.getInputStream(), UserEntity.class, new UserListerner());
        //此处调用监听器的invoke方法,实现代码逻辑
        read.sheet().doRead();
        HashMap<Object, Object> map = new HashMap<>();
        map.put("respCode","200");
        map.put("desc","");
        return map;
    }

    /**
     * 文件下载
     * @param response
     * @throws IOException
     */
    @RequestMapping("download")
    @ResponseBody
    public  void write(HttpServletResponse response) throws IOException {

        String fileName = new String("用户模板.xlsx".getBytes(), "ISO-8859-1");
        response.addHeader("Content-Disposition", "filename=" + fileName);
        ServletOutputStream out = response.getOutputStream();
        //准备数据
        ArrayList<Object> objects = new ArrayList<>();
        for(int i = 0;i<10;i++){
            objects.add(new UserEntity("张三",13,new Date(),""));
        }
        //导出
        ExcelWriterBuilder write = EasyExcel.write(out, UserEntity.class);
        write.sheet().doWrite(objects);
    }

}

``

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SpringBoot是一个非常流行的开发框架,它为开发者提供了快速、简单的方式来构建Java应用程序。而EasyExcel是一个基于Java的强大的Excel读写框架,能够帮助开发者快速、高效地处理Excel文件。将SpringBootEasyExcel结合起来,可以实现动态表头导出的功能。 首先,我们需要在SpringBoot项目中引入EasyExcel的依赖,这可以通过在pom.xml文件中添加相应的依赖来实现。接着,我们需要编写相应的Java代码来实现动态表头导出的功能。首先,我们需要定义一个实体类,用来表示要导出的数据结构。然后,我们需要编写一个Controller来处理导出请求,并在其中调用EasyExcel的API来实现Excel文件的导出操作。 在实现动态表头导出的过程中,我们需要动态生成表头信息,这可以通过使用EasyExcel的注解来实现。我们可以根据导出数据的结构动态地生成表头信息,并将其与实际的数据一起写入Excel文件中。这样,就能够实现动态表头导出的功能了。 除了上述的步骤之外,我们还需要进行一些配置工作,例如配置Excel文件的格式、样式等。通过这些配置,我们可以实现导出Excel文件符合我们的实际需求。 总的来说,SpringBoot整合EasyExcel进行动态表头导出,需要引入EasyExcel的依赖,编写相应的Java代码,处理导出请求,并进行相应的配置工作。通过这样的方式,我们就能够实现动态表头导出的功能,使得导出Excel文件能够满足我们的实际需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值