HSSFSheet sheet= workbook.createSheet(sheetName) //创建工作表
这样在用英文名作为工作表名是没问题的,但如果sheetName是中文字符,就会出现乱码,解决的方法如下代码:
HSSFSheet sheet= workbook.createSheet()
workbook.setSheetName(0, sheetName,(short)1)//这里(short)1是解决中文乱码的关键;而第一个参数是工作表的索引号。
没有太多原因,POI就是如此;再说导出的EXCEL文件名的中文乱码问题, 导出时代码如下:
.....
this.getResponse().reset()
this.getResponse().setContentType("application/msexcel")
this.getResponse().setHeader("Content-Disposition", "inlinefilename=中文名.xls")
try {
em.getExcelMutliIO(this.getResponse().getOutputStream())
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
这个时候导出去时,文件名会为乱码,解决的办法如下,在你的代码增加下列函数:
public static String toUtf8String (String s){
StringBuffer sb = new StringBuffer()
for (int i=0i<s.length()i++){
char c = s.charAt(i)
if (c >= 0 &&c <= 255){sb.append(c)}
else{
byte[] b
try { b = Character.toString(c).getBytes("utf-8")}
catch (Exception ex) {
System.out.println(ex)
b = new byte[0]
}
for (int j = 0j <b.lengthj++) {
int k = b[j]
if (k <0) k += 256
sb.append("%" + Integer.toHexString(k).toUpperCase())
}
}
}
return sb.toString()
}
然后在导出时,对文件名引用该函数,代码如下:
this.getResponse().setHeader("Content-Disposition", "inlinefilename=" +toUtf8String("中文文件名.xls"))
1、遇到这种情况,先关闭EXCEL表格,光标移到表格上,点击鼠标右键,选择打开方式
2、在打开方式中选择记事本,如果没有,可以在打开方式,选择其他默认程序中找到该应用,点击确定
3、在打开的文档中,找到顶端左侧的文件,点击一下
4、在文档下拉列表中选择另存为,点击一下另存为
5、在另存为的d窗中,右下角找到编码按钮
6、点击编码右侧的按钮,在下拉列表中选择ANSI,点击保存
7、再次用OFFICE EXCEL打开已另存为的文档,就可以正常显示文字内容了。
1、把文件复制到C:/windows/temp目录里,然后把temp目录里需要的文件用winrar压缩,然后到目标电脑解压。
2、可能你默认打开方式改变了,鼠标右键选择文件,选择打开方式-选择程序-勾选EXCEL为打开程序,勾选始终使用这种程序打开文件就可以了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)