用POI读取excel时,如果sheet名为中文名则不能取得sheet,怎么解决?
try{
FileInputStream fis = new FileInputStream("foo.xls");
HSSFWorkbook wb = new HSSFWorkbook(fis);
HSSFSheet s = wb.getSheet("统计表");//不能取得sheet
System.out.println(new String(wb.getSheetName(0).getBytes("UTF-8"),"GBK"));//显示为乱码
fis.close();
}catch(Exception e)
{
System.out.println(e.getMessage());
}
问题点数:50、回复次数:5Top
1 楼eLove8(悠悠我心)回复于 2003-08-03 16:15:18 得分 0
没高手乎?Top
2 楼bruni(不如你)回复于 2003-08-03 17:20:40 得分 0
try to print all sheet names.
System.out.println(new String(wb.getSheetName(0).getBytes("iso-8859-1"),"GBK"));Top
3 楼newman0708(nch)回复于 2003-08-03 19:01:45 得分 50
在设置时用:set Sheet Name
wb.setSheetName(0, "Matrix");// set the name of the first sheet
解决中文问题
String str1="矩阵";
wb.setSheetName(0,str1,wb.ENCODING_UTF_16);// set the name of the first sheet
在读取时用如下:
sheet=wb.getSheet("公式测试");//get chinese sheetname
应该可以了。Top
4 楼eLove8(悠悠我心)回复于 2003-08-04 09:02:08 得分 0
to bruni:用你的方法显示的仍为乱码。
to:newman0708:wb.ENCODING_UTF_16 没有这个属性,这个属性应该是cell的属性。另外如果用以下代码:
HSSFWorkbook wb = new HSSFWorkbook();
FileOutputStream fos = new FileOutputStream("foo.xls");
HSSFSheet s = wb.createSheet();
String temp = "计量单位表"
String zhMeasureUnit = new String(temp.getBytes("UTF-8"),"UTF-8");
wb.setSheetName(0,temp);
则在excel中显示不正常。foo.xls中第一个sheet会显示为乱码,或者有错误。Top
5 楼eLove8(悠悠我心)回复于 2003-09-09 09:48:59 得分 0
// set the sheet name in Unicode
wb.setSheetName(0, "\u0422\u0435\u0441\u0442\u043E\u0432\u0430\u044F " +
"\u0421\u0442\u0440\u0430\u043D\u0438\u0447\u043A\u0430",
HSSFWorkbook.ENCODING_UTF_16 );
// in case of compressed Unicode
// wb.setSheetName(0, "HSSF Test", HSSFWorkbook.ENCODING_COMPRESSED_UNICODE );Top




