springboot下载excel(解决文件损坏问题)

您所在的位置:网站首页 excel表格显示名称冲突打不开 springboot下载excel(解决文件损坏问题)

springboot下载excel(解决文件损坏问题)

2024-07-09 02:47| 来源: 网络整理| 查看: 265

页面

在这里插入图片描述

Controller /** * @Author 张满 * @Description 下载校友示例表格 * @Date 2019/8/15 21:31 * @Param [request, response] * @return void **/ @RequestMapping("/downloadDemo") public void downloadDemo(HttpServletRequest request, HttpServletResponse response) throws Exception{ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); String fileName = "示例样表.xlsx"; fileName=new String(fileName.getBytes(),"ISO-8859-1"); response.setHeader("Content-Disposition", "attachment; filename="+fileName); InputStream fis=null; OutputStream os=null; try { //读取文件 File file=null; String sys = System.getProperty("os.name"); if(sys.toLowerCase().startsWith("win")){ //在开发环境下这么读取文件,在生产环境中不能这么读取 file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "static/download/示例样表.xlsx"); fis=new FileInputStream(file); //写入输出流返回客户端 os = response.getOutputStream(); int len = -1; byte[] b = new byte[1024*10]; while ((len=fis.read(b))!=-1){ os.write(b,0,len); } os.flush(); }else { //在生产环境下 path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取 //这种方式打成jar包后,文件会被损坏!!!使用poi解决 fis = this.getClass().getResourceAsStream("/static/download/示例样表.xlsx"); //HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls //XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx XSSFWorkbook workbook = new XSSFWorkbook(fis); os = response.getOutputStream(); workbook.write(os); workbook.close(); } } catch (IOException e) { e.printStackTrace(); } finally { try { if(os!=null){ os.close(); } if(fis!=null){ fis.close(); } } catch (IOException e) { e.printStackTrace(); } } } 资源

在这里插入图片描述

pom org.apache.poi poi 3.11 org.apache.poi poi-ooxml 3.11 org.apache.poi poi-ooxml-schemas 3.11 org.apache.xmlbeans xmlbeans 2.6.0 org.apache.poi poi-examples 3.11 问题

在本地测试一切正常,但是放在服务器上就会发生问题,下载的excel表格显示:文件损坏,无法打开! 经过排查。我发现使用wps就可以打开文件。使用微软的excel就不行 在这里插入图片描述

解决方法 这其实是excel对网络上下载的文件的安全性控制。 解决方法一:

右键点击文件,查看属性,勾选“解除锁定”,点击确定,即可解决。 在这里插入图片描述

解决方法二:

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

将以上三个选项都不选中,即可解决

方法一相较与方法二简单,但是只能解决一次,每次都要这么点,方法二设置后,以后就可以不用设置。 获得也可以使用wps而不使用excel。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3