__sozai__/0011738.png

シートの新規作成

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_01.java )

 

ワークブックにシートを新規作成して追加するには、XSSFWorkbookクラスの

createSheetメソッドを使用します。


__sozai__/0011780.png記述

 XSSFWorkbook wb = new Workbook( );

 XSSFSheet sheet = wb.createSheet( );



なお呼び出し時に引数としてシート名を設定することができます。


__sozai__/0011780.png記述

 XSSFSheet sheet = wb.createSheet( "sheet01" );



シート名は全角文字でも問題なく使用することができます。

 

__sozai__/0011780.png記述

 XSSFSheet sheet = wb.createSheet( "シート01" );



__sozai__/0011738.png作成済みのシートを読み込み

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_02.java )

→ サンプルファイル( sampleRead.xlsx )

 

作成済みのシートを読み込むには、XSSFWorkbookクラスのgetSheetメソッド

を使用します。


__sozai__/0011780.png記述

  InputStream in = new FileInputStream( "sampleRead.xlsx" );

  XSSFWorkbook wb = ( XSSFWorkbook ) WorkbookFactory.create( in );

  XSSFSheet sheet = wb.getSheet( "sheet01" );



なお引数には読み込みたいシート名を渡します。またシート名ではなく、インデ

ックスを引数とする方法もあります。


__sozai__/0011780.png記述

 XSSFSheet sheet = wb.getSheetAt( 1 );

 

getSheetAtメソッドならば、引数にインデックスを渡すことで○番目のシートと

いった形で作成済みのシートを読み込むことができます。


なお、インデックスはワークブック内シートの並びに沿って0から順に割り当て

られます。ワークブックをExcelで開いたときにウィンドウ下部に表示されるタ

ブの中で一番左のタブのシートの0番として以降右方向に1ずつインデックスが

増えていきます。



__sozai__/0011738.png作成済みのシートの複製

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_03.java )

→ サンプルファイル( sampleRead.xlsx )

 

すでにワークブックに存在するシートを複製し、新たなシートとして追加す

はWorkbookクラスのcloneSheetメソッドを使用します。


__sozai__/0011780.png記述

  InputStream in = new FileInputStream( "sampleRead.xlsx" );

  XSSFWorkbook wb = ( XSSFWorkbook ) WorkbookFactory.create( in );

  XSSFSheet sheet1 = wb.getSheet( "sheet01" );

  XSSFSheet sheet2 = wb.cloneSheet( 0 );


引数には複製するシートのインデックスを渡します。複製したシートは最後尾に

追加されます。



__sozai__/0011738.pngシート名の設定

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_04.java )

→ サンプルファイル( sampleRead.xlsx )

 

シート名を設定するときは、XSSFWorkbookクラスのsetSheetNameメソッドを

使用します。


__sozai__/0011780.png記述

  InputStream in = new FileInputStream( "sampleRead.xlsx" );

  XSSFWorkbook wb = ( XSSFWorkbook ) WorkbookFactory.create( in );

  wb.setSheetName( 0, "Sample" );


引数は変更するシートのインデックスと変更後のシート名の2つです。なお変更後

のシート名は全角文字も使用可能です。


__sozai__/0011780.png記述

 wb.setSheetName( 1, "サンプル" );


ただし全半角問わず31文字までしか入力できず、「 / ¥ ? * [ ] 」などの記号も

使用できません。



__sozai__/0011738.pngシートの削除

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_05.java )

→ サンプルファイル( sampleRead.xlsx )

 

シートを削除するには、XSSFWorkbookクラスのremoveSheetAtメソッドを使用

します。


__sozai__/0011780.png記述

  InputStream in = new FileInputStream( "sampleRead.xlsx" );

  XSSFWorkbook wb = ( XSSFWorkbook ) WorkbookFactory.create( in );

  wb.removeSheetAt( 0 );


引数には削除したいシートのインデックスを設定します。上記のソースではインデ

クス0番のシートを削除しています。



__sozai__/0011738.pngシートの並び順の変更

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_06.java )

→ サンプルファイル( sampleRead.xlsx )

 

ワークブック内でのシートの並び順を変更するには、WorkbookクラスのsetSh

eetOrderメソッドを使用します。


__sozai__/0011780.png記述

  InputStream in = new FileInputStream( "sampleRead.xlsx" );

  XSSFWorkbook wb = ( XSSFWorkbook ) WorkbookFactory.create( in );

  wb.setSheetOrder("sheet03", 0);


上記はワークブックと3つのシートを新規作成した後、「sheet03」をインデッ

クス0番に挿入するサンプルです。setSheetOrderの引数は、並び順を変更した

いシート名と挿入したい場所の2つです。なお、○番目のシートを○番目に変更

たいというときは


__sozai__/0011780.png記述

 wb.setSheetOrder( getSheetName( 2 ), 0 )

 

というように、getSheetNameメソッドを使用します。このメソッドは指定し

インデックスのシート名を返すので、これで変更したい順番のシート名を取得

するのです。



__sozai__/0011738.png指定列の幅設定

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_07.java )

 

指定列の幅を設定するには、XSSFSheetクラスのsetColumnWidthメソッドを使

します。

 

__sozai__/0011780.png記述

  XSSFWorkbook wb = new Workbook( );

  XSSFSheet sheet = wb.createSheet( "sheet01" );

  sheet.setColumnWidth( 0, 2048 );


引数には設定する列番号と幅を渡します。列番号は再左列が0で右方向に1ずつ増

ていきます。幅の単位は32分の1ピクセルとなっています。半角1文字に必要

なピクセル数は13で以降1文字につき8ピクセルずつ増えていきます。

 

文字数ピクセル数設定値
13 416
21 672
29 928
37 1184

文字式で表現すると以下のようになります。

 x = 32 * ( 8n + 5 ) xが設定値でnが表示したい文字数です。

 

 

他サイトでは単位が256分の1文字幅という情報もありますが、実際に

 

__sozai__/0011780.png記述

 sheet.setColumnWidth( 0, 1024 );

 

というサンプルを実行してみると、結果は以下のようになってしまいます。なお結

を分かりやすくするためにA1セルには1234を設定しています。


POI_SetWidthSample.png

 

1024つまり4文字分を設定したにもかかわらず、実際には3.38文字分と設

定されています。その結果、A1セルに設定された1234が表示しきれずに##

#と省略されてしまいました。

 

 

__sozai__/0011738.png表示拡大率の変更

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_08.java )

 

表示拡大率を変更するには、XSSFSheetクラスのsetZoomメソッドを使用しま

す。


__sozai__/0011780.png記述

  XSSFWorkbook wb = new Workbook( );

  XSSFSheet sheet = wb.createSheet( "sheet01" );

  sheet.setZoom( 2, 1 );


引数は2つで、拡大倍率の分子と分母になります。上記のサンプルなら1分の2

ということで、200%となり、下記のサンプルなら3分の1ということで33

%となります。

 

__sozai__/0011780.png記述
  sheet.setZoom( 1, 3 );

 

__sozai__/0011738.png印刷範囲の設定

__sozai__/0012210.gif

 

→ サンプルソース( Sample_04_09.java )

 

印刷範囲を設定するときは、XSSFWorkbookクラスのsetPrintAreaメソッドを使

用します。


__sozai__/0011780.png記述

  XSSFWorkbook wb = new Workbook( );

  wb.setPrintArea( 0, 0, 5, 0, 20 );


引数は5つで左から順に、設定するシートのインデックス、開始列、終了列、開

行、終了行となっています。

 

__sozai__/0011780.png記述

 wb.setPrintArea( 0, "$A$1:$F$21" );

 

またこちらの書き方でも印刷範囲を設定できます。どちらも設定している範囲は

同じです。

__sozai__/0011738.png改ページの設定

__sozai__/0012210.gif

 

→ サンプルソース_改ページ設定( Sample_04_10a.java )

→ サンプルソース_改ページ削除( Sample_04_10b.java )

→ サンプルファイル( sampleRead.xlsx )

 

改ページの設定は、水平方向と垂直方向それぞれにメソッドが用意されていま

す。


水平方向に改ページを行う場合はXSSFSheetクラスのsetRowBreakメソッド

を、垂直方向に改ページを行う場合は同じくXSSFSheetクラスのsetColumn

Breakメソッドを使用します。


__sozai__/0011780.png記述

 XSSFWorkbook wb = new Workbook( );

 XSSFSheet sheet = wb.createSheet( "sheet01" );

 sheet.setRowBreak( 20 );

 sheet.setColumnBreak( 5 );


引数はsetRowBreakが行番号でsetColumnBreakが列番号となっています。

ちらも設定した行列とその次の行列の間に改ページが設定されるようにな

っています。

 

逆に改ページ設定を解除する場合は、同じXSSFSheetクラスのremoveRow

BreakメソッドとremoveColumnBreakを使用します。引数も同じでそれぞ

れ行番号と番号を指定します。


__sozai__/0011780.png記述

 InputStream in = new FileInputStream( "sampleRead.xlsx" );

 XSSFWorkbook wb = ( XSSFWorkbook ) WorkbookFactory.create( in );

 XSSFSheet sheet = wb.getSheet( "sheet01" );

 sheet.setRowBreak( 20 );

 sheet.setColumnBreak( 5 );




btn028_06.gif 手順アイコン.png btn029_05.gif