- Home ›
- Apache POIでExcelを操作 ›
- ワークブック ›
- HERE
シートを複製して追加
ワークブックに追加済みのシートを複製し、複製したものをシートに追加する方法を確認します。
シートを複製するにはWorkbookインターフェースで定義されているcloneSheetメソッドを使います。
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 )
JavaDrive