シートを複製して追加

広告

ワークブックに追加済みのシートを複製し、複製したものをシートに追加する方法を確認します。

シートを複製するにはWorkbookインターフェースで定義されているcloneSheetメソッドを使います。

Create an Sheet from an existing sheet in the Workbook.

Returns:
  Sheet representing the cloned sheet.

引数に指定したインデックスのシートを複製し、ワークブックの最後に追加します。

複数のシートがワークブックに含まれている場合、ウィンドウ下部にシート名が表示されたタブが表示されます。シートのインデックスはタブの上にシートが並んだ順に割り当てられます。一番左のシートはインデックスが0、その右側にあるシートはインデックスが1となります。

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

Workbook wb = new HSSFWorkbook();
wb.cloneSheet(1);

上記の場合、インデックスが1のシートを複製して追加します。

サンプルプログラム

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

Sample5_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.WorkbookFactory;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;

public class Sample5_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());
      }
    }

    wb.cloneSheet(1);

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

今回はまず元になるExcelファイルを一つ作成しておきました。

シートを複製して追加

コンパイルを行い実行すると元になるファイルからワークブックを読み込み、インデックス1のシートを複製して「sample5_1.xls」というファイルに保存しています。それでは作成されたファイルをExcelで開いてみます。

シートを複製して追加

シートが1つ追加されていることが確認できます。では追加されたシートを見てみます。

シートを複製して追加

追加されたシートは、インデックスが1の「Sheet2」を複製していることが確認できます。なおシートを複製した場合、もともとのシート名に番号を追加した名前が割り当てられます。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。