当前位置:   article > 正文

解决 Spring boot Java下载Excel,office提示内容有问题_public模板下载前端xlsx offic打开报错

public模板下载前端xlsx offic打开报错

项目中偶然发现excel文件下载之后,打开会出现这种情况。
在这里插入图片描述
网上找了几篇博客,部分博主的原因是打包的时候maven对excel进行了压缩,导致出现问题。
参考:
https://blog.csdn.net/weixin_44601714/article/details/100543960

但是我检查了下我的打包后的文件excel可以正常打开,排除是上面这种原因,推测还是代码出现了问题。
后尝试用poi的workbook进行读写 ,解决问题。
读取表格还是poi专业。

上代码:

@RequestMapping("/downloadTemplate")
    public Result downloadTemplate(HttpServletResponse response) {
        Resource resource = new ClassPathResource("基础数据模板.xlsx");
        String fileName = "基础数据模板.xlsx";//被下载文件的名称
        if (resource.exists()) {
            response.setContentType("application/binary");// 设置强制下载不打开
            try{
                response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));

            }catch (Exception e){
                e.printStackTrace();
            }
           byte[] buffer = new byte[1024];
            BufferedInputStream bis = null;
            try {
                bis = new BufferedInputStream(resource.getInputStream());
                XSSFWorkbook workbook = new XSSFWorkbook(bis);
                OutputStream outputStream = response.getOutputStream();
                workbook.write(outputStream);
             outputStream.flush();
                return Result.builder().message("下载成功").code(0).success(true).build();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (bis != null) {
                    try {
                        bis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            }
        }
        return Result.builder().message("下载失败").code(-1).success(false).build();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

下面是原本有问题的代码,也能进行下载不过在部分excel软件上会出现上述问题:

@RequestMapping("/downloadTemplate")
    public Result downloadTemplate(HttpServletResponse response) {
        Resource resource = new ClassPathResource("基础数据模板.xlsx");
        String fileName = "基础数据模板.xlsx";//被下载文件的名称
        if (resource.exists()) {
            response.setContentType("application/binary");// 设置强制下载不打开
            try{
                response.addHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));

            }catch (Exception e){
                e.printStackTrace();
            }
           byte[] buffer = new byte[1024];
            BufferedInputStream bis = null;
            try {
                bis = new BufferedInputStream(resource.getInputStream());
		OutputStream outputStream = response.getOutputStream();
                int i = bis.read(buffer);
                while (i != -1) {
                    outputStream.write(buffer, 0, i);
                    i = bis.read(buffer);
                }
                outputStream.flush();
                return Result.builder().message("下载成功").code(0).success(true).build();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (bis != null) {
                    try {
                        bis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            }
        }
        return Result.builder().message("下载失败").code(-1).success(false).build();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/815978
推荐阅读
相关标签
  

闽ICP备14008679号