Java web Excel导出/下载 示例关键代码部分

场景

下载模板,导出excel 等

关键示例代码

入口处:

	// 导出或下载的请求示例
    @GetMapping(value = "/downloadTemplate")
    public Response downloadTemplate(HttpServletResponse httpServletResponse) {
        Response response = new Response();
        httpServletResponse.setContentType("application/x-download;charset=UTF-8");
        try (OutputStream os = httpServletResponse.getOutputStream()) {

            httpServletResponse
                    .setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("导出的文件名.xlsx", "UTF-8").replace("+", "%20"));
            // 通过Excel 创建出的工作簿对象 在service 内完成excel 的创建和数据写入
            XSSFWorkbook wb = xxxxxxxxxxService.downloadTemplate();
            // 将模板写入请求输出流
            wb.write(os);
            return response;
        } catch (Exception e) {
            log.error("导出excel失败", e);
            throw new Exception("异常信息");
        }
    }

创建excel 部分 (xlsx格式)

    @Override
    public XSSFWorkbook downloadTemplate() {
        // 创建工作簿
        XSSFWorkbook wb = new XSSFWorkbook();
        // sheet 名
        Sheet sheet = wb.createSheet("sheet1");
        // 每一列默认宽度
        sheet.setDefaultColumnWidth(45);
        // 获取要写入的业务数据信息
        // 。。。。。。。。。
        // 所有标题定义 (自定义的,之类是用于动态获取表头信息 然后循环创建表头,实际固定的话可以写死,跳过这里)
        List<XxxxxxDTO> allTitleDefinedList = new ArrayList<>(16);
        allTitleDefinedList.addAll(xxxxxxxxxx);
        allTitleDefinedList.addAll(xxxxxx);


        // 创建标题行
        Row firstTitleRow = sheet.createRow(0);
        this.createCell(firstTitleRow, 0, "第一列表头名");
        this.createCell(firstTitleRow, 1, "第二列表头名");

       
       // 通过遍历上面的标题信息创建后面几列的数据  改方法见下方定义
        this.createCell(firstTitleRow, 2 + xxxx, "写入的值");
        

        // 创建新的一行提示信息与示例
        Row xxxxXxxxx = sheet.createRow(1);
        // 将上方业务数据通过 先创建行,在写入指定某一行某一列,完成数据写入
        // 。。。。。。。
        // 。。。。。。。


        return wb;
    }

	// 封装一下  在某一行的某一列写入某个值
    public Cell createCell(Row row, int num, String value) {
        Cell cell = row.createCell(num);
        cell.setCellValue(value);
        return cell;
    }

结束,具体写入的内容根据需要填入即可

你可能感兴趣的:(JavaWeb开发,#,其他框架,Java,java,excel)