Springboot中文件导出下载的一个案例(CSV方向)

// 导出黑名单
public String exportBlackModel(HttpServletResponse response) {
        final String header = "客户号|客户姓名|积分活动账户|活动名称|备注";

        String fileName = "." + File.separator + ExCsvUtil.getUniqueKey() + ".csv";
        List<BlackModeDO> blackModeDOList = new ArrayList<>();

        // 如果没有添加数据的过程,就无法添加表头,所以加一个空属性
        BlackModeDO blackModeDO = new BlackModeDO();
        blackModeDO.setComments("");
        blackModeDOList.add(blackModeDO);

        try {
            File file = new File(fileName);

            if (ExCsvUtil.writeCsv(blackModeDOList, BlackModeDO.class, file, header) == 1) {
                response.setCharacterEncoding("UTF-8");
                response.addHeader("Content-Disposition", "attachment; filename=model");
                response.setContentType("application/csv; charset=UTF-8");

                InputStream inputStream = new FileInputStream(file);
                int len = 0;
                byte[] bytes = new byte[1024 * 8];

                while ((len = inputStream.read(bytes)) != -1) {
                    response.getOutputStream().write(bytes, 0, len);
                }

                inputStream.close();
                file.delete();

                return "导出成功";
            }

        } catch (FileNotFoundException e) {
            return "文件异常";

        } catch (IOException e) {
            return "上传异常";
        } finally {
            // 在这里执行清理或资源释放的操作
        }

        return "导出失败";
    }

// 导出用户
public String exportUsersCSV(QueryUsersRequestVo queryUserRequestVO, HttpServletResponse response) {
    // 查询获取数据
    Page<JfBusinessInfo> jfBusinessInfoPage = PageHelper.startPage(queryUsersRequestVo.getPage(), queryUsersRequestVo.getSize())
            .doSelectPage(() -> jfBusinessInfoMapper.queryUsersPage (
                            queryUserRequestVO
            ));

    List<UsersModelDO> usersModelDOList = BeanUtil.copyToList(jfBusinessInfoPage.getResult(), UsersModelDO.class);

    final String header = "商户代码|商户名称|商户性质(0-线下,1-线上)|签约地区|签约机构|起始时间|截至时间|商户地址|商户联系人|联系电话";

    String fileName = "." + File.separator + ExCsvUtil.getUniqueKey() + ".csv";

    try {
        File file = new File(fileName);

        if (ExCsvUtil.writeCsv(usersModelDOList, UsersModelDO.class, file, header) == 1) {
            response.setCharacterEncoding("UTF-8");
            response.addHeader("Content-Disposition", "attachment; filename=model");
            response.setContentType("application/csv; charset=UTF-8");

            InputStream inputStream = new FileInputStream(file);
            int len = 0;
            byte[] bytes = new byte[1024 * 8];

            while ((len = inputStream.read(bytes)) != -1) {
                response.getOutputStream().write(bytes, 0, len);
            }

            inputStream.close();
            file.delete();

            return "导出成功";
        }
        
    } catch (FileNotFoundException e) {
        return "文件异常";
    } catch (IOException e) {
        return "上传异常";
    }

    return "导出失败";
}

扫描二维码,在手机上阅读!

发表评论

电子邮件地址不会被公开。 必填项已用*标注