| | |
| | | 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; |
| | |
| | | */ |
| | | 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); |
| | | } |
| | | |
| | |
| | | } |
| | | 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()); |
| | | } |
| | | } |
| | | } |