2010年4月2日金曜日

第7回:POIでセルの結合を行う

今回は、POIを利用してセルの結合を行っていきたいと思います。
と同時に、スタイルの設定も行ってみようと思います。

前回と同様に、「MergedRegionTest」というクラスを作成し、下記のプログラムを
コピーして作成し、実行してみてください。

===============================================
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.util.CellRangeAddress;


public class MergedRegionTest extends ReadCellTest {
 public static void main(String[] args) throws IOException{
  //エクセルを作成
  HSSFWorkbook wb = new HSSFWorkbook();
  //名称を指定してシートを作成。
     HSSFSheet sheet = wb.createSheet("シート作成");
     //行を作成 (0から始まるので1は2行目を意味する。)
     HSSFRow row = sheet.createRow((short) 1);

     //セルを作成 (0から始まるので3は4列目を意味する。)
     //rowに対して行っているので、これは、2行目4列目(D列の2行目)のセルを意味する
     HSSFCell cell = row.createCell( 3);
     // セルに文字列をセットする。
     cell.setCellValue("セルの結合を行います。");

     // 範囲という概念を作成する。
     //下記の場合には、0番目から始まるので下記の意味になる。
     // 選択開始行:2
     // 選択終了行:3
     // 選択開始列:4
     // 選択終了列:7
     // 参考:http://poi.apache.org/apidocs/org/apache/poi/ss/util/CellRangeAddress.html
     CellRangeAddress cra = new CellRangeAddress(1,2,3,6);
     // セルの結合を上記の範囲で実行。
     sheet.addMergedRegion(cra);
     
     //セルの初期式設定を行うためにスタイルを作成する。
     //どんなスタイルが設定できるかは下記を参照。
     //http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCellStyle.html
     HSSFCellStyle style =wb.createCellStyle();
     // 縦方向を真ん中寄せにする。
     style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
     // 背景を埋める
     style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND );
     // 背景をLIGHT_GREENにする
     style.setFillForegroundColor(new HSSFColor.LIGHT_GREEN().getIndex());
     //最初に作成したセルに対してこのスタイルを適用
     cell.setCellStyle(style);
     
     //ファイルへの出力
     FileOutputStream fileOut = new FileOutputStream("C:\\temp\\POIで作成したエクセル.xls");
     wb.write(fileOut);
     fileOut.close();  
 }
}


===============================================

すると、

C:\temp

フォルダに「POIで作成したエクセル.xls」とうファイルができていると
思うので、それを開いてみてください、すると、2行目3行目のDEFG列が
「セルの結合を行います。」という文字が入って結合されていると思います。




そして、また、これを踏まえたうえで上記のプログラムを見てみて、
コメントを読みながらどの処理がどこに対応しているのかというのを
見てみてください。

また、下記の部分の数字を意味を理解した上で変更してみると、
より、理解が深まると思います。

CellRangeAddress cra = new CellRangeAddress(1,2,3,6);

また、下記を見ることで、他にもいろいろなスタイルをセットしてみて
動作の違いを見てみると、いろいろ理解が深まっていきます。
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCellStyle.html

こんな感じで、エクセルシートが作成することができます。

0 件のコメント:

コメントを投稿