シートを複製して追加
ワークブックに追加済みのシートを複製し、複製したものをシートに追加する方法を確認します。
シートを複製するにはWorkbookインターフェースで定義されているcloneSheetメソッドを使います。
Sheet cloneSheet(int sheetNum)
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のシートを複製して追加します。
サンプルプログラム
実際に試してみましょう。
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 )
 
				著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。
