瀏覽代碼

健康小屋-导出文件名乱码

huangzhiyong 6 年之前
父節點
當前提交
26ad61877e

+ 2 - 1
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/facilities/FacilitiesController.java

@ -285,6 +285,7 @@ public class FacilitiesController extends EnvelopRestEndpoint {
    @GetMapping("/exportToExcel")
    @ApiOperation(value = "设施列表导出excel")
    public void exportToExcel(
            HttpServletRequest request,
            HttpServletResponse response,
            @ApiParam(name = "filters", value = "过滤条件", required = false) @RequestParam(required = false, name = "filters") String filters,
            @ApiParam(name = "sorts", value = "排序", required = false) @RequestParam(required = false, name = "sorts") String sorts) throws ManageException {
@ -295,7 +296,7 @@ public class FacilitiesController extends EnvelopRestEndpoint {
        } catch (ParseException e) {
            throw new ManageException("获取设施列表异常", e);
        }
        facilityService.exportFacilityExcel(response, facilityList);
        facilityService.exportFacilityExcel(request, response, facilityList);
    }

+ 3 - 1
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/controller/user/UserController.java

@ -28,6 +28,7 @@ import org.springframework.http.MediaType;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.text.ParseException;
@ -283,6 +284,7 @@ public class UserController extends EnvelopRestEndpoint {
    @GetMapping("/exportToExcel")
    @ApiOperation(value = "用户列表导出excel")
    public Envelop exportToExcel(
            HttpServletRequest request,
            HttpServletResponse response,
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "")
            @RequestParam(value = "fields", required = false) String fields,
@ -294,7 +296,7 @@ public class UserController extends EnvelopRestEndpoint {
        try {
            //获取用户数据
            List<User> userList = userService.search(fields, filters, sorts);
            userService.exportUsersExcel(response, userList);
            userService.exportUsersExcel(request, response, userList);
            return success("导出成功");
        } catch (ManageException e) {
            return failed(e.getMessage());

+ 19 - 6
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/facility/FacilityService.java

@ -27,10 +27,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.util.*;
/**
@ -104,14 +106,25 @@ public class FacilityService extends BaseJpaService<Facility, FacilityDao> {
     * @param facilityList 用户列表
     * @throws ManageException
     */
    public void exportFacilityExcel(HttpServletResponse response, List<Facility> facilityList) throws ManageException {
    public void exportFacilityExcel(HttpServletRequest request, HttpServletResponse response, List<Facility> facilityList) throws ManageException {
        try {
            String fileName = "健康小屋-设施列表";
            String fileName = "健康小屋-设施列表.xlsx";
            // 对文件进行url编码
            if (request.getHeader("user-agent").toLowerCase().contains("msie")//ie10以
                    || request.getHeader("user-agent").toLowerCase().contains("like gecko")// ie10及以上取消了msie用户代理字符串
                    ) {
                // IE
                fileName = URLEncoder.encode(fileName, "UTF-8");
            } else {
                // 非IE
                fileName = new String(fileName.getBytes("utf-8"), "ISO8859-1");
            }
            //设置下载
            response.setCharacterEncoding("utf-8");
            response.setContentType("octets/stream");
            response.setHeader("Content-Disposition", "attachment; filename="
                    + new String(fileName.getBytes("gb2312"), "ISO8859-1") + ".xlsx");
            response.setCharacterEncoding("UTF-8");
            fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Type", "application/octet-stream");
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            OutputStream os = response.getOutputStream();
            //写excel
            Workbook workbook = new XSSFWorkbook();

+ 16 - 3
svr/svr-healthy-house/src/main/java/com/yihu/jw/healthyhouse/service/user/UserService.java

@ -27,10 +27,12 @@ import org.springframework.util.StringUtils;
import org.springside.modules.persistence.DynamicSpecifications;
import org.springside.modules.persistence.SearchFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.transaction.Transactional;
import java.io.OutputStream;
import java.io.Serializable;
import java.net.URLEncoder;
import java.util.*;
import java.util.concurrent.TimeUnit;
@ -395,14 +397,25 @@ public class UserService extends BaseJpaService<User, UserDao> {
     * @param userList  用户列表
     * @throws ManageException
     */
    public void exportUsersExcel(HttpServletResponse response, List<User> userList) throws ManageException {
    public void exportUsersExcel(HttpServletRequest request, HttpServletResponse response, List<User> userList) throws ManageException {
        try {
            String fileName = "健康小屋-用户列表";
            String fileName = "健康小屋-用户列表.xlsx";
//            fileName = new String( fileName.getBytes("gb2312"), "ISO8859-1" )+".xlsx";
            // 对文件进行url编码
            if (request.getHeader("user-agent").toLowerCase().contains("msie")//ie10以
                    || request.getHeader("user-agent").toLowerCase().contains("like gecko")// ie10及以上取消了msie用户代理字符串
                    ) {
                // IE
                fileName = URLEncoder.encode(fileName, "UTF-8");
            } else {
                // 非IE
                fileName = new String(fileName.getBytes("utf-8"), "ISO8859-1");
            }
            //设置下载
            response.setCharacterEncoding("utf-8");
            response.setContentType("octets/stream");
            response.setHeader("Content-Disposition", "attachment; filename="
                    + new String( fileName.getBytes("gb2312"), "ISO8859-1" )+".xlsx");
                    + fileName);
            OutputStream os = response.getOutputStream();
            //写excel
            Workbook workbook = new XSSFWorkbook();