シートを作成しワークブックに追加
ワークブックを作成したら、次はシートを作成しワークブックに追加します。
シートを作成するにはWorkbookインターフェースで定義されているcreateSheetメソッドを使います。
Sheet createSheet()
Sreate an Sheet for this Workbook, adds it to the sheets and returns the high level representation. Use this to create new sheets. Returns: Sheet representing the new sheet.
メソッドを実行すると新しくシートが作成されワークブックに追加されます。またメソッドの戻り値としてSheetインターフェースを実装したクラスのオブジェクトが返されます。
なおSheetインターフェースは「ss」ユーザーモデルに基づいたもので、シートを作成するためのHSSFSheetクラスやXSSFSheetクラスに共通するスーパーインターフェースです。
使い方としては下記のようになります。
Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet();
このメソッドの場合にはシート名を指定していませんので、シートを作成するとExcelの規則に基づいて自動的にシート名が決まります。
より詳細なシートの作成方法については「シートの新規作成」を参照して下さい。
名前をつけてシートを作成
シート名を指定してシートを新規作成することができます。先ほどと名前が同じですが引数が異なるcreateSheetメソッドを使用します。
Sheet createSheet(java.lang.String sheetname)
Create an Sheet for this Workbook, adds it to the sheets and returns the high level representation. Use this to create new sheets. Parameters: sheetname - sheetname to set for the sheet. Returns: Sheet representing the new sheet. Throws: java.lang.IllegalArgumentException - if the name is greater than 31 chars or contains /\?*[]
引数にはシート名を表す文字列を指定して下さい。
使い方としては下記のようになります。
Workbook wb = new HSSFWorkbook(); Sheet sheet = wb.createSheet("new sheet");
シート名として日本語も指定してみましたが、問題なく使用できるようです。
サンプルプログラム
実際に試してみましょう。
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.Sheet; import java.io.*; public class Sample3_1{ public static void main(String[] args){ Workbook wb = new HSSFWorkbook(); Sheet sheet1 = wb.createSheet(); Sheet sheet2 = wb.createSheet(); Sheet sheet3 = wb.createSheet("new sheet"); Sheet sheet4 = wb.createSheet("表計算用"); FileOutputStream out = null; try{ out = new FileOutputStream("sample3_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()); } } } }
コンパイルを行い実行すると「sample3_1.xls」というファイルが作成されます。作成されたファイルをExcelで開いてみます。
ワークブックの中に4つのシートが作成されていることが確認できます。最初の二つのシートはシート名を指定していないもの。残りの二つはシート名を指定して作成したものです。日本語のシート名も文字化けなどせずに設定できていることが分かります。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。