作成済みのシートを取得

広告

ワークブックに作成済みのシートを取得するには、Workbookインターフェースで用意されているgetSheetメソッドを使います。

Sheet getSheet(java.lang.String name)

Get sheet with the given name

Parameters:
  name - of the sheet 
Returns:
  Sheet with the name provided or null if it does not exist

引数にはシート名を表す文字列を指定します。

またシート名ではなくシートのインデックスを指定してシートを取得するにはWorkbookインターフェースで用意されているgetSheetAtメソッドを使います。

Sheet getSheetAt(int index)

Get the Sheet object at the given index. 

Parameters:
  index - of the sheet number (0-based physical & logical) 
Returns:
  Sheet at the provided index

引数にはシートのインデックスを指定します。

実際の使い方は次のようになります。

InputStream in = new FileInputStream("filename.xls");
Workbook wb = WorkbookFactory.create(in);

Sheet sheet1 = wb.getSheet("Sheet0");
Sheet sheet2 = wb.getSheetAt(1);

この場合、作成済みのワークブックを開き、ワークブックに含まれている名前が「Sheet0」のシートと、インデックスが1のシートをそれぞれ取得しています。

サンプルプログラム

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

Sample2_1.java

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample2_1{
  public static void main(String[] args){
    FileInputStream in = null;
    Workbook wb = null;

    try{
      in = new FileInputStream("sample.xls");
      wb = WorkbookFactory.create(in);
    }catch(IOException e){
      System.out.println(e.toString());
    }catch(InvalidFormatException e){
      System.out.println(e.toString());
    }finally{
      try{
        in.close();
      }catch (IOException e){
        System.out.println(e.toString());
      }
    }

    Sheet sheet = wb.getSheetAt(1);

    Row row = sheet.createRow(1);
    Cell cell = row.createCell(1);
    cell.setCellValue(123);

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

今回は事前に下記のようなワークブックを作成しておきました。

作成済みのシートを取得

このワークブックを開き、インデックス1のシートを取得します。そして取得したシートに対して行を作成した後でセルを作成し、そのセルに値として数値を設定しました。最後に別の名前を付けてワークブックを保存します。それでは作成されたファイルをExcelで開いてみます。

作成済みのシートを取得

インデックス1のシートを確認してみると、指定の位置のセルに値が設定されていることが確認できます。なお行やセルについては別のページで詳しく確認しますのでここでは気にしないで下さい。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。