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 + -
显示快捷键?