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

使用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日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)