Java 下载 Excel模板

 /**
     * 下载导入应用模板
     *
     * @return
     */
    @ResponseBody
    @RequestMapping(method = RequestMethod.GET)
    public Response getApplicationTemplate(HttpServletRequest req, HttpServletResponse res) {
        try {
            //获取要下载的模板名称
            String fileName = "ApplicationImportTemplate.xlsx";
            //设置要下载的文件的名称
            res.setHeader("Content-disposition", "attachment;fileName=" + fileName);
            //通知客服文件的MIME类型
            res.setContentType("application/vnd.ms-excel;charset=UTF-8");
            //获取文件的路径
            String filePath = getClass().getResource("/template/" + fileName).getPath();
            FileInputStream input = new FileInputStream(filePath);
            OutputStream out = res.getOutputStream();
            byte[] b = new byte[2048];
            int len;
            while ((len = input.read(b)) != -1) {
                out.write(b, 0, len);
            }
            //修正 Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作簿的来源,请点击"是"
            res.setHeader("Content-Length", String.valueOf(input.getChannel().size()));
            input.close();
            return Response.ok("应用导入模板下载完成");
        } catch (Exception ex) {
            log.error("getApplicationTemplate :", ex);
            return Response.ok("应用导入模板下载失败!");
        }
    }

需要下载文件位置:
这里写图片描述

如果在HttpServletResponse Header中不指定Content-Length,那么在下载完成打开后,会有如下提示:
这里写图片描述

个人微信公众号:
这里写图片描述

作者:jiankunking 出处:http://blog.youkuaiyun.com/jiankunking

### 使用Java实现下载Excel模板 对于使用Java来实现在Web应用程序中下载Excel模板的功能,可以采用多种方法和技术栈组合。这里主要介绍基于`Spring Boot`框架配合前端Vue.js的情况,并重点说明后端部分。 #### 库的选择 在众多可用的库当中,Apache POI是一个广泛认可并被频繁使用的工具包,它允许开发者创建、修改和查询Microsoft Office文档的内容,在此场景下即是指操作Excel文件[^1]。另一个备选方案是EasyExcel,该库由阿里巴巴开源,旨在简化大量数据写入Excel的操作流程,不过考虑到需求仅涉及简单的模板下载而非大批量的数据处理,因此下面将以更通用也更为成熟的Apache POI为例进行讲解。 #### 后端逻辑实现 为了响应来自客户端(比如通过点击按钮触发)请求而返回一个预定义好的Excel模板给浏览器让用户保存到本地磁盘,服务器端需要完成如下工作: - 创建一个新的HTTP GET接口; - 构建好要发送出去的实际二进制流形式的Excel文件对象; - 设置正确的MIME类型以便让接收方知道这是一个可识别为电子表格的应用程序/文件格式; - 将准备完毕后的字节流传送给调用者作为回应体的一部分; 具体来说就是编写一段能够生成指定结构样式的空白表单并且将其打包成`.xlsx`扩展名结尾的压缩档案再附加上适当头部信息之后推送到网络上的服务函数。 下面是具体的代码片段展示如何利用Apache POI构建这样一个简易的服务端点: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @RestController @RequestMapping("/api/excel") public class ExcelController { @GetMapping("/download-template") public void downloadTemplate(HttpServletResponse response) throws IOException { // 定义输出的工作簿实例 Workbook workbook = new SXSSFWorkbook(); try (workbook){ Sheet sheet = workbook.createSheet("Template"); Row headerRow = sheet.createRow(0); CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setBold(true); style.setFont(font); String[] headers = {"ID", "Name", "Email"}; for(int i=0;i<headers.length;i++){ Cell cell = headerRow.createCell(i); cell.setCellValue(headers[i]); cell.setCellStyle(style); } // 准备向客户端传输之前先设定响应头参数 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition","attachment; filename=\"template.xlsx\""); // 实际写出至HttpServletResponse的OutputStream里去 workbook.write(response.getOutputStream()); } } } ``` 这段代码展示了怎样设置控制器中的处理器方法以满足上述提到的各项任务要求。当接收到对应路径下的GET请求时就会执行其中封装的动作链路从而达成目的——使用户能够在自己的设备上获取到一份按照既定模式布局而成的新建Excel文档副本。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值