java打开excel乱码

java打开excel乱码,第1张

HSSFWorkbook workbook = new HSSFWorkbook()//创建EXCEL文件

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为打开程序,勾选始终使用这种程序打开文件就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8028990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存