1. 遇到这个问题是2天前,当时在google搜搜的时候我给的关键词: java导出excel乱码
在出现的N多页面中选出了几个页面进行了研究,主要的解决方案如下:
a 在jsp页面头,加入中文编码控制
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
b 在action层的respose流中
respose.setContentType("application/vnd.ms-excel;charset=utf-8");// // 指定文件的保存类型。
respose.setCharacterEncoding("utf-8");
很多页面都是给出的这个建议,我也反复测试这个代码,但我的excel乱码仍然解决不了。
2. 当时由于有其他任务,就暂时丢下这个棘手的问题,做需求去了。到了第二天,继续弄这个问题。
这次我觉得可能是工具POI出现的问题.这次搜索我稍微改变了关键词:poi 乱码, 这次搜的结果比较真实的接近问题。
解决办法如下:
a 工作表名字乱码 解决办法:workBook.setSheetName(sheetCount, sheetName , HSSFWorkbook.ENCODING_UTF_16);
b 单元格乱码 解决办法:在写单元格的值的之前,workSheet.getRow(rowIdx).getCell((short)2).setEncoding(HSSFCell.ENCODING_UTF_16);
c 打印设置乱码 好像没有办法,所以最好在模板中设置好。
好了根据这个方案,我以为惊喜会出现,耽搁了几个小时,还是出现令人惋惜的结果。
3. 到了周末,清早看完csdn新闻,想用jxl重新写导excel的方法,好了我的先删除poi工具包,突然我发现了问题,我的jar包里面有poi2.5,poi3.5的多个版本包,仔细查看了下逻辑代码,所用的class基本都是3.5版本的,好了卸载3.5的再试试,问题马上解决了。哎终于可以好好享受下周末了。
回顾上述解决方案的过程,发现自己明显的2个毛病: 一是搜索时描述问题不准确,二是解决问题的步骤有些紊乱。
就一个jar包版本问题纠缠了这么久。