陈昶聿
13 小时以前 ae99ac8436d476f112d0d4328299d8220eaeb3a8
【丽水】随访统计导出调整
已修改1个文件
50 ■■■■ 文件已修改
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -20,8 +20,10 @@
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.ServletUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.RegExUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
@@ -455,13 +457,8 @@
     */
    public void exportExcelWithFileName(HttpServletResponse response, List<T> list, String sheetName, String fileName) {
        //设置文件名
        try {
            fileName = URLEncoder.encode(fileName, "UTF8") + ".xls";
            response.setHeader("Content-Disposition",
                    "attachment;filename=" + fileName);
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        HttpServletRequest request = ServletUtils.getRequest();
        setExcelFileName(response, request, fileName);
        exportExcel(response, list, sheetName, StringUtils.EMPTY);
    }
@@ -1450,4 +1447,43 @@
        }
        return method;
    }
    /**
     * 判断是否为低版本浏览器
     *
     * @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 浏览器请求头
     * @param fileName 文件名称
     */
    public void setExcelFileName(HttpServletResponse response, HttpServletRequest request, String fileName) {
        try {
            //会清空响应缓冲区的内容,确保后续输出不会受到之前数据的影响
            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"));
            }
            // 定义下载的类型,标明是excel文件
            response.setContentType("application/vnd.ms-excel");
        }catch (Exception e){
            log.error("{}设置导出Excel文件名称异常,{}", fileName, e.getMessage());
        }
    }
}