随笔 - 239  文章 - 0  评论 - 29  阅读 - 69万

SpringWebflux框架里导出excel文档

本demo里使用springboot 2.7.0版本。

@GetMapping("/download/excel/file")
    public Mono<Void> downloadExcelFile(ServerHttpResponse response, WebSession webSession) {
        
        // 设置被下载的文件名称
        response.getHeaders().set(org.springframework.http.HttpHeaders.CONTENT_DISPOSITION, "attachment; " +
                            "filename=demo.xls");
        response.getHeaders().add("Accept-Ranges", "bytes");
        
        // 定义输出流
        DefaultDataBuffer dataBuffer = new DefaultDataBufferFactory().allocateBuffer();
                    OutputStream outputStream = dataBuffer.asOutputStream();
        try {
            // 定义excel文件
            Workbook workbook = new XSSFWorkbook();
            // 将excel文件流写入到output流
            workbook.write(outputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        Flux<DataBuffer> dataBufferFlux = Flux.create((FluxSink<DataBuffer> emitter) -> {
                        emitter.next(dataBuffer);
                        emitter.complete();
                    });
        
        // 往response写output流
//                    return response.writeWith(dataBufferFlux);
        return response.writeAndFlushWith(Mono.just(dataBufferFlux));
    }

 end.

posted on   梦幻朵颜  阅读(879)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

点击右上角即可分享
微信分享提示