使用poi实现excel导出时,导出的文件内容和文件名都是乱码。请问下怎么解决呀?excel内容如下

解决方案 »

  1.   

     response.setContentType("application/binary;charset=UTF-8");
                  try{
                      ServletOutputStream out=response.getOutputStream();
                      try {
                          response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("download"+".xls", "UTF-8"));
                      } catch (UnsupportedEncodingException e1) {
                          e1.printStackTrace();
                      }
                   
                      String[] titles = { "序号", "企业名称", "公司定位", "产品","功能","服务","价格","销量","联系方式","备注"}; 
                      companyService.exportExcel(titles,out);
                      return "success";
                  } catch(Exception e){
                      e.printStackTrace();
                      return "导出信息失败";
                  }
              }
      

  2.   

    我用你这个还是不行呀,下载的文件名直接变掉了,而且还不是xls后缀,换了后缀打开来还是乱码的。
    文件名
      

  3.   

    不大了解,查了一些资料,貌似要设置输出单元格的编码,试一下:
    cell.setEncoding(HSSFCell.ENCODING_UTF_16);
      

  4.   

     @PostMapping(value = "/export", produces = "application/octet-stream")
    或者@PostMapping(value = "/export", consumes = “application/octet-stream")请求的时候要指定参数application/octet-stream
      

  5.   

    编码统一了就不会乱码的, 设置响应的编码方式,resp.setCharacterEncoding("utf-8") 没用的,你要设置
    resp.setContentType("application/vnd.ms-excel;charset=utf-8");
      

  6.   

    response.setContentType("application/octet-stream");
            String filename = "订单批量导出";
            try {
                String file_name = URLEncoder.encode(filename, "UTF-8");
                response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
                response.setHeader("Content-disposition", "attachment;filename=" + file_name + System.currentTimeMillis() + ".xls");// 默认Excel名称
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            try {
                response.flushBuffer();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                wb.write(response.getOutputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
      

  7.   

    String agent = request.getHeader("USER-AGENT").toLowerCase();
       response.setContentType("application/vnd.ms-excel");
       String fileName = "文件名";
       String codedFileName = java.net.URLEncoder.encode(fileName, "UTF-8");
       if (agent.contains("firefox")) {
               response.setCharacterEncoding("utf-8");
               response.setHeader("content-disposition", "attachment;filename=" + new String(fileName.getBytes(), "ISO8859-1") + ".xls" );
      } else {
              response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xls");
       }