陈昶聿
13 小时以前 40249b1a7a339f2e07079b79a273718b58cf89af
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -1449,19 +1449,6 @@
    }
    /**
     * 判断是否为低版本浏览器
     *
     * @param request 浏览器请求头
     * @return
     */
    public static boolean isLowVersionBrowser(HttpServletRequest request) {
        String userAgent = request.getHeader("User-Agent");
        return userAgent.contains("msie")
                || userAgent.contains("Trident")
                || userAgent.contains("Edge");
    }
    /**
     * 设置导出Excel文件名称
     * @param response 返回数据
     * @param request 浏览器请求头
@@ -1472,16 +1459,15 @@
            //会清空响应缓冲区的内容,确保后续输出不会受到之前数据的影响
            response.reset();
            // 定义浏览器响应表头,顺带定义下载名
            if (isLowVersionBrowser(request)) {
                fileName = URLEncoder.encode(fileName, "UTF8") + ".xlsx";
                response.setHeader("Content-Disposition",
                        "attachment;filename=" + fileName);
            } else {
                response.setHeader("Content-Disposition",
                        "attachment;filename=" + new String((fileName + ".xlsx").getBytes("gb2312"), "ISO8859-1"));
            }
            fileName = fileName + ".xlsx";
            // 对文件名进行URL编码,支持中文文件名
            String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
            // 使用 filename* 参数支持 UTF-8 编码(RFC 5987),同时保留 filename 参数兼容旧浏览器
            response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName +
                    "\"; filename*=utf-8''" + encodedFileName);
            // 定义下载的类型,标明是excel文件
            response.setContentType("application/vnd.ms-excel");
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
        }catch (Exception e){
            log.error("{}设置导出Excel文件名称异常,{}", fileName, e.getMessage());
        }