倭マン's BLOG

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

PoiBuilder で Quick Guide (17) : スプリット・ペインとフリーズ・ペイン

今回はスプリット・ペインとフリーズ・ペイン (Create split and freeze panes) です(一覧)。

Java コード


スプリット・ペインとフリーズ・ペインの作成方法。 それぞれのペインが何に使うかはドキュメントを参照してください。

    Workbook wb = new HSSFWorkbook();
    Sheet sheet1 = wb.createSheet("new sheet");
    Sheet sheet2 = wb.createSheet("second sheet");
    Sheet sheet3 = wb.createSheet("third sheet");
    Sheet sheet4 = wb.createSheet("fourth sheet");

    // Freeze just one row
    sheet1.createFreezePane( 0, 1, 0, 1 );
    // Freeze just one column
    sheet2.createFreezePane( 1, 0, 1, 0 );
    // Freeze the columns and rows (forget about scrolling position of the lower right quadrant).
    sheet3.createFreezePane( 2, 2 );
    // Create a split with the lower left side being the active quadrant
    sheet4.createSplitPane( 2000, 2000, 0, 0, Sheet.PANE_LOWER_LEFT );

各ペインの作成方法は、Sheet オブジェクトに対して createXxxxPane() メソッドを適当な引数で呼び出すだけです。

PoiBuilder による構築


PoiBuilder では、スプリット・ペインとフリーズペインはそれぞれ splitPane ノードfreezePane ノードによって作成できます。 引数は対応する createXxxxPane() メソッドと同じものです:

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

import org.waman.tools.poi.PoiBuilder

def workbook = new PoiBuilder().workbook{
    sheet('new sheet'){
        freezePane(0, 1, 0, 1)
    }
    sheet('second sheet'){
        freezePane(1, 0, 1, 0)
    }
    sheet('third sheet'){
        freezePane(2, 2)
    }
    sheet('fourth sheet'){
        splitPane(2000, 2000, 0, 0, PANE_LOWER_LEFT)
    }
}

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





4つのシートが生成されているので、それぞれどのようなペインが作成されるか確かめてみてください。

追記


poi-builder 0.0.6 から、freezePane ノードでフリーズペインを作る際に row, column 属性によって分割位置を指定できるようにしました:

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

import org.waman.tools.poi.SpreadsheetBuilder

def workbook = new SpreadsheetBuilder().workbook{
    sheet('new sheet'){
        // 第1行をフリーズ
        freezePane(row:1)
    }
    sheet('second sheet'){
        // 第1列をフリーズ
        freezePane(column:1)
    }
    sheet('third sheet'){
        freezePane(row:2, column:2)
    }
}

ただし、行や列の(分割した部分の)始まり番号を指定できるようにはしてません。 行や列の始まり番号は Sheet#createFreezePane() メソッドの第3, 4引数で指定できるのですが、row, column 属性を使った場合は、これらの値は分割した行列の番号がそのまま使われます。

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

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


プログラミングGROOVY

プログラミングGROOVY