POI类库是JAVA平台下操作EXCEL的类库,功能很强大,相信大家都在工作已经使用得很熟练了,这里就不详细介绍了,简单的说, 一个Excel文件的层次:Excel文件->工作表->行->单元格 , 对应到POI中为:workbook->sheet->row->cell 。

今天要说的是在创建工作表时,用中文做文件名和工作表名会出现乱码的问题,先说以中文作为工作表名,大家创建工作表的代码一般如下:

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

poi创建excel工作表表名为中文相关推荐

  1. java替换Excel工作表表名不能用的字符的正则表达式

    在使用poi做Excel动态导出时,由于Excel工作表表名不能用下列字符 星号--* 斜杠--/ 冒号--: 反斜杠-- 方符号--[ 或 ] 问号--? 当存在这些字符时,createSheet( ...

  2. 使用Spire.XLS来创建Excel 工作簿

    概要 最近在研究 .NET 控件,使用这些控件能在程序中可以快速低成本实现开发功能.前面提到了如何使用Spire.XLS来制作报表,在这一篇中我 将讲到的是如何用用它来创建一个简单的Excel工作簿. ...

  3. 使用POI创建Excel无法打开

    如果使用的XSSFWorkbook创建的xls,打开的时候会有这样的提示: 这样 XSSFWorkbook 和HSSFWorkbook的区别. 使用POI创建一个新的xlsx,提示创建成功,但是打开x ...

  4. POI 创建Excel 2003 (一)

    poi操作excel2003和数据的写入实例 有兴趣的可以继续往下研究首先poi的下载地址 :http://apache.fayea.com/poi/release/bin/自己试了一个例子分享下 官 ...

  5. java POI创建Excel示例(xslx和xsl区别 )

    Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...

  6. 使用poi 创建Excel 保存到本地并下载

    项目中需要一个提供Excel数据展示下载功能,用于并不是list数据展示,无法通过for来实现.只能通过硬编码实现每一个cell.该Excel数据展示一共用到了四种样式,所以创建了4中style. 最 ...

  7. Excel 宏表函数 王佩丰第24课(1)--创建Excel工作表目录

    为含多个工作表的Excel文件创建目录 1 使用公式获得名称 =GET.WORKBOOK(1) 2 通过名称建立连接 在名称后添加 &"!a1" 最后公式为 =HYPERL ...

  8. VBA【遍历每个工作表并将工作表表名赋予B2单元格】

    方法一:  存在缺陷:选中所有单元格,批量生成公式时候,每次需要点击进入工作表点击单元格--进入编辑状态,然后公式才会生效 使用公式如下: =MID(CELL("filename" ...

  9. python创建excel图表_Python:使用图表创建Excel工作表

    它有点复杂(和/或邪恶),但类似的东西可以跨平台(包括在Linux下)使用JPype来包装SmartXLSExcel Java库. 此示例使用SmartXLS中的简单图表创建(在Charts/Char ...

最新文章

  1. 2019年7月份,阿里最新Java高频面试真题汇总,仅供参考
  2. Important table for launchpad Designer and configuration
  3. hive udf 分组取top1_Hive中分组取前N个值的实现-row_number()
  4. LESS:基础用法学习笔记
  5. php添加gd扩展,php安装gd扩展的方法
  6. 机电传动控制第二周作业
  7. 取样定理实验matlab,取样定理及基于MATLAB的实验教学
  8. 简单区分单射、满射与双射
  9. 虚拟机挂载优盘和识别优盘
  10. linux下设置MySQL密码
  11. Linux以太网卡软硬件架构
  12. 记录一次学习通接口分析
  13. 财务数据分析工具的选择:Excel还是大数据BI?
  14. 智慧农场、智慧农业管理系统、农作物、农技指导、四防棚、农耕、种植、农事执行、地块、圈地、加热温室、圈养、生产、采收记录、采收计划、采收入库、销售、农资溯源记录、农场日志、axure原型、产品原型、rp
  15. jq向下滑动刷新_jQuery手势控制,下拉刷新
  16. 【机器学习】主题建模+隐狄利克雷分配模型(LDA)+吉布斯采样
  17. cherrytree安装出现see the logfile for detaile错误的处理
  18. Neo4j 社区版4.x安装踩坑记录
  19. 详细教程: android项目集成PayPal 支付
  20. 关于一个大一学生的俄罗斯方块项目分享 C#开发,附源码(二)

热门文章

  1. java pdf中文乱码_java生成pdf以及解决中文中文乱码问题
  2. 重装系统后打不开我的世界服务器手机版,我的世界最新版为什么进不去
  3. Spring Boot 实现excel 批量导入数据(模板下载 ->数据导入->导入失败表格下载)
  4. mac电脑安装postman
  5. 哈理工-云计算[期末复习版]
  6. VB.NET中的事件与委托(警察抓小偷)
  7. 2022年大厂Android高级面试题分享,安卓Apk安装过程
  8. 招募:500名学生,36元上16节课,报满为止,限时抢购!(含4本实体书包邮)...
  9. python 去重去除重复数组
  10. 解决IDEA 找不到或无法加载主类 问题