问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

POI导出excel表时文件名变成乱码怎么办

提问网友 发布时间:2022-04-20 11:29
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2023-05-03 02:43
POI类库是JAVA平台下操作EXCEL的类库,功能很强大。在使用POI导出excel表格时经常会出现文件名变成乱码的情况,POI导出excel
表时文件名变成乱码是怎么回事呢,如何解决?今天我们要说的就是在创建excel工作表时,用中文做文件名和工作表名会出现乱码的问题,以便大家能解决
POI导出excel表时文件名变成乱码的问题。先说以中文作为工作表名,大家创建工作表的代码一般如下:

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", "inline;filename=中文名.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=0;i<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 = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
return sb.toString();
}

然后在导出时,对文件名引用该函数,代码如下:

this.getResponse().setHeader("Content-Disposition", "inline;filename=" +toUtf8String("中文文件名.xls"));

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

关于jsp用js导出Excel的问题 导出excel表格和word表格中文出现乱码 在系统导出EXCEL数据出现乱码 asp导出excel出现中文乱码 网页数据点击导出到excel文件没问题,导出完以后网... 在一些网站导出EXCEL时总导出些乱码文件,打不开,怎... java 导出 Excel 中文乱码 phpexcel导出excel文件乱码,如何解决??? 同页面查询不同数据导出Excel,有的EXCEL中文乱码 系统导出excel表格中文乱码怎么办 jsp 导出html excel 中文乱码怎么解决 使用JS的方法将表格导出EXCEL时发生了800A025E的错... 导出excel 乱码 怎么解决 怎么使用数据库筛选js文件的数据并导出到excel? 诡异的乱码问题 jsp导出excel乱码 用kettle把JS转换成Excel表格中文乱码的问题 使用JS的方法将表格导出EXCEL时发生了“800A025E”的... 如何删除顽固文件之流氓软件 如何删除顽固软件 android手机cisco anyconnect怎么使用 小米3怎么才能安装使用cisco anyconnect,求关注 cisco anyconnect怎么使用 小米的系统是不是不支持Cisco Anyconnect iphone手机cisco Anyconnect 所尝试的链接已超时 ciscoanyconnect会对本地电脑安全隐患吗 ciscoanyconnect服务禁止了在哪里看 Cisco AnyConnect Client无法安装 mac苹果电脑开机自动跳出“思科anyconnect安全移动... IPhone下载了Cisco Anyconnect之后,要怎么才能连... Cisco AnyConnect无法连接 any.omicronplus怎么注册 cisco anyconnect连接用的哪个端口? 今天买的橙子皮摸起来像糖一样,粘乎乎的,是怎么回事 Cisco AnyConnect 无法连接到Internet怎么办? 刚买的新鲜桔子皮有点粘手是怎么回事? cisco anyconnect登录问题! Cisco AnyConnect为什么连接报错? 有的水果或蔬菜黏黏的怎么回事 Cisco AnyConnect Client 安装后点击连接出错
Top