Springboot中生成CSV并且下载文件的例子

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

        // 将查询结果转换为需要导出的实体类列表
        List<UsersModelDO> usersModelDOList = BeanUtil.copyToList(jfBusinessInfoPage.getResult(), UsersModelDO.class);

        // 设置导出文件的表头信息
        final String header = "商户代码|商户名称|商户性质0-线下,1-线上|签约地区|签约机构|起始时间|截至时间|商户地址|商户联系人|联系";

        // 生成导出文件的文件名
        String fileName = ".".concat(File.separator).concat(ExCsvUtil.getUniqueKey()).concat(".csv");

        try {
            File file = new File(fileName);

            // 写入数据到生成的CSV文件中
            if (ExCsvUtil.writeCsv(usersModelDOList, UsersModelDO.class, file, header) == 1) {
                response.setCharacterEncoding("UTF-8");
                response.addHeader("Content-Disposition", "attachment; filename=model.csv");
                response.setContentType("application/csv;charset=UTF-8");

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

                // 将数据流写入Response输出流中,用于下载
                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 "导出失败";
    }

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

发表评论

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