不想挤地铁 2022-02-23 16:28 采纳率: 60%
浏览 2982
已结题

使用postman测试下载xls文件,下载的文件名出现中文乱码

使用postman测试下载xls文件,下载的文件名出现中文乱码
public void exportTeam(AdminInfo adminInfo, SelectTeamDTO dto, HttpServletRequest request, HttpServletResponse response) {

        //导出时取消分页
        dto.setPageSize(Integer.MAX_VALUE);
        dto.setPageIndex(1);

        //查询数据
        BasePageResponse<SelectTeamVO> teamList = teamManageService.selectTeamPage(adminInfo, dto.getTeamName(), dto.getPageIndex(), dto.getPageSize());
        List<SelectTeamVO> records = teamList.getRecords();
        List<SelectTeamVO> vos = new ArrayList<>();

        //设置属性
        records.forEach(p -> {
            SelectTeamVO vo = new SelectTeamVO();
            BeanUtils.copyProperties(p, vo);
            vos.add(vo);
        });

        String sheetName = ExportSheetNameEnum.team_sheet;
        String fileName = sheetName + ".xls";
        String[] title = ExportTitleEnum.teamList_title;

        String[][] values = new String[vos.size()][title.length];
        for (int i = 0; i < vos.size(); i++) {
            values[i] = new String[title.length];
            SelectTeamVO vo = vos.get(i);
            values[i][0] = vo.getTeamName();
            values[i][1] = vo.getTeamType();
            values[i][2] = vo.getProjectName();
            values[i][3] = vo.getLeaderName();
            values[i][4] = vo.getTeamTypeNo();
        }

       //初始化表格设置
        Map<String, Object> map = ExcelUtil.exportFirstSet(sheetName, title);
        HSSFRow row = (HSSFRow) map.get("HSSFRow");
        HSSFSheet sheet = (HSSFSheet) map.get("HSSFSheet");
        HSSFWorkbook wb = (HSSFWorkbook) map.get("HSSFWorkbook");
        //创建内容
        for (int i = 0; i < values.length; i++) {
            row = sheet.createRow(i + 1);
            for (int j = 0; j < values[i].length; j++) {
                row.createCell(j).setCellValue(values[i][j]);
            }
        }
        //设置样式
        ExcelUtil.setHeightWidth(values, null, null, row, sheet);
        //响应到客户端
        try {
            ExcelUtil.setResponseHeader(response, request, fileName);
            OutputStream os = response.getOutputStream();
            wb.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

img

  • 写回答

4条回答 默认 最新

  • 大鹏cool Java领域优质创作者 2022-02-23 16:36
    关注

    乱码是因为文件名存在中文,为编码后的文件名,由于浏览器会自动解码,而 postman 不会,所以显示乱码,不影响打开。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 创建了问题 2月23日

悬赏问题

  • ¥20 springboot和springcloud版本问题
  • ¥15 ps2手柄控制树莓派小车
  • ¥30 C#:vsto powerpoint的外接程序
  • ¥30 stata将do文件代码转化为ado文件
  • ¥15 两个同维数组相比,不同位置、出现重复比无意义,而不同位置、不出现重复比,则有意义。把有意义的两个数组放入新的集合MK中。
  • ¥15 可以远程电脑安装nvm
  • ¥15 写一个可直接调用的函数,将32位有符号数转成另一个无符号的数
  • ¥15 CMAKE+VS2019+QT5.15.2组合进行二次编译
  • ¥15 nginx 配置静态html访问 ,后台登录时页面始终被重定向到登录页,无法访问到后台的静态html页
  • ¥20 自动登录的j2ee程序编译