POI导出excel中文乱码问题 使用poi实现excel导出时,导出的文件内容和文件名都是乱码。请问下怎么解决呀?excel内容如下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 "导出信息失败"; } } 我用你这个还是不行呀,下载的文件名直接变掉了,而且还不是xls后缀,换了后缀打开来还是乱码的。文件名 不大了解,查了一些资料,貌似要设置输出单元格的编码,试一下:cell.setEncoding(HSSFCell.ENCODING_UTF_16); @PostMapping(value = "/export", produces = "application/octet-stream")或者@PostMapping(value = "/export", consumes = “application/octet-stream")请求的时候要指定参数application/octet-stream 编码统一了就不会乱码的, 设置响应的编码方式,resp.setCharacterEncoding("utf-8") 没用的,你要设置resp.setContentType("application/vnd.ms-excel;charset=utf-8"); 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(); } 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"); } 关于分层的疑惑 Struts中表单验证未通过,原表单的中文变成了乱码。。。。 重复刷新页面 tomcat 会自动关闭 小弟要做jsp了,请大家推荐本好书! 用spring做的简单的分页显示出现一个奇怪的问题 openfire3.6.4如何集成现有用户?? 求救:关于jsp的问题 一个关于jsp和web-inf的问题 关于数据库连接池的一个问题,请大家帮忙 jsp页面获取a标签内的值 freemarker中如何获取session中的id、创建时间等等 怎么使用httpclient的MultipartEntityBuilder添加boolean布尔型的参数?
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 "导出信息失败";
}
}
文件名
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
或者@PostMapping(value = "/export", consumes = “application/octet-stream")请求的时候要指定参数application/octet-stream
resp.setContentType("application/vnd.ms-excel;charset=utf-8");
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();
}
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");
}