シートを複製して追加
ワークブックに追加済みのシートを複製し、複製したものをシートに追加する方法を確認します。
シートを複製するには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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。