アクティブなシートを設定

広告

ワークブックに複数のシートが含まれている場合に、特定のシートをアクティブに設定する方法を確認します。

特定のシートをアクティブにするにはWorkbookインターフェースで定義されているsetActiveSheetメソッドを使います。

Convenience method to set the active sheet. The active sheet is is the sheet which is 
currently displayed when the workbook is viewed in Excel. 'Selected' sheet(s) is a 
distinct concept.

Parameters:
  sheetIndex - index of the active sheet (0-based)

引数にアクティブにするシートのインデックスを指定します。

アクティブなシートとはワークブックを開いた時に表示されるシートのことであり、操作の対象となります。ただしアクティブにしても選択状態にはなりませんので注意して下さい。利用者がシートをマウスなどを使って選択した場合には、そのシートはアクティブで且つ選択された状態になります。

シートをアクティブにすることと選択することは別です。シートを選択する方法については「シートを選択」を参照して下さい。

使い方としては下記のようになります。

Workbook wb = new HSSFWorkbook();
Sheet sheet0 = wb.createSheet();
Sheet sheet1 = wb.createSheet();
Sheet sheet2 = wb.createSheet();

wb.setActiveSheet(1);

上記の場合、インデックスが1のシートをアクティブに設定します。

サンプルプログラム

実際に試してみましょう。

Sample8_1.java

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample8_1{
  public static void main(String[] args){
    Workbook wb = new HSSFWorkbook();

    Sheet sheet0 = wb.createSheet();
    Sheet sheet1 = wb.createSheet();
    Sheet sheet2 = wb.createSheet();

    wb.setActiveSheet(1);

    FileOutputStream out = null;
    try{
      out = new FileOutputStream("sample8_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());
      }
    }
  }
}

プログラムを実行すると3つのシートを作成し、その中のインデックスが1のシートをアクティブに設定します。では作成されたExcelファイルを開いてみます。

アクティブなシートを設定

インデックス1のシートがアクティブになっていることが確認できます。またデフォルトで選択されるシートはインデックスが0のシートのため、インデックス1のシートをアクティブにしても現在選択されているシートはインデックスが0のシートのままであることも確認できます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)