I'm getting IndexOutOfBoundsException when I try to used createFreezePane with
XSSF. It works fine with HSSF.

Tested with version "6 June 2011 - POI 3.8 beta 3"

I did a quick test using test49381() from
testcases\org\apache\poi\xssf\usermodel\TestXSSFBugs.java and modified colSplit
to 0 to produce the error.

Is this a known bug? I searched the bug database and could not find anything. 
It may be related to bug 47964 or bug 50884 but I'm not sure.

Thanks.
Ian

------------ error message -----------
Exception in thread "main" java.lang.IndexOutOfBoundsException
        at org.apache.xmlbeans.impl.store.Xobj.remove_attribute(Xobj.java:2269)
        at
org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTPaneImpl.unsetXSplit
(UnknownSource)
        at 
org.apache.poi.xssf.usermodel.XSSFSheet.createFreezePane(XSSFSheet.java:
499)
        at FreezePaneTest.test49381(FreezePaneTest.java:38)
        at FreezePaneTest.main(FreezePaneTest.java:14)



------------ FreezePaneTest.java -----------


import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.PaneInformation;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;

public class FreezePaneTest {

    public static void main(String[] args) throws Exception {
        FreezePaneTest t = new FreezePaneTest();
        t.test49381();
    }


    public void test49381() throws Exception {
        Workbook[] wbs = new Workbook[] { new HSSFWorkbook(), new 
XSSFWorkbook() };
        int colSplit = 0;
        int rowSplit = 2;
        int leftmostColumn = 3;
        int topRow = 4;
        
        for(Workbook wb : wbs) {
        Sheet s = wb.createSheet();
        
        // Populate
        for(int rn=0; rn<= topRow; rn++) {
        Row r = s.createRow(rn);
        for(int cn=0; cn<leftmostColumn; cn++) {
        Cell c = r.createCell(cn, Cell.CELL_TYPE_NUMERIC);
        c.setCellValue(100*rn + cn);
        }
        }
        
        // Create the Freeze Pane
        s.createFreezePane(colSplit, rowSplit, leftmostColumn, topRow);
        PaneInformation paneInfo = s.getPaneInformation();
        
        // Now a row only freezepane
        s.createFreezePane(0, 3);
        paneInfo = s.getPaneInformation();
        
        if(wb == wbs[0]) {
        } else {
        }
        
        // Now a column only freezepane
        s.createFreezePane(4, 0);
        paneInfo = s.getPaneInformation();
        }
        }
}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to