2009年9月20日星期日

从Workbook删除Sheet

要从Workbook里删除Sheet,可以使用「HSSFWorkbook」类的方法「removeSheetAt」。
removeSheetAt
public void removeSheetAt(int index)
removes sheet at the given index 
 
Parameters:
  index - of the sheet (0-based)
指定要删除Sheet的序列号。
如果不知道序列号的话,也可以通过「HSSFWorkbook」类的方法「getSheetIndex」,设定Sheet名来取得序列号。
getSheetIndex
public int getSheetIndex(java.lang.String name)
Returns the index of the sheet by his name 
 
Parameters:
  name - the sheet name 
Returns:
  index of the sheet (0 based)
参数请指定要删除的Sheet名。

示例程序

生成一个Workbook,再在其中创建三个Sheet,最后再把名为「Sheet1」的Sheet删除。
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.createSheet();
 
    workbook.removeSheetAt(workbook.getSheetIndex("Sheet1"));
 
    System.out.println("Sheet0 = " + workbook.getSheetIndex("Sheet0"));
    System.out.println("Sheet2 = " + workbook.getSheetIndex("Sheet2"));
 
    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」这样的文件,打开来看看先。



















从图中可以看出,Sheet1被删除了,那么这时候序列号又是怎么样的呢?你还是可以通过「HSSFWorkbook」类的方法「getSheetIndex」,设定Sheet名来取得序列号看看。

Sheet0 = 0
Sheet2 = 1

我们发现中间的Sheet被删除后,后面的Sheet序列号会往前移一个,总之会维持从0开始的整数顺序。

没有评论:

发表评论