倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

PoiBuilder で Quick Guide (2) : シートを作成

今回はシートの作成 (New Sheet) です(一覧)。 ファイルへの書き出しを行うコードは今後書きません。

Java コード

    Workbook wb = new HSSFWorkbook();  // or new XSSFWorkbook();
    Sheet sheet1 = wb.createSheet("new sheet");
    Sheet sheet2 = wb.createSheet("second sheet");

    // Note that sheet name is Excel must not exceed 31 characters
    // and must not contain any of the any of the following characters:
    // 0x0000
    // 0x0003
    // colon (:)
    // backslash (\)
    // asterisk (*)
    // question mark (?)
    // forward slash (/)
    // opening square bracket ([)
    // closing square bracket (])

    // You can use org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(String nameProposal)}
    // for a safe way to create valid names, this utility replaces invalid characters with a space (' ')
    String safeName = WorkbookUtil.createSafeSheetName("[O'Brien's sales*?]"); // returns " O'Brien's sales   "
    Sheet sheet3 = wb.createSheet(safeName);

いくつかの文字はシート名として使えないので、3つ目のシート作成では WorkbookUtil#createSafeSheetName() メソッドを使用しています。

PoiBuilder による構築


workbook ノードの子ノードとして複数の sheet ノードを書けば、その分だけシートが作成されます:

@GrabResolver('http://www5.ocn.ne.jp/~coast/repo/')
@Grab('org.waman.tools:poi-builder:0.0.3')

import org.waman.tools.poi.PoiBuilder

def workbook = new PoiBuilder().workbook{
    sheet('new sheet')
    sheet('second sheet')
    sheet(safeSheetName("O'Brien's sales*?"))
}

Workbook#createSheet() メソッド同様、引数なしでシートを作成することもできます(sheet())。 また、Java コードの3つ目のシート作成で呼び出したメソッド WorkbookUtil#createSafeSheetName() は、PoiBuilder に対して safeSheetName() メソッドを呼び出すことで実行できます。 もちろん処理は同じです。

作成されるスプレッドシート




追記


poi-builder 0.0.6 から safeSheetName ノードは削除します。 WorkbookUtil#createSafeSheetName() メソッドが使えなくなるというより sheet ノードに文字列を渡したときに、常にこのメソッドが呼ばれるようにします。
現場で使えるJavaライブラリ

現場で使えるJavaライブラリ


プログラミングGROOVY

プログラミングGROOVY