Springboot使用EasyPoi进行Excel大数据导出

本文介绍如何利用EasyPOI库在Spring Boot项目中实现Excel文件的导出功能。通过配置Maven依赖,创建Controller、Service及DAO层代码,并提供具体的Mapper XML示例,实现了基于HTTP请求导出数据到Excel文件的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven

<dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>4.1.2</version>
        </dependency>

controller

    /**
     * 导出excel
     * @param request
     */
    @GetMapping("/export")
    public void export(HttpServletRequest request, HttpServletResponse response) {
        Map<String, Object> requestQueryParams = CommonUtil.requestQueryParams(request);
        areaStayService.export(requestQueryParams,response);
    }

service

@Service
public class ExcelExportService implements IExcelExportServer {
    @Autowired
    private VisitorAreaStayService visitorAreaStayService;

    @Override
    public List<Object> selectListForExcelExport(Object o, int page) {
        return visitorAreaStayService.selectListForExcelExport(JSONObject.parseObject(JSONObject.toJSONString(o)),page);
    }
}
public interface VisitorAreaStayService {

    void export(Map<String, Object> requestQueryParams, HttpServletResponse response);
    
    List<Object> selectListForExcelExport(Map<String, Object> queryParams, int page);
}
@Slf4j
@Service
public class VisitorAreaStayServiceImpl implements VisitorAreaStayService{
    @Autowired
    private VisitorAreaStayMapper mapper;
    @Autowired
    private ExcelExportService excelExportServer;
    
    @Override
    public void export(Map<String, Object> requestQueryParams, HttpServletResponse response) {
        try {
            Date start = new Date();
            ExportParams params = new ExportParams("大数据测试", "测试");
            Workbook workbook = ExcelExportUtil.exportBigExcel(params, VisitorAreaStay.class, excelExportServer, requestQueryParams);
            log.debug("excel导出耗时:{} 秒", new Date().getTime() - start.getTime());
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode("区域停留记录.xls", "UTF-8"));
            ServletOutputStream out = response.getOutputStream();
            workbook.write(out);
            out.flush();
            out.close();
            //下载至指定路径
//        File savefile = new File("D:/excel/");
//        if (!savefile.exists()) {
//            savefile.mkdirs();
//        }
//        FileOutputStream fos = new FileOutputStream("D:/excel/data.xlsx");
//        workbook.write(fos);
//        fos.close();
        } catch (IOException e) {
            e.printStackTrace();
            log.error("excel导出失败:", e);
        }
    }

    @Override
    public List<Object> selectListForExcelExport(Map<String, Object> queryParams, int page) {
        int end = 20;
        queryParams.put("start", (page - 1) * end);
        queryParams.put("end", end);
        return mapper.selectListForExcelExport(queryParams);
    }
}

dao


    List<Object> selectListForExcelExport(Map<String, Object> queryParams);

mapper.xml

    <select id="selectListForExcelExport" parameterType="hashMap" resultMap="EntityResult">
        <include refid="selectEntityVo"></include>
        <where>
            <if test="areaId!=null">AND area_id like concat('%', #{areaId}, '%')</if>
            <if test="areaName!=null and areaName!=''">AND area_name like concat('%', #{areaName}, '%')</if>
            <if test="visitorName!=null and visitorName!=''">AND visitor_name like concat('%', #{visitorName}, '%')</if>
            <if test="visitorId!=null and visitorId!=''">AND visitor_id like concat('%', #{visitorId}, '%')</if>
        </where>
        ORDER BY create_time DESC LIMIT #{start},#{end};
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值