2009年9月20日星期日

改变Sheet名称

要改变现有Sheet或刚新建Sheet的名称,可以用「HSSFWorkbook」类的「setSheetName」方法。
setSheetName
public void setSheetName(int sheet, java.lang.String name)
set the sheet name. Will throw IllegalArgumentException if the name 
is greater than 31 chars or contains /\?*[] 
 
Parameters:
  sheet - number (0 based)
指定要改变的Sheet的序列号。设置名称时,最大长度是31个文字,还有「/\?*[]」这样的字符不能使用。
指定汉字Sheet名时,用第二个方法。
setSheetName
public void setSheetName(int sheet, java.lang.String name, short encoding)
--
「encoding」的参数在「HSSFWorkbook」类里被定义成下面两种。
static byte ENCODING_COMPRESSED_UNICODE
static byte ENCODING_UTF_16
设定汉字时(包括日语),「encoding」的参数应该传入「HSSFWorkbook.ENCODING_UTF_16」。

示例程序

亲自动手做一做吧。
import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
public class POISample{
  public static void main(String[] args){
    HSSFWorkbook workbook = new HSSFWorkbook();
 
    workbook.createSheet();
    workbook.createSheet();
 
    workbook.setSheetName(0, "test");
    workbook.setSheetName(1, "テスト", HSSFWorkbook.ENCODING_UTF_16);
 
    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample.xls");
      workbook.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}
程序执行后,打开「sample1.xls」文件来看看。


可以看出,汉字Sheet名被正常设好了。

使用「createSheet」方法创建新的Sheet时,不能进行encoding设定。所以要设置汉字Sheet名时,只能先新建一个Sheet,然后再对该Sheet进行改名操作。

没有评论:

发表评论