- Home ›
- Apache POIでExcelを操作 ›
- ワークブック ›
- HERE
シートの並び順を変更
ワークブックに複数のシートが含まれている場合に、シートの並び順を変更する方法を確認します。
シートの並び順を変更するにはWorkbookインターフェースで定義されていsetSheetOrderメソッドを使います。
setSheetOrder void setSheetOrder(java.lang.String sheetname, int pos)
Sets the order of appearance for a given sheet. Parameters: sheetname - the name of the sheet to reorder pos - the position that we want to insert the sheet into (0 based)
1番目の引数に並び順を変更したいシートのシート名を指定します。そして2番目の引数に1番目の引数で指定したシートを挿入したいインデックスを指定します。
シートの位置を変更した場合、新しい並び順に従ってシートに新しいインデックスが割り当てられます。
なおこのメソッドでは引数にシート名を指定する必要があります。シートインデックスを使って指定したい場合には、Workbookインターフェースで定義されているgetSheetNameメソッドを使ってインデックスからシート名を取得して指定するようにしてください。
getSheetName java.lang.String getSheetName(int sheet)
Set the sheet name Parameters: sheet - sheet number (0 based) Returns: Sheet name
引数にシートのインデックスを指定すると、対応するシート名を取得できます。
使い方としては下記のようになります。
Workbook wb = new HSSFWorkbook();
Sheet sheet0 = wb.createSheet("Sheet0");
Sheet sheet1 = wb.createSheet("Sheet1");
Sheet sheet2 = wb.createSheet("Sheet2");
wb.setSheetOrder("Sheet2", 1);
wb.setSheetOrder(getSheetName(2), 0);
上記の場合、まず"Sheet2"のシートがインデックス1の位置に挿入されます。結果としてシートの並びは"Sheet0","Sheet2","Sheet1"となります。次にインデックス2のシートがインデックス0の位置に挿入されます。結果として"Sheet1","Sheet0","Sheet2"という並びになります。
サンプルプログラム
実際に試してみましょう。
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.*;
public class Sample10_1{
public static void main(String[] args){
Workbook wb = new HSSFWorkbook();
Sheet sheet0 = wb.createSheet("Sheet0");
Sheet sheet1 = wb.createSheet("Sheet1");
Sheet sheet2 = wb.createSheet("Sheet2");
wb.setSheetOrder("Sheet2", 1);
wb.setSheetOrder(wb.getSheetName(2), 0);
FileOutputStream out = null;
try{
out = new FileOutputStream("sample10_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ファイルを開いてみます。
"Sheet2"のシートをまずインデックス1の位置へ挿入し、続いてインデックス2のシートをインデックス0の位置へ挿入しています。
( Written by Tatsuo Ikura )
JavaDrive