2009年10月19日星期一

POI合并单元格

现在再看看如果将指定的单元格进行合并操作。用POI进行合并操作,使用「HSSFSheet」类的「addMergedRegion」方法。


addMergedRegion
public int addMergedRegion(Region region)
adds a merged region of cells (hence those cells form one) 
 
Parameters:
  region - (rowfrom/colfrom-rowto/colto) to merge 
Returns:
  index of this region

合并范围必须使用「Region」类来指定,关于「Region」类的介绍如下。


「Region」类关系图


  • java.lang.Object
  • org.apache.poi.hssf.util.Region
  • public class Region extends java.lang.Object implements java.lang.Comparable

「Region」类的构造方法


Region
public Region(int rowFrom, short colFrom, int rowTo, short colTo)
--

指定范围时,从左上的单元格到右下的单元格指定,比方像下面这样。


Region(1, (short)1, 2, (short)3)

示例程序


动手做做看,还是使用原来的Excel文件。




把上图选中的单元格进行合并操作时,看下面的程序。


import java.io.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.util.Region;
 
public class POISample{
  public static void main(String[] args){
    FileInputStream in = null;
    HSSFWorkbook workbook = null;
 
    try{
      in = new FileInputStream("sample.xls");
      POIFSFileSystem fs = new POIFSFileSystem(in);
      workbook = new HSSFWorkbook(fs);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try{
        in.close();
      }catch (IOException e){
        System.out.println(e.toString());
      }
    }
 
    HSSFSheet sheet = workbook.getSheetAt(0);
 
    sheet.addMergedRegion(new Region(1, (short)1, 2, (short)3));
 
    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample2.xls");
      workbook.write(out);
    }catch(IOException e){
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      }catch(IOException e){
        System.out.println(e.toString());
      }
    }
  }
}

把刚作成的新的Excel文件打开看看吧


没有评论:

发表评论