Jakarta POI のバグ?未実装機能?
現在、業務でPOIを使用しているのですが org.apache.poi.hssf.usermodel.HSSFWorkbook
#setSheetOrder(java.lang.String sheetname, int pos) のメソッドがうまく動いてくれないのですが何か情報をお持ちの方がいらしたら教えて頂けると嬉しいです。
症状としては、上記のメソッドで新たに生成したシートのOrderを変更しファイルに保存してもシートの順番が変更されません。また、保存したファイルを読み直すとOrderが生成した際のものに戻ってしまいます(生成されたExcelファイルのシートの順番と同じです)。以下に再現するソースを貼り付けておきます。
package org.apache.poi.hssf.usermodel; import java.io.FileOutputStream; import junit.framework.TestCase; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * Tests HSSFWorkbook method setSheetOrder() */ public class TestHSSFSheetSetOrder extends TestCase { private static final String FILE_NAME = "C:\\Results.xls"; public TestHSSFSheetSetOrder(String s) { super(s); } /** * Test the sheet set order method */ public void testBackupRecord() throws Exception { HSSFWorkbook wb = new HSSFWorkbook(); for (int i = 0; i < 10; i++) { HSSFSheet s = wb.createSheet("Sheet " + i); HSSFRow row = s.createRow(0); HSSFCell cell = row.createCell((short) 0); cell.setCellValue(i); } wb.setSheetOrder("Sheet 6", 0); wb.setSheetOrder("Sheet 3", 7); wb.setSheetOrder("Sheet 1", 9); FileOutputStream fo = new FileOutputStream(FILE_NAME); wb.write(fo); fo.close(); }