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"))

excel表格导出是乱码是文本格式不正确,解决办法如下:

1、在excel文件上点击鼠标右键,选择打开方式。

2、在打开方式中选择记事本,如下图,如果没有,可以在打开方式,选择其他默认程序中找到该应用,点击确定。

3、在打开的文档中,找到顶端左侧的文件,点击一下。

4、在文档下拉列表中选择另存为,点击一下另存为。

5、在另存为的d窗中,右下角找到编码按钮。

6、点击编码右侧的按钮,在下拉列表中选择ANSI,点击保存。

7、再次用OFFICE EXCEL打开已另存为的文档,就可以正常显示文字内容了。

HSSFCell csCell = row.createCell((short) 1)

 csCell.setEncoding(HSSFCell.ENCODING_UTF_16)// 设置cell编码解决中文高位字节截断

 csCell.setCellValue("中文测试")// 设置中文


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存