| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 设置导出Excel文件名称 |
| | | * @param response 返回数据 |
| | | * @param request 浏览器请求头 |
| | | * @param fileName 文件名称 |
| | | */ |
| | | public void setExcelFileName(HttpServletResponse response, HttpServletRequest request, String fileName) { |
| | | try { |
| | | //会清空响应缓冲区的内容,确保后续输出不会受到之前数据的影响 |
| | | response.reset(); |
| | | // 定义浏览器响应表头,顺带定义下载名 |
| | | 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.openxmlformats-officedocument.spreadsheetml.sheet"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | }catch (Exception e){ |
| | | log.error("{}设置导出Excel文件名称异常,{}", fileName, e.getMessage()); |
| | | } |
| | | } |
| | | } |