自学内容网 自学内容网

springboot xls或者xlsx文件编译后打不开的问题

问题描述

在开发spring cloud项目中突然遇到导出xls文件输入流打不开的问题,文件位置和具体代码实现如下

src
└── main
    └── resources
        └── templates
            └── template.xls
@Override
    public void getTemplateFile(HttpServletResponse response) throws IOException {
        // 设置下载文件的名称
        String fileName = "template.xls";
        response.reset();

        // 设置下载
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, StandardCharsets.UTF_8));
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");

        // 文件路径
        String tempFile = "static/" + fileName;

        // 使用 try-with-resources 自动关闭资源
        try (InputStream in = this.getClass().getClassLoader().getResourceAsStream(tempFile);
             BufferedInputStream bis = new BufferedInputStream(in);
             BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream())) {

            int len;
            byte[] buffer = new byte[4 * 1024];

            while ((len = bis.read(buffer, 0, buffer.length)) != -1) {
                bos.write(buffer, 0, len);
            }

            bos.flush();
            response.flushBuffer();
        } catch (IOException e) {
            // 记录异常信息
            e.printStackTrace();
            throw e; // 重新抛出异常,让调用者知道发生了错误
        }
    }

解决方案:

在pom文件 build 中加入这段代码,maven打包不应该编译这类文件

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>

</plugins>

原文地址:https://blog.csdn.net/ZhiJICN/article/details/143716926

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!