`
tangwenchao86
  • 浏览: 379411 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

POI类库之工作表中文名乱码问题

 
阅读更多
      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"));

转载自:http://www.hpgy.net/blog/12345679/281_1.html







分享到:
评论

相关推荐

    POI生成Excel POI操作Excel POI读取Excel POI类库

    2. **创建Sheet对象**:Sheet代表Excel工作表,每个Workbook可以有多个Sheet。 3. **创建Row对象**:Row代表Excel的一行,每个Sheet可以有多行。 4. **创建Cell对象**:Cell是Excel中的最小单元,存放具体的数据。...

    poi 操作 excel 2007 demo 及poi类库

    下面将详细介绍如何使用Apache POI操作Excel 2007以及相关的类库。 首先,"poi-bin-3.9-20121203.zip"是Apache POI的一个版本包,包含了运行时所需的二进制文件。解压后,你可以将其中的jar文件添加到你的Java项目...

    poi实现EXCEL保护工作表实例代码.zip

    本实例代码"poi实现EXCEL保护工作表实例代码.zip"提供了如何使用Apache POI来保护Excel工作表的具体示例,确保未经授权的用户无法进行编辑操作。 Apache POI库提供了HSSF和XSSF两个主要的API,分别用于处理老版本的...

    poi 导出多表头

    2. **创建工作表**:接着,使用 `XSSFWorkbook` 的 `createSheet()` 方法创建一个新的工作表,例如 ` XSSFSheet sheet = workbook.createSheet("Sheet1"); `。 3. **创建行与单元格**:多表头的构建需要创建多个...

    java操作excel工作表类库和chm格式的帮助文档

    Java操作Excel工作表的类库通常指的是Apache POI和JExcelAPI等开源库,它们允许开发者在Java程序中创建、读取和修改Microsoft Excel文件。这些库为处理大量数据提供了便利,尤其在数据分析、报告生成或者自动化办公...

    POI中文开发文档

    Apache POI 是一个开源项目,隶属于 Apache Software Foundation,它的主要目标是处理 OLE2 兼容的对象,尤其是针对 Microsoft Office 文件格式。其中,POI 提供了 Java API 来读写和操纵 Windows 文档,尤其是对 ...

    poi颜色常量对应表

    color org.apache.poi.hssf.util.HSSFColor$GREY_80_PERCENT@1aadbf7 color org.apache.poi.hssf.util.HSSFColor$INDIGO@4f4458 color org.apache.poi.hssf.util.HSSFColor$PLUM@100c56 color org.apache.poi....

    poi多级表头导出模板

    poi多级表头导出模板

    poi-5.1.0.jar中文文档.zip

    poi-***.jar中文文档.zip,java,poi-***.jar,org.apache.poi,poi,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-***...

    poi生成ecel表格加上写的一个生成类库

    例如,`workbook.createSheet("Sheet1")` 创建名为 "Sheet1" 的工作表。 3. **添加行和单元格**:在工作表中,你可以通过调用 `createRow` 和 `createCell` 方法来添加行和单元格。比如 `row.createCell(index)` ...

    天地图POI数据分类编码表

    为了便于管理和检索这些POI数据,天地图制定了详细的POI数据分类编码表。 POI数据分类编码表是一种标准化的数据组织方式,它将各种类型的POI按照一定的逻辑进行分类,并为每个类别分配一个唯一的编码。这样的编码...

    poi-5.0.0.jar中文文档.zip

    poi-***.jar中文文档.zip,java,poi-***.jar,org.apache.poi,poi,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-***...

    POI中文帮助文档_POI_

    这个“POI中文帮助文档”提供了全面的指南,帮助开发者理解和使用POI API来处理这些文件类型。 1. **POI基本概念**: - **HSSF**:用于处理Excel的低级别API,主要支持.xls格式的老版Excel文件。 - **XSSF**:...

    poi3.7支持中文编码

    在3.7版本中,POI对中文编码的优化确保了在读取和写入含中文的单元格时,不会出现乱码问题。 对于中文乱码的问题,通常是因为文件编码不匹配导致的。在Java中,使用InputStreamReader和OutputStreamWriter与特定的...

    poi-5.2.1.jar中文文档.zip

    poi-***.jar中文文档.zip,java,poi-***.jar,org.apache.poi,poi,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-***...

    最新高德地图 poi类表对照表

    poi类表对照表是高德地图提供的一份详细分类表,其中包含了各种POI类型的编码和对应的中文描述。这份表格通常会包含以下几列: 1. **编码**:每个POI类型都有一个唯一的数字或字母编码,开发者可以通过这个编码来...

    POI中文帮助文档.pdf

    根据提供的文件信息,本文将对“POI中文帮助文档”中的关键知识点进行详细的解析与总结。Apache POI项目提供了一套强大的API,用于处理Microsoft Office格式的文件,特别是Excel(.xls和.xlsx)和Word(.doc和.docx...

    poi-4.1.1.jar中文文档.zip

    poi-***.jar中文文档.zip,java,poi-***.jar,org.apache.poi,poi,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-***...

    POI 中文学习文档(.doc)

    这个例子会创建一个名为"output.xls"的Excel文件,其中包含一个工作表"Sheet1",第一行第一列的单元格内填充文本"Hello, World!"。这就是POI的基本用法,但其功能远不止于此,还可以实现更复杂的操作,如合并单元格...

Global site tag (gtag.js) - Google Analytics