セルの結合
セルを結合する方法を確認します。セルを結合するにはSheetインターフェースで用意されているaddMergedRegionメソッドを使います。
int addMergedRegion(CellRangeAddress 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
引数には結合するセルの範囲を表すCellRangeAddressクラスのオブジェクトを指定します。それではCellRangeAddressクラスについて確認しましょう。
--*--*--
CellRangeAddressクラスのクラス定義は次のようになっています。
public class CellRangeAddress extends CellRangeAddressBase java.lang.Object L org.apache.poi.ss.util.CellRangeAddressBase L org.apache.poi.ss.util.CellRangeAddress
コンストラクタは2つ定義されていますが、次のコンストラクタを使用します。
public CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol)
--
4つの引数で結合したいセルの範囲を指定します。1つ目には先頭の行番号、2つ目には最後の行番号、3つ目には先頭の列番号、4つ目には最後の列番号を指定して下さい。
-- --
CellRangeAddressクラスのオブジェクトを作成したらセルを結合します。実際の使い方は次のようになります。
InputStream in = new FileInputStream("filename.xls"); Workbook wb = WorkbookFactory.create(in); Sheet sheet = wb.getSheetAt(0); sheet.addMergedRegion(new CellRangeAddress(1, 4, 1, 6));
この場合、行番号が1から4、列番号が1から6までの長方形の領域を結合します。
なお結合する範囲内の複数のセルに値が設定されていた場合には、最も左上端にあるセルの値が結合されたセルに設定されます。
サンプルプログラム
実際に試してみましょう。
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import java.io.*; public class Sample11_1{ public static void main(String[] args){ FileInputStream in = null; Workbook wb = null; try{ in = new FileInputStream("sample.xls"); wb = WorkbookFactory.create(in); }catch(IOException e){ System.out.println(e.toString()); }catch(InvalidFormatException e){ System.out.println(e.toString()); }finally{ try{ in.close(); }catch (IOException e){ System.out.println(e.toString()); } } Sheet sheet0 = wb.getSheetAt(0); sheet0.addMergedRegion(new CellRangeAddress(1, 4, 2, 3)); FileOutputStream out = null; try{ out = new FileOutputStream("sample11_1.xls"); wb.write(out); }catch(IOException e){ System.out.println(e.toString()); }finally{ try { out.close(); }catch(IOException e){ System.out.println(e.toString()); } } } }
事前に下記のようなExcelファイルを用意してあります。
プログラムを実行すると、1行目から4行目までと、2列目から3列目までの範囲を結合します。では作成されたExcelファイルを開いてみます。
指定した範囲のセルが結合されます。結合前の範囲の一番左上端にあったのがC2セルのため、結合されたセルにはC2に設定されていた値が設定されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。