testbugs.java

来自「EXCEL read and write」· Java 代码 · 共 1,523 行 · 第 1/4 页

JAVA
1,523
字号
        assertEquals(25, (int)c2.getNumericCellValue());        try {            assertEquals("CHOOSE(2,A2,A3,A4)", c2.getCellFormula());        } catch (IllegalStateException e) {            if (e.getMessage().startsWith("Too few arguments")                    && e.getMessage().indexOf("ConcatPtg") > 0) {                throw new AssertionFailedError("identified bug 44306");            }        }    }    /**     * Something up with the FileSharingRecord     */    public void test43251() {        // Used to blow up with an IllegalArgumentException        //  when creating a FileSharingRecord        HSSFWorkbook wb;        try {            wb = openSample("43251.xls");        } catch (IllegalArgumentException e) {            throw new AssertionFailedError("identified bug 43251");        }        assertEquals(1, wb.getNumberOfSheets());    }    /**     * Crystal reports generates files with short     *  StyleRecords, which is against the spec     */    public void test44471() {        // Used to blow up with an ArrayIndexOutOfBounds        //  when creating a StyleRecord        HSSFWorkbook wb;        try {            wb = openSample("OddStyleRecord.xls");        } catch (ArrayIndexOutOfBoundsException e) {            throw new AssertionFailedError("Identified bug 44471");        }        assertEquals(1, wb.getNumberOfSheets());    }    /**     * Files with "read only recommended" were giving     *  grief on the FileSharingRecord     */    public void test44536() {        // Used to blow up with an IllegalArgumentException        //  when creating a FileSharingRecord        HSSFWorkbook wb = openSample("ReadOnlyRecommended.xls");        // Check read only advised        assertEquals(3, wb.getNumberOfSheets());        assertTrue(wb.isWriteProtected());        // But also check that another wb isn't        wb = openSample("SimpleWithChoose.xls");        assertFalse(wb.isWriteProtected());    }    /**     * Some files were having problems with the DVRecord,     *  probably due to dropdowns     */    public void test44593() {        // Used to blow up with an IllegalArgumentException        //  when creating a DVRecord        // Now won't, but no idea if this means we have        //  rubbish in the DVRecord or not...        HSSFWorkbook wb;        try {            wb = openSample("44593.xls");        } catch (IllegalArgumentException e) {            throw new AssertionFailedError("Identified bug 44593");        }        assertEquals(2, wb.getNumberOfSheets());    }    /**     * Used to give problems due to trying to read a zero     *  length string, but that's now properly handled     */    public void test44643() {        // Used to blow up with an IllegalArgumentException        HSSFWorkbook wb;        try {            wb = openSample("44643.xls");        } catch (IllegalArgumentException e) {            throw new AssertionFailedError("identified bug 44643");        }        assertEquals(1, wb.getNumberOfSheets());    }    /**     * User reported the wrong number of rows from the     *  iterator, but we can't replicate that     */    public void test44693() {        HSSFWorkbook wb = openSample("44693.xls");        HSSFSheet s = wb.getSheetAt(0);        // Rows are 1 to 713        assertEquals(0, s.getFirstRowNum());        assertEquals(712, s.getLastRowNum());        assertEquals(713, s.getPhysicalNumberOfRows());        // Now check the iterator        int rowsSeen = 0;        for(Iterator i = s.rowIterator(); i.hasNext(); ) {            HSSFRow r = (HSSFRow)i.next();            assertNotNull(r);            rowsSeen++;        }        assertEquals(713, rowsSeen);    }    /**     * Bug 28774: Excel will crash when opening xls-files with images.     */    public void test28774() {        HSSFWorkbook wb = openSample("28774.xls");        assertTrue("no errors reading sample xls", true);        writeOutAndReadBack(wb);        assertTrue("no errors writing sample xls", true);    }    /**     * Had a problem apparently, not sure what as it     *  works just fine...     */    public void test44891() {        HSSFWorkbook wb = openSample("44891.xls");        assertTrue("no errors reading sample xls", true);        writeOutAndReadBack(wb);        assertTrue("no errors writing sample xls", true);    }    /**     * Bug 44235: Ms Excel can't open save as excel file     *     * Works fine with poi-3.1-beta1.     */    public void test44235() {        HSSFWorkbook wb = openSample("44235.xls");        assertTrue("no errors reading sample xls", true);        writeOutAndReadBack(wb);        assertTrue("no errors writing sample xls", true);    }    /**     * Bug 21334: "File error: data may have been lost" with a file     * that contains macros and this formula:     * {=SUM(IF(FREQUENCY(IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""),IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),""))>0,1))}     */    public void test21334() {        HSSFWorkbook wb = new HSSFWorkbook();        HSSFSheet sh = wb.createSheet();        HSSFCell cell = sh.createRow(0).createCell(0);        String formula = "SUM(IF(FREQUENCY(IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),\"\"),IF(LEN(V4:V220)>0,MATCH(V4:V220,V4:V220,0),\"\"))>0,1))";        cell.setCellFormula(formula);        HSSFWorkbook wb_sv = writeOutAndReadBack(wb);        HSSFCell cell_sv = wb_sv.getSheetAt(0).getRow(0).getCell(0);        assertEquals(formula, cell_sv.getCellFormula());    }    public void test36947() {        HSSFWorkbook wb = openSample("36947.xls");        assertTrue("no errors reading sample xls", true);        writeOutAndReadBack(wb);        assertTrue("no errors writing sample xls", true);    }    /**     * Bug 42448: Can't parse SUMPRODUCT(A!C7:A!C67, B8:B68) / B69     */    public void test42448(){        HSSFWorkbook wb = new HSSFWorkbook();        HSSFCell cell = wb.createSheet().createRow(0).createCell(0);        cell.setCellFormula("SUMPRODUCT(A!C7:A!C67, B8:B68) / B69");        assertTrue("no errors parsing formula", true);    }    public void test39634() {        HSSFWorkbook wb = openSample("39634.xls");        assertTrue("no errors reading sample xls", true);        writeOutAndReadBack(wb);        assertTrue("no errors writing sample xls", true);    }    /**     * Problems with extracting check boxes from     *  HSSFObjectData     * @throws Exception     */    public void test44840() {        HSSFWorkbook wb = openSample("WithCheckBoxes.xls");        // Take a look at the embedded objects        List objects = wb.getAllEmbeddedObjects();        assertEquals(1, objects.size());        HSSFObjectData obj = (HSSFObjectData)objects.get(0);        assertNotNull(obj);        // Peek inside the underlying record        EmbeddedObjectRefSubRecord rec = obj.findObjectRecord();        assertNotNull(rec);//        assertEquals(32, rec.field_1_stream_id_offset);        assertEquals(0, rec.getStreamId().intValue()); // WRONG!        assertEquals("Forms.CheckBox.1", rec.getOLEClassName());        assertEquals(12, rec.getObjectData().length);        // Doesn't have a directory        assertFalse(obj.hasDirectoryEntry());        assertNotNull(obj.getObjectData());        assertEquals(12, obj.getObjectData().length);        assertEquals("Forms.CheckBox.1", obj.getOLE2ClassName());        try {            obj.getDirectory();            fail();        } catch(FileNotFoundException e) {            // expected during successful test        } catch (IOException e) {            throw new RuntimeException(e);        }    }    /**     * Test that we can delete sheets without     *  breaking the build in named ranges     *  used for printing stuff.     */    public void test30978() {        HSSFWorkbook wb = openSample("30978-alt.xls");        assertEquals(1, wb.getNumberOfNames());        assertEquals(3, wb.getNumberOfSheets());        // Check all names fit within range, and use        //  DeletedArea3DPtg        Workbook w = wb.getWorkbook();        for(int i=0; i<w.getNumNames(); i++) {            NameRecord r = w.getNameRecord(i);            assertTrue(r.getSheetNumber() <= wb.getNumberOfSheets());            Ptg[] nd = r.getNameDefinition();            assertEquals(1, nd.length);            assertTrue(nd[0] instanceof DeletedArea3DPtg);        }        // Delete the 2nd sheet        wb.removeSheetAt(1);        // Re-check        assertEquals(1, wb.getNumberOfNames());        assertEquals(2, wb.getNumberOfSheets());        for(int i=0; i<w.getNumNames(); i++) {            NameRecord r = w.getNameRecord(i);            assertTrue(r.getSheetNumber() <= wb.getNumberOfSheets());            Ptg[] nd = r.getNameDefinition();            assertEquals(1, nd.length);            assertTrue(nd[0] instanceof DeletedArea3DPtg);        }        // Save and re-load        wb = writeOutAndReadBack(wb);        w = wb.getWorkbook();        assertEquals(1, wb.getNumberOfNames());        assertEquals(2, wb.getNumberOfSheets());        for(int i=0; i<w.getNumNames(); i++) {            NameRecord r = w.getNameRecord(i);            assertTrue(r.getSheetNumber() <= wb.getNumberOfSheets());            Ptg[] nd = r.getNameDefinition();            assertEquals(1, nd.length);            assertTrue(nd[0] instanceof DeletedArea3DPtg);        }    }    /**     * Test that fonts get added properly     */    public void test45338() {        HSSFWorkbook wb = new HSSFWorkbook();        assertEquals(4, wb.getNumberOfFonts());        HSSFSheet s = wb.createSheet();        s.createRow(0);        s.createRow(1);        HSSFCell c1 = s.getRow(0).createCell(0);        HSSFCell c2 = s.getRow(1).createCell(0);        assertEquals(4, wb.getNumberOfFonts());        HSSFFont f1 = wb.getFontAt((short)0);        assertEquals(400, f1.getBoldweight());        // Check that asking for the same font        //  multiple times gives you the same thing.        // Otherwise, our tests wouldn't work!        assertEquals(                wb.getFontAt((short)0),                wb.getFontAt((short)0)        );        assertEquals(                wb.getFontAt((short)2),                wb.getFontAt((short)2)        );        assertTrue(                wb.getFontAt((short)0)                !=                wb.getFontAt((short)2)        );        // Look for a new font we have        //  yet to add        assertNull(            wb.findFont(                (short)11, (short)123, (short)22,                "Thingy", false, true, (short)2, (byte)2            )        );        HSSFFont nf = wb.createFont();        assertEquals(5, wb.getNumberOfFonts());        assertEquals(5, nf.getIndex());        assertEquals(nf, wb.getFontAt((short)5));        nf.setBoldweight((short)11);        nf.setColor((short)123);        nf.setFontHeight((short)22);        nf.setFontName("Thingy");        nf.setItalic(false);        nf.setStrikeout(true);        nf.setTypeOffset((short)2);        nf.setUnderline((byte)2);        assertEquals(5, wb.getNumberOfFonts());        assertEquals(nf, wb.getFontAt((short)5));        // Find it now        assertNotNull(            wb.findFont(                (short)11, (short)123, (short)22,                "Thingy", false, true, (short)2, (byte)2            )        );        assertEquals(            5,            wb.findFont(                   (short)11, (short)123, (short)22,                   "Thingy", false, true, (short)2, (byte)2               ).getIndex()        );        assertEquals(nf,               wb.findFont(                   (short)11, (short)123, (short)22,                   "Thingy", false, true, (short)2, (byte)2               )        );

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?