diff options
author | Nick Burch <nick@apache.org> | 2015-04-24 02:20:57 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2015-04-24 02:20:57 +0000 |
commit | ca020a8be255ead1cc939e16e3174129e7fb18fa (patch) | |
tree | 0c36dad1c8771e84aa8f30c467cc109c04a4ce9b | |
parent | cc2557adbb2f348a131963044784a42db3c848c0 (diff) | |
download | poi-ca020a8be255ead1cc939e16e3174129e7fb18fa.tar.gz poi-ca020a8be255ead1cc939e16e3174129e7fb18fa.zip |
Fix some inconsistent whitespace
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675748 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java | 1738 |
1 files changed, 877 insertions, 861 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 6a09b9033d..71e008485f 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -31,8 +31,6 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -57,7 +55,26 @@ import org.apache.poi.ss.formula.eval.ErrorEval; import org.apache.poi.ss.formula.eval.NumberEval; import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.formula.functions.Function; -import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.CellValue; +import org.apache.poi.ss.usermodel.ClientAnchor; +import org.apache.poi.ss.usermodel.Comment; +import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Drawing; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.FormulaError; +import org.apache.poi.ss.usermodel.FormulaEvaluator; +import org.apache.poi.ss.usermodel.Hyperlink; +import org.apache.poi.ss.usermodel.IndexedColors; +import org.apache.poi.ss.usermodel.Name; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; @@ -77,7 +94,6 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFontImpl; public final class TestXSSFBugs extends BaseTestBugzillaIssues { - public TestXSSFBugs() { super(XSSFITestDataProvider.instance); } @@ -191,7 +207,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(1, rels.size()); assertEquals("Sheet1!A1", rels.get(0).getPackageRelationship().getTargetURI().getFragment()); } - + /** * Excel will sometimes write a button with a textbox * containing >br< (not closed!). @@ -200,7 +216,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug49020() throws Exception { - /*XSSFWorkbook wb =*/ XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx"); + /*XSSFWorkbook wb =*/ XSSFTestDataSamples.openSampleWorkbook("BrNotClosed.xlsx"); } /** @@ -212,42 +228,42 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { CTWorksheet sh = wb.getSheetAt(0).getCTWorksheet(); assertNotNull(sh.getPhoneticPr()); } - + /** * Names which are defined with a Sheet * should return that sheet index properly */ @Test public void bug48923() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48923.xlsx"); - assertEquals(4, wb.getNumberOfNames()); - - Name b1 = wb.getName("NameB1"); - Name b2 = wb.getName("NameB2"); - Name sheet2 = wb.getName("NameSheet2"); - Name test = wb.getName("Test"); - - assertNotNull(b1); - assertEquals("NameB1", b1.getNameName()); - assertEquals("Sheet1", b1.getSheetName()); - assertEquals(-1, b1.getSheetIndex()); - - assertNotNull(b2); - assertEquals("NameB2", b2.getNameName()); - assertEquals("Sheet1", b2.getSheetName()); - assertEquals(-1, b2.getSheetIndex()); - - assertNotNull(sheet2); - assertEquals("NameSheet2", sheet2.getNameName()); - assertEquals("Sheet2", sheet2.getSheetName()); - assertEquals(-1, sheet2.getSheetIndex()); - - assertNotNull(test); - assertEquals("Test", test.getNameName()); - assertEquals("Sheet1", test.getSheetName()); - assertEquals(-1, test.getSheetIndex()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48923.xlsx"); + assertEquals(4, wb.getNumberOfNames()); + + Name b1 = wb.getName("NameB1"); + Name b2 = wb.getName("NameB2"); + Name sheet2 = wb.getName("NameSheet2"); + Name test = wb.getName("Test"); + + assertNotNull(b1); + assertEquals("NameB1", b1.getNameName()); + assertEquals("Sheet1", b1.getSheetName()); + assertEquals(-1, b1.getSheetIndex()); + + assertNotNull(b2); + assertEquals("NameB2", b2.getNameName()); + assertEquals("Sheet1", b2.getSheetName()); + assertEquals(-1, b2.getSheetIndex()); + + assertNotNull(sheet2); + assertEquals("NameSheet2", sheet2.getNameName()); + assertEquals("Sheet2", sheet2.getSheetName()); + assertEquals(-1, sheet2.getSheetIndex()); + + assertNotNull(test); + assertEquals("Test", test.getNameName()); + assertEquals("Sheet1", test.getSheetName()); + assertEquals(-1, test.getSheetIndex()); } - + /** * Problem with evaluation formulas due to * NameXPtgs. @@ -258,77 +274,77 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug48539() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48539.xlsx"); - assertEquals(3, wb.getNumberOfSheets()); - assertEquals(0, wb.getNumberOfNames()); - - // Try each cell individually - XSSFFormulaEvaluator eval = new XSSFFormulaEvaluator(wb); - for(int i=0; i<wb.getNumberOfSheets(); i++) { - Sheet s = wb.getSheetAt(i); - for(Row r : s) { - for(Cell c : r) { - if(c.getCellType() == Cell.CELL_TYPE_FORMULA) { - String formula = c.getCellFormula(); - CellValue cv; - try { - cv = eval.evaluate(c); - } catch (Exception e) { - throw new RuntimeException("Can't evaluate formula: " + formula, e); - } - - if(cv.getCellType() == Cell.CELL_TYPE_NUMERIC) { - // assert that the calculated value agrees with - // the cached formula result calculated by Excel - double cachedFormulaResult = c.getNumericCellValue(); - double evaluatedFormulaResult = cv.getNumberValue(); - assertEquals(c.getCellFormula(), cachedFormulaResult, evaluatedFormulaResult, 1E-7); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48539.xlsx"); + assertEquals(3, wb.getNumberOfSheets()); + assertEquals(0, wb.getNumberOfNames()); + + // Try each cell individually + XSSFFormulaEvaluator eval = new XSSFFormulaEvaluator(wb); + for(int i=0; i<wb.getNumberOfSheets(); i++) { + Sheet s = wb.getSheetAt(i); + for(Row r : s) { + for(Cell c : r) { + if(c.getCellType() == Cell.CELL_TYPE_FORMULA) { + String formula = c.getCellFormula(); + CellValue cv; + try { + cv = eval.evaluate(c); + } catch (Exception e) { + throw new RuntimeException("Can't evaluate formula: " + formula, e); + } + + if(cv.getCellType() == Cell.CELL_TYPE_NUMERIC) { + // assert that the calculated value agrees with + // the cached formula result calculated by Excel + double cachedFormulaResult = c.getNumericCellValue(); + double evaluatedFormulaResult = cv.getNumberValue(); + assertEquals(c.getCellFormula(), cachedFormulaResult, evaluatedFormulaResult, 1E-7); + } } } - } - } - } - - // Now all of them + } + } + + // Now all of them XSSFFormulaEvaluator.evaluateAllFormulaCells(wb); } - + /** * Foreground colours should be found even if * a theme is used */ @Test public void bug48779() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48779.xlsx"); - XSSFCell cell = wb.getSheetAt(0).getRow(0).getCell(0); - XSSFCellStyle cs = cell.getCellStyle(); - - assertNotNull(cs); - assertEquals(1, cs.getIndex()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48779.xlsx"); + XSSFCell cell = wb.getSheetAt(0).getRow(0).getCell(0); + XSSFCellStyle cs = cell.getCellStyle(); - // Look at the low level xml elements - assertEquals(2, cs.getCoreXf().getFillId()); - assertEquals(0, cs.getCoreXf().getXfId()); - assertEquals(true, cs.getCoreXf().getApplyFill()); - - XSSFCellFill fg = wb.getStylesSource().getFillAt(2); - assertEquals(0, fg.getFillForegroundColor().getIndexed()); - assertEquals(0.0, fg.getFillForegroundColor().getTint(), 0); - assertEquals("FFFF0000", fg.getFillForegroundColor().getARGBHex()); - assertEquals(64, fg.getFillBackgroundColor().getIndexed()); - - // Now look higher up - assertNotNull(cs.getFillForegroundXSSFColor()); - assertEquals(0, cs.getFillForegroundColor()); - assertEquals("FFFF0000", cs.getFillForegroundXSSFColor().getARGBHex()); - assertEquals("FFFF0000", cs.getFillForegroundColorColor().getARGBHex()); - - assertNotNull(cs.getFillBackgroundColor()); - assertEquals(64, cs.getFillBackgroundColor()); - assertEquals(null, cs.getFillBackgroundXSSFColor().getARGBHex()); - assertEquals(null, cs.getFillBackgroundColorColor().getARGBHex()); + assertNotNull(cs); + assertEquals(1, cs.getIndex()); + + // Look at the low level xml elements + assertEquals(2, cs.getCoreXf().getFillId()); + assertEquals(0, cs.getCoreXf().getXfId()); + assertEquals(true, cs.getCoreXf().getApplyFill()); + + XSSFCellFill fg = wb.getStylesSource().getFillAt(2); + assertEquals(0, fg.getFillForegroundColor().getIndexed()); + assertEquals(0.0, fg.getFillForegroundColor().getTint(), 0); + assertEquals("FFFF0000", fg.getFillForegroundColor().getARGBHex()); + assertEquals(64, fg.getFillBackgroundColor().getIndexed()); + + // Now look higher up + assertNotNull(cs.getFillForegroundXSSFColor()); + assertEquals(0, cs.getFillForegroundColor()); + assertEquals("FFFF0000", cs.getFillForegroundXSSFColor().getARGBHex()); + assertEquals("FFFF0000", cs.getFillForegroundColorColor().getARGBHex()); + + assertNotNull(cs.getFillBackgroundColor()); + assertEquals(64, cs.getFillBackgroundColor()); + assertEquals(null, cs.getFillBackgroundXSSFColor().getARGBHex()); + assertEquals(null, cs.getFillBackgroundColorColor().getARGBHex()); } - + /** * With HSSF, if you create a font, don't change it, and * create a 2nd, you really do get two fonts that you @@ -338,66 +354,66 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug48718() throws Exception { - // Verify the HSSF behaviour - // Then ensure the same for XSSF - Workbook[] wbs = new Workbook[] { - new HSSFWorkbook(), - new XSSFWorkbook() - }; - int[] initialFonts = new int[] { 4, 1 }; - for(int i=0; i<wbs.length; i++) { - Workbook wb = wbs[i]; - int startingFonts = initialFonts[i]; - - assertEquals(startingFonts, wb.getNumberOfFonts()); - - // Get a font, and slightly change it - Font a = wb.createFont(); - assertEquals(startingFonts+1, wb.getNumberOfFonts()); - a.setFontHeightInPoints((short)23); - assertEquals(startingFonts+1, wb.getNumberOfFonts()); - - // Get two more, unchanged - /*Font b =*/ wb.createFont(); - assertEquals(startingFonts+2, wb.getNumberOfFonts()); - /*Font c =*/ wb.createFont(); - assertEquals(startingFonts+3, wb.getNumberOfFonts()); - } + // Verify the HSSF behaviour + // Then ensure the same for XSSF + Workbook[] wbs = new Workbook[] { + new HSSFWorkbook(), + new XSSFWorkbook() + }; + int[] initialFonts = new int[] { 4, 1 }; + for(int i=0; i<wbs.length; i++) { + Workbook wb = wbs[i]; + int startingFonts = initialFonts[i]; + + assertEquals(startingFonts, wb.getNumberOfFonts()); + + // Get a font, and slightly change it + Font a = wb.createFont(); + assertEquals(startingFonts+1, wb.getNumberOfFonts()); + a.setFontHeightInPoints((short)23); + assertEquals(startingFonts+1, wb.getNumberOfFonts()); + + // Get two more, unchanged + /*Font b =*/ wb.createFont(); + assertEquals(startingFonts+2, wb.getNumberOfFonts()); + /*Font c =*/ wb.createFont(); + assertEquals(startingFonts+3, wb.getNumberOfFonts()); + } } - + /** * Ensure General and @ format are working properly * for integers */ @Test public void bug47490() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("GeneralFormatTests.xlsx"); - Sheet s = wb.getSheetAt(1); - Row r; - DataFormatter df = new DataFormatter(); - - r = s.getRow(1); - assertEquals(1.0, r.getCell(2).getNumericCellValue(), 0); - assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); - assertEquals("1", df.formatCellValue(r.getCell(2))); - assertEquals("1", df.formatRawCellContents(1.0, -1, "@")); - assertEquals("1", df.formatRawCellContents(1.0, -1, "General")); - - r = s.getRow(2); - assertEquals(12.0, r.getCell(2).getNumericCellValue(), 0); - assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); - assertEquals("12", df.formatCellValue(r.getCell(2))); - assertEquals("12", df.formatRawCellContents(12.0, -1, "@")); - assertEquals("12", df.formatRawCellContents(12.0, -1, "General")); - - r = s.getRow(3); - assertEquals(123.0, r.getCell(2).getNumericCellValue(), 0); - assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); - assertEquals("123", df.formatCellValue(r.getCell(2))); - assertEquals("123", df.formatRawCellContents(123.0, -1, "@")); - assertEquals("123", df.formatRawCellContents(123.0, -1, "General")); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("GeneralFormatTests.xlsx"); + Sheet s = wb.getSheetAt(1); + Row r; + DataFormatter df = new DataFormatter(); + + r = s.getRow(1); + assertEquals(1.0, r.getCell(2).getNumericCellValue(), 0); + assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); + assertEquals("1", df.formatCellValue(r.getCell(2))); + assertEquals("1", df.formatRawCellContents(1.0, -1, "@")); + assertEquals("1", df.formatRawCellContents(1.0, -1, "General")); + + r = s.getRow(2); + assertEquals(12.0, r.getCell(2).getNumericCellValue(), 0); + assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); + assertEquals("12", df.formatCellValue(r.getCell(2))); + assertEquals("12", df.formatRawCellContents(12.0, -1, "@")); + assertEquals("12", df.formatRawCellContents(12.0, -1, "General")); + + r = s.getRow(3); + assertEquals(123.0, r.getCell(2).getNumericCellValue(), 0); + assertEquals("General", r.getCell(2).getCellStyle().getDataFormatString()); + assertEquals("123", df.formatCellValue(r.getCell(2))); + assertEquals("123", df.formatRawCellContents(123.0, -1, "@")); + assertEquals("123", df.formatRawCellContents(123.0, -1, "General")); } - + /** * Ensures that XSSF and HSSF agree with each other, * and with the docs on when fetching the wrong @@ -405,64 +421,64 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug47815() { - Workbook[] wbs = new Workbook[] { - new HSSFWorkbook(), - new XSSFWorkbook() - }; - for(Workbook wb : wbs) { - Sheet s = wb.createSheet(); - Row r = s.createRow(0); - - // Setup - Cell cn = r.createCell(0, Cell.CELL_TYPE_NUMERIC); - cn.setCellValue(1.2); - Cell cs = r.createCell(1, Cell.CELL_TYPE_STRING); - cs.setCellValue("Testing"); - - Cell cfn = r.createCell(2, Cell.CELL_TYPE_FORMULA); - cfn.setCellFormula("A1"); - Cell cfs = r.createCell(3, Cell.CELL_TYPE_FORMULA); - cfs.setCellFormula("B1"); - - FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator(); - assertEquals(Cell.CELL_TYPE_NUMERIC, fe.evaluate(cfn).getCellType()); - assertEquals(Cell.CELL_TYPE_STRING, fe.evaluate(cfs).getCellType()); - fe.evaluateFormulaCell(cfn); - fe.evaluateFormulaCell(cfs); - - // Now test - assertEquals(Cell.CELL_TYPE_NUMERIC, cn.getCellType()); - assertEquals(Cell.CELL_TYPE_STRING, cs.getCellType()); - assertEquals(Cell.CELL_TYPE_FORMULA, cfn.getCellType()); - assertEquals(Cell.CELL_TYPE_NUMERIC, cfn.getCachedFormulaResultType()); - assertEquals(Cell.CELL_TYPE_FORMULA, cfs.getCellType()); - assertEquals(Cell.CELL_TYPE_STRING, cfs.getCachedFormulaResultType()); - - // Different ways of retrieving - assertEquals(1.2, cn.getNumericCellValue(), 0); - try { - cn.getRichStringCellValue(); - fail(); - } catch(IllegalStateException e) {} - - assertEquals("Testing", cs.getStringCellValue()); - try { - cs.getNumericCellValue(); - fail(); - } catch(IllegalStateException e) {} - - assertEquals(1.2, cfn.getNumericCellValue(), 0); - try { - cfn.getRichStringCellValue(); - fail(); - } catch(IllegalStateException e) {} - - assertEquals("Testing", cfs.getStringCellValue()); - try { - cfs.getNumericCellValue(); - fail(); - } catch(IllegalStateException e) {} - } + Workbook[] wbs = new Workbook[] { + new HSSFWorkbook(), + new XSSFWorkbook() + }; + for(Workbook wb : wbs) { + Sheet s = wb.createSheet(); + Row r = s.createRow(0); + + // Setup + Cell cn = r.createCell(0, Cell.CELL_TYPE_NUMERIC); + cn.setCellValue(1.2); + Cell cs = r.createCell(1, Cell.CELL_TYPE_STRING); + cs.setCellValue("Testing"); + + Cell cfn = r.createCell(2, Cell.CELL_TYPE_FORMULA); + cfn.setCellFormula("A1"); + Cell cfs = r.createCell(3, Cell.CELL_TYPE_FORMULA); + cfs.setCellFormula("B1"); + + FormulaEvaluator fe = wb.getCreationHelper().createFormulaEvaluator(); + assertEquals(Cell.CELL_TYPE_NUMERIC, fe.evaluate(cfn).getCellType()); + assertEquals(Cell.CELL_TYPE_STRING, fe.evaluate(cfs).getCellType()); + fe.evaluateFormulaCell(cfn); + fe.evaluateFormulaCell(cfs); + + // Now test + assertEquals(Cell.CELL_TYPE_NUMERIC, cn.getCellType()); + assertEquals(Cell.CELL_TYPE_STRING, cs.getCellType()); + assertEquals(Cell.CELL_TYPE_FORMULA, cfn.getCellType()); + assertEquals(Cell.CELL_TYPE_NUMERIC, cfn.getCachedFormulaResultType()); + assertEquals(Cell.CELL_TYPE_FORMULA, cfs.getCellType()); + assertEquals(Cell.CELL_TYPE_STRING, cfs.getCachedFormulaResultType()); + + // Different ways of retrieving + assertEquals(1.2, cn.getNumericCellValue(), 0); + try { + cn.getRichStringCellValue(); + fail(); + } catch(IllegalStateException e) {} + + assertEquals("Testing", cs.getStringCellValue()); + try { + cs.getNumericCellValue(); + fail(); + } catch(IllegalStateException e) {} + + assertEquals(1.2, cfn.getNumericCellValue(), 0); + try { + cfn.getRichStringCellValue(); + fail(); + } catch(IllegalStateException e) {} + + assertEquals("Testing", cfs.getStringCellValue()); + try { + cfs.getNumericCellValue(); + fail(); + } catch(IllegalStateException e) {} + } } /** @@ -505,7 +521,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(Cell.CELL_TYPE_ERROR, evaluator.evaluateInCell(cell).getCellType()); assertEquals("#REF!", FormulaError.forInt(cell.getErrorCellValue()).getString()); } - + /** * Creating a rich string of "hello world" and applying * a font to characters 1-5 means we have two strings, @@ -515,101 +531,101 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug49941() throws Exception { - XSSFWorkbook wb = new XSSFWorkbook(); - XSSFSheet s = wb.createSheet(); - XSSFRow r = s.createRow(0); - XSSFCell c = r.createCell(0); - - // First without fonts - c.setCellValue( - new XSSFRichTextString(" with spaces ") - ); - assertEquals(" with spaces ", c.getRichStringCellValue().toString()); - assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray()); - assertEquals(true, c.getRichStringCellValue().getCTRst().isSetT()); - // Should have the preserve set - assertEquals( - 1, - c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().getLength() - ); - assertEquals( - "preserve", - c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().item(0).getNodeValue() - ); - - // Save and check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); - r = s.getRow(0); - c = r.getCell(0); - assertEquals(" with spaces ", c.getRichStringCellValue().toString()); - assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray()); - assertEquals(true, c.getRichStringCellValue().getCTRst().isSetT()); - - // Change the string - c.setCellValue( - new XSSFRichTextString("hello world") - ); - assertEquals("hello world", c.getRichStringCellValue().toString()); - // Won't have preserve - assertEquals( - 0, - c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().getLength() - ); - - // Apply a font - XSSFFont f = wb.createFont(); - f.setBold(true); - c.getRichStringCellValue().applyFont(0, 5, f); - assertEquals("hello world", c.getRichStringCellValue().toString()); - // Does need preserving on the 2nd part - assertEquals(2, c.getRichStringCellValue().getCTRst().sizeOfRArray()); - assertEquals( - 0, - c.getRichStringCellValue().getCTRst().getRArray(0).xgetT().getDomNode().getAttributes().getLength() - ); - assertEquals( - 1, - c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().getLength() - ); - assertEquals( - "preserve", - c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().item(0).getNodeValue() - ); - - // Save and check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); - r = s.getRow(0); - c = r.getCell(0); - assertEquals("hello world", c.getRichStringCellValue().toString()); - wb.close(); + XSSFWorkbook wb = new XSSFWorkbook(); + XSSFSheet s = wb.createSheet(); + XSSFRow r = s.createRow(0); + XSSFCell c = r.createCell(0); + + // First without fonts + c.setCellValue( + new XSSFRichTextString(" with spaces ") + ); + assertEquals(" with spaces ", c.getRichStringCellValue().toString()); + assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray()); + assertEquals(true, c.getRichStringCellValue().getCTRst().isSetT()); + // Should have the preserve set + assertEquals( + 1, + c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().getLength() + ); + assertEquals( + "preserve", + c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().item(0).getNodeValue() + ); + + // Save and check + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + s = wb.getSheetAt(0); + r = s.getRow(0); + c = r.getCell(0); + assertEquals(" with spaces ", c.getRichStringCellValue().toString()); + assertEquals(0, c.getRichStringCellValue().getCTRst().sizeOfRArray()); + assertEquals(true, c.getRichStringCellValue().getCTRst().isSetT()); + + // Change the string + c.setCellValue( + new XSSFRichTextString("hello world") + ); + assertEquals("hello world", c.getRichStringCellValue().toString()); + // Won't have preserve + assertEquals( + 0, + c.getRichStringCellValue().getCTRst().xgetT().getDomNode().getAttributes().getLength() + ); + + // Apply a font + XSSFFont f = wb.createFont(); + f.setBold(true); + c.getRichStringCellValue().applyFont(0, 5, f); + assertEquals("hello world", c.getRichStringCellValue().toString()); + // Does need preserving on the 2nd part + assertEquals(2, c.getRichStringCellValue().getCTRst().sizeOfRArray()); + assertEquals( + 0, + c.getRichStringCellValue().getCTRst().getRArray(0).xgetT().getDomNode().getAttributes().getLength() + ); + assertEquals( + 1, + c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().getLength() + ); + assertEquals( + "preserve", + c.getRichStringCellValue().getCTRst().getRArray(1).xgetT().getDomNode().getAttributes().item(0).getNodeValue() + ); + + // Save and check + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + s = wb.getSheetAt(0); + r = s.getRow(0); + c = r.getCell(0); + assertEquals("hello world", c.getRichStringCellValue().toString()); + wb.close(); } - + /** * Repeatedly writing the same file which has styles */ @Test public void bug49940() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("styles.xlsx"); - assertEquals(3, wb.getNumberOfSheets()); - assertEquals(10, wb.getStylesSource().getNumCellStyles()); - - ByteArrayOutputStream b1 = new ByteArrayOutputStream(); - ByteArrayOutputStream b2 = new ByteArrayOutputStream(); - ByteArrayOutputStream b3 = new ByteArrayOutputStream(); - wb.write(b1); - wb.write(b2); - wb.write(b3); - - for(byte[] data : new byte[][] { - b1.toByteArray(), b2.toByteArray(), b3.toByteArray() - }) { - ByteArrayInputStream bais = new ByteArrayInputStream(data); - wb = new XSSFWorkbook(bais); - assertEquals(3, wb.getNumberOfSheets()); - assertEquals(10, wb.getStylesSource().getNumCellStyles()); - } + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("styles.xlsx"); + assertEquals(3, wb.getNumberOfSheets()); + assertEquals(10, wb.getStylesSource().getNumCellStyles()); + + ByteArrayOutputStream b1 = new ByteArrayOutputStream(); + ByteArrayOutputStream b2 = new ByteArrayOutputStream(); + ByteArrayOutputStream b3 = new ByteArrayOutputStream(); + wb.write(b1); + wb.write(b2); + wb.write(b3); + + for(byte[] data : new byte[][] { + b1.toByteArray(), b2.toByteArray(), b3.toByteArray() + }) { + ByteArrayInputStream bais = new ByteArrayInputStream(data); + wb = new XSSFWorkbook(bais); + assertEquals(3, wb.getNumberOfSheets()); + assertEquals(10, wb.getStylesSource().getNumCellStyles()); + } } /** @@ -635,7 +651,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals("A8", cc.getCTCalcChain().getCArray(6).getR()); assertEquals(40, cc.getCTCalcChain().sizeOfCArray()); wbRead.close(); - + wbRead = XSSFTestDataSamples.writeOutAndReadBack(wb); // Try various ways of changing the formulas @@ -655,7 +671,7 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { validateCells(sheet); wbRead.close(); wbRead = XSSFTestDataSamples.writeOutAndReadBack(wb); - + sheet.getRow(6).getCell(0).setCellType(Cell.CELL_TYPE_BLANK); // go wbRead.close(); wbRead = XSSFTestDataSamples.writeOutAndReadBack(wb); @@ -707,85 +723,85 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { } } } - + /** * Newlines are valid characters in a formula */ @Test public void bug50440And51875() throws Exception { - Workbook wb = XSSFTestDataSamples.openSampleWorkbook("NewlineInFormulas.xlsx"); - Sheet s = wb.getSheetAt(0); - Cell c = s.getRow(0).getCell(0); - - assertEquals("SUM(\n1,2\n)", c.getCellFormula()); - assertEquals(3.0, c.getNumericCellValue(), 0); - - FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); - formulaEvaluator.evaluateFormulaCell(c); - - assertEquals("SUM(\n1,2\n)", c.getCellFormula()); - assertEquals(3.0, c.getNumericCellValue(), 0); + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("NewlineInFormulas.xlsx"); + Sheet s = wb.getSheetAt(0); + Cell c = s.getRow(0).getCell(0); + + assertEquals("SUM(\n1,2\n)", c.getCellFormula()); + assertEquals(3.0, c.getNumericCellValue(), 0); + + FormulaEvaluator formulaEvaluator = wb.getCreationHelper().createFormulaEvaluator(); + formulaEvaluator.evaluateFormulaCell(c); + + assertEquals("SUM(\n1,2\n)", c.getCellFormula()); + assertEquals(3.0, c.getNumericCellValue(), 0); - // For 51875 - Cell b3 = s.getRow(2).getCell(1); - formulaEvaluator.evaluateFormulaCell(b3); - assertEquals("B1+B2", b3.getCellFormula()); // The newline is lost for shared formulas - assertEquals(3.0, b3.getNumericCellValue(), 0); + // For 51875 + Cell b3 = s.getRow(2).getCell(1); + formulaEvaluator.evaluateFormulaCell(b3); + assertEquals("B1+B2", b3.getCellFormula()); // The newline is lost for shared formulas + assertEquals(3.0, b3.getNumericCellValue(), 0); } - + /** * Moving a cell comment from one cell to another */ @Test public void bug50795() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50795.xlsx"); - XSSFSheet sheet = wb.getSheetAt(0); - XSSFRow row = sheet.getRow(0); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50795.xlsx"); + XSSFSheet sheet = wb.getSheetAt(0); + XSSFRow row = sheet.getRow(0); - XSSFCell cellWith = row.getCell(0); - XSSFCell cellWithoutComment = row.getCell(1); - - assertNotNull(cellWith.getCellComment()); - assertNull(cellWithoutComment.getCellComment()); - - String exp = "\u0410\u0432\u0442\u043e\u0440:\ncomment"; - XSSFComment comment = cellWith.getCellComment(); - assertEquals(exp, comment.getString().getString()); - - - // Check we can write it out and read it back as-is - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - sheet = wb.getSheetAt(0); - row = sheet.getRow(0); - cellWith = row.getCell(0); - cellWithoutComment = row.getCell(1); - - // Double check things are as expected - assertNotNull(cellWith.getCellComment()); - assertNull(cellWithoutComment.getCellComment()); - comment = cellWith.getCellComment(); - assertEquals(exp, comment.getString().getString()); + XSSFCell cellWith = row.getCell(0); + XSSFCell cellWithoutComment = row.getCell(1); - - // Move the comment - cellWithoutComment.setCellComment(comment); - - - // Write out and re-check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - sheet = wb.getSheetAt(0); - row = sheet.getRow(0); - - // Ensure it swapped over - cellWith = row.getCell(0); - cellWithoutComment = row.getCell(1); - assertNull(cellWith.getCellComment()); - assertNotNull(cellWithoutComment.getCellComment()); - - comment = cellWithoutComment.getCellComment(); - assertEquals(exp, comment.getString().getString()); + assertNotNull(cellWith.getCellComment()); + assertNull(cellWithoutComment.getCellComment()); + + String exp = "\u0410\u0432\u0442\u043e\u0440:\ncomment"; + XSSFComment comment = cellWith.getCellComment(); + assertEquals(exp, comment.getString().getString()); + + + // Check we can write it out and read it back as-is + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + sheet = wb.getSheetAt(0); + row = sheet.getRow(0); + cellWith = row.getCell(0); + cellWithoutComment = row.getCell(1); + + // Double check things are as expected + assertNotNull(cellWith.getCellComment()); + assertNull(cellWithoutComment.getCellComment()); + comment = cellWith.getCellComment(); + assertEquals(exp, comment.getString().getString()); + + + // Move the comment + cellWithoutComment.setCellComment(comment); + + + // Write out and re-check + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + sheet = wb.getSheetAt(0); + row = sheet.getRow(0); + + // Ensure it swapped over + cellWith = row.getCell(0); + cellWithoutComment = row.getCell(1); + assertNull(cellWith.getCellComment()); + assertNotNull(cellWithoutComment.getCellComment()); + + comment = cellWithoutComment.getCellComment(); + assertEquals(exp, comment.getString().getString()); } - + /** * When the cell background colour is set with one of the first * two columns of the theme colour palette, the colours are @@ -794,80 +810,80 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug50299() throws Exception { - Workbook wb = XSSFTestDataSamples.openSampleWorkbook("50299.xlsx"); - - // Check all the colours - for(int sn=0; sn<wb.getNumberOfSheets(); sn++) { - Sheet s = wb.getSheetAt(sn); - for(Row r : s) { - for(Cell c : r) { - CellStyle cs = c.getCellStyle(); - if(cs != null) { - cs.getFillForegroundColor(); + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("50299.xlsx"); + + // Check all the colours + for(int sn=0; sn<wb.getNumberOfSheets(); sn++) { + Sheet s = wb.getSheetAt(sn); + for(Row r : s) { + for(Cell c : r) { + CellStyle cs = c.getCellStyle(); + if(cs != null) { + cs.getFillForegroundColor(); + } } - } - } - } - - // Check one bit in detail - // Check that we get back foreground=0 for the theme colours, - // and background=64 for the auto colouring - Sheet s = wb.getSheetAt(0); - assertEquals(0, s.getRow(0).getCell(8).getCellStyle().getFillForegroundColor()); - assertEquals(64, s.getRow(0).getCell(8).getCellStyle().getFillBackgroundColor()); - assertEquals(0, s.getRow(1).getCell(8).getCellStyle().getFillForegroundColor()); - assertEquals(64, s.getRow(1).getCell(8).getCellStyle().getFillBackgroundColor()); + } + } + + // Check one bit in detail + // Check that we get back foreground=0 for the theme colours, + // and background=64 for the auto colouring + Sheet s = wb.getSheetAt(0); + assertEquals(0, s.getRow(0).getCell(8).getCellStyle().getFillForegroundColor()); + assertEquals(64, s.getRow(0).getCell(8).getCellStyle().getFillBackgroundColor()); + assertEquals(0, s.getRow(1).getCell(8).getCellStyle().getFillForegroundColor()); + assertEquals(64, s.getRow(1).getCell(8).getCellStyle().getFillBackgroundColor()); } - + /** * Excel .xls style indexed colours in a .xlsx file */ @Test public void bug50786() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50786-indexed_colours.xlsx"); - XSSFSheet s = wb.getSheetAt(0); - XSSFRow r = s.getRow(2); - - // Check we have the right cell - XSSFCell c = r.getCell(1); - assertEquals("test\u00a0", c.getRichStringCellValue().getString()); - - // It should be light green - XSSFCellStyle cs = c.getCellStyle(); - assertEquals(42, cs.getFillForegroundColor()); - assertEquals(42, cs.getFillForegroundColorColor().getIndexed()); - assertNotNull(cs.getFillForegroundColorColor().getRgb()); - assertEquals("FFCCFFCC", cs.getFillForegroundColorColor().getARGBHex()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50786-indexed_colours.xlsx"); + XSSFSheet s = wb.getSheetAt(0); + XSSFRow r = s.getRow(2); + + // Check we have the right cell + XSSFCell c = r.getCell(1); + assertEquals("test\u00a0", c.getRichStringCellValue().getString()); + + // It should be light green + XSSFCellStyle cs = c.getCellStyle(); + assertEquals(42, cs.getFillForegroundColor()); + assertEquals(42, cs.getFillForegroundColorColor().getIndexed()); + assertNotNull(cs.getFillForegroundColorColor().getRgb()); + assertEquals("FFCCFFCC", cs.getFillForegroundColorColor().getARGBHex()); } - + /** * If the border colours are set with themes, then we * should still be able to get colours */ @Test public void bug50846() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50846-border_colours.xlsx"); - - XSSFSheet sheet = wb.getSheetAt(0); - XSSFRow row = sheet.getRow(0); - - // Border from a theme, brown - XSSFCell cellT = row.getCell(0); - XSSFCellStyle styleT = cellT.getCellStyle(); - XSSFColor colorT = styleT.getBottomBorderXSSFColor(); - - assertEquals(5, colorT.getTheme()); - assertEquals("FFC0504D", colorT.getARGBHex()); - - // Border from a style direct, red - XSSFCell cellS = row.getCell(1); - XSSFCellStyle styleS = cellS.getCellStyle(); - XSSFColor colorS = styleS.getBottomBorderXSSFColor(); - - assertEquals(0, colorS.getTheme()); - assertEquals("FFFF0000", colorS.getARGBHex()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50846-border_colours.xlsx"); + + XSSFSheet sheet = wb.getSheetAt(0); + XSSFRow row = sheet.getRow(0); + + // Border from a theme, brown + XSSFCell cellT = row.getCell(0); + XSSFCellStyle styleT = cellT.getCellStyle(); + XSSFColor colorT = styleT.getBottomBorderXSSFColor(); + + assertEquals(5, colorT.getTheme()); + assertEquals("FFC0504D", colorT.getARGBHex()); + + // Border from a style direct, red + XSSFCell cellS = row.getCell(1); + XSSFCellStyle styleS = cellS.getCellStyle(); + XSSFColor colorS = styleS.getBottomBorderXSSFColor(); + + assertEquals(0, colorS.getTheme()); + assertEquals("FFFF0000", colorS.getARGBHex()); } - + /** * Fonts where their colours come from the theme rather * then being set explicitly still should allow the @@ -875,28 +891,28 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug50784() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50784-font_theme_colours.xlsx"); - XSSFSheet s = wb.getSheetAt(0); - XSSFRow r = s.getRow(0); - - // Column 1 has a font with regular colours - XSSFCell cr = r.getCell(1); - XSSFFont fr = wb.getFontAt( cr.getCellStyle().getFontIndex() ); - XSSFColor colr = fr.getXSSFColor(); - // No theme, has colours - assertEquals(0, colr.getTheme()); - assertNotNull( colr.getRgb() ); - - // Column 0 has a font with colours from a theme - XSSFCell ct = r.getCell(0); - XSSFFont ft = wb.getFontAt( ct.getCellStyle().getFontIndex() ); - XSSFColor colt = ft.getXSSFColor(); - // Has a theme, which has the colours on it - assertEquals(9, colt.getTheme()); - XSSFColor themeC = wb.getTheme().getThemeColor(colt.getTheme()); - assertNotNull( themeC.getRgb() ); - assertNotNull( colt.getRgb() ); - assertEquals( themeC.getARGBHex(), colt.getARGBHex() ); // The same colour + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50784-font_theme_colours.xlsx"); + XSSFSheet s = wb.getSheetAt(0); + XSSFRow r = s.getRow(0); + + // Column 1 has a font with regular colours + XSSFCell cr = r.getCell(1); + XSSFFont fr = wb.getFontAt( cr.getCellStyle().getFontIndex() ); + XSSFColor colr = fr.getXSSFColor(); + // No theme, has colours + assertEquals(0, colr.getTheme()); + assertNotNull( colr.getRgb() ); + + // Column 0 has a font with colours from a theme + XSSFCell ct = r.getCell(0); + XSSFFont ft = wb.getFontAt( ct.getCellStyle().getFontIndex() ); + XSSFColor colt = ft.getXSSFColor(); + // Has a theme, which has the colours on it + assertEquals(9, colt.getTheme()); + XSSFColor themeC = wb.getTheme().getThemeColor(colt.getTheme()); + assertNotNull( themeC.getRgb() ); + assertNotNull( colt.getRgb() ); + assertEquals( themeC.getARGBHex(), colt.getARGBHex() ); // The same colour } /** @@ -905,232 +921,232 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug48877() throws Exception { - String text = "Use \n with word wrap on to create a new line.\n" + - "This line finishes with two trailing spaces. "; - - XSSFWorkbook wb = new XSSFWorkbook(); - XSSFSheet sheet = wb.createSheet(); + String text = "Use \n with word wrap on to create a new line.\n" + + "This line finishes with two trailing spaces. "; - Font font1 = wb.createFont(); - font1.setColor((short) 20); - Font font2 = wb.createFont(); - font2.setColor(Font.COLOR_RED); - Font font3 = wb.getFontAt((short)0); + XSSFWorkbook wb = new XSSFWorkbook(); + XSSFSheet sheet = wb.createSheet(); - XSSFRow row = sheet.createRow(2); - XSSFCell cell = row.createCell(2); + Font font1 = wb.createFont(); + font1.setColor((short) 20); + Font font2 = wb.createFont(); + font2.setColor(Font.COLOR_RED); + Font font3 = wb.getFontAt((short)0); - XSSFRichTextString richTextString = - wb.getCreationHelper().createRichTextString(text); - - // Check the text has the newline - assertEquals(text, richTextString.getString()); - - // Apply the font - richTextString.applyFont(font3); - richTextString.applyFont(0, 3, font1); - cell.setCellValue(richTextString); - - // To enable newlines you need set a cell styles with wrap=true - CellStyle cs = wb.createCellStyle(); - cs.setWrapText(true); - cell.setCellStyle(cs); - - // Check the text has the - assertEquals(text, cell.getStringCellValue()); - - // Save the file and re-read it - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - sheet = wb.getSheetAt(0); - row = sheet.getRow(2); - cell = row.getCell(2); - assertEquals(text, cell.getStringCellValue()); - - // Now add a 2nd, and check again - int fontAt = text.indexOf("\n", 6); - cell.getRichStringCellValue().applyFont(10, fontAt+1, font2); - assertEquals(text, cell.getStringCellValue()); - - assertEquals(4, cell.getRichStringCellValue().numFormattingRuns()); - assertEquals("Use", cell.getRichStringCellValue().getCTRst().getRArray(0).getT()); - - String r3 = cell.getRichStringCellValue().getCTRst().getRArray(2).getT(); - assertEquals("line.\n", r3.substring(r3.length()-6)); + XSSFRow row = sheet.createRow(2); + XSSFCell cell = row.createCell(2); + + XSSFRichTextString richTextString = + wb.getCreationHelper().createRichTextString(text); + + // Check the text has the newline + assertEquals(text, richTextString.getString()); - // Save and re-check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - sheet = wb.getSheetAt(0); - row = sheet.getRow(2); - cell = row.getCell(2); - assertEquals(text, cell.getStringCellValue()); - wb.close(); + // Apply the font + richTextString.applyFont(font3); + richTextString.applyFont(0, 3, font1); + cell.setCellValue(richTextString); -// FileOutputStream out = new FileOutputStream("/tmp/test48877.xlsx"); -// wb.write(out); -// out.close(); + // To enable newlines you need set a cell styles with wrap=true + CellStyle cs = wb.createCellStyle(); + cs.setWrapText(true); + cell.setCellStyle(cs); + + // Check the text has the + assertEquals(text, cell.getStringCellValue()); + + // Save the file and re-read it + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + sheet = wb.getSheetAt(0); + row = sheet.getRow(2); + cell = row.getCell(2); + assertEquals(text, cell.getStringCellValue()); + + // Now add a 2nd, and check again + int fontAt = text.indexOf("\n", 6); + cell.getRichStringCellValue().applyFont(10, fontAt+1, font2); + assertEquals(text, cell.getStringCellValue()); + + assertEquals(4, cell.getRichStringCellValue().numFormattingRuns()); + assertEquals("Use", cell.getRichStringCellValue().getCTRst().getRArray(0).getT()); + + String r3 = cell.getRichStringCellValue().getCTRst().getRArray(2).getT(); + assertEquals("line.\n", r3.substring(r3.length()-6)); + + // Save and re-check + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + sheet = wb.getSheetAt(0); + row = sheet.getRow(2); + cell = row.getCell(2); + assertEquals(text, cell.getStringCellValue()); + wb.close(); + + // FileOutputStream out = new FileOutputStream("/tmp/test48877.xlsx"); + // wb.write(out); + // out.close(); } - + /** * Adding sheets when one has a table, then re-ordering */ @Test public void bug50867() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50867_with_table.xlsx"); - assertEquals(3, wb.getNumberOfSheets()); - - XSSFSheet s1 = wb.getSheetAt(0); - XSSFSheet s2 = wb.getSheetAt(1); - XSSFSheet s3 = wb.getSheetAt(2); - assertEquals(1, s1.getTables().size()); - assertEquals(0, s2.getTables().size()); - assertEquals(0, s3.getTables().size()); - - XSSFTable t = s1.getTables().get(0); - assertEquals("Tabella1", t.getName()); - assertEquals("Tabella1", t.getDisplayName()); - assertEquals("A1:C3", t.getCTTable().getRef()); - - // Add a sheet and re-order - XSSFSheet s4 = wb.createSheet("NewSheet"); - wb.setSheetOrder(s4.getSheetName(), 0); - - // Check on tables - assertEquals(1, s1.getTables().size()); - assertEquals(0, s2.getTables().size()); - assertEquals(0, s3.getTables().size()); - assertEquals(0, s4.getTables().size()); - - // Refetch to get the new order - s1 = wb.getSheetAt(0); - s2 = wb.getSheetAt(1); - s3 = wb.getSheetAt(2); - s4 = wb.getSheetAt(3); - assertEquals(0, s1.getTables().size()); - assertEquals(1, s2.getTables().size()); - assertEquals(0, s3.getTables().size()); - assertEquals(0, s4.getTables().size()); - - // Save and re-load - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s1 = wb.getSheetAt(0); - s2 = wb.getSheetAt(1); - s3 = wb.getSheetAt(2); - s4 = wb.getSheetAt(3); - assertEquals(0, s1.getTables().size()); - assertEquals(1, s2.getTables().size()); - assertEquals(0, s3.getTables().size()); - assertEquals(0, s4.getTables().size()); - - t = s2.getTables().get(0); - assertEquals("Tabella1", t.getName()); - assertEquals("Tabella1", t.getDisplayName()); - assertEquals("A1:C3", t.getCTTable().getRef()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("50867_with_table.xlsx"); + assertEquals(3, wb.getNumberOfSheets()); - - // Add some more tables, and check - t = s2.createTable(); - t.setName("New 2"); - t.setDisplayName("New 2"); - t = s3.createTable(); - t.setName("New 3"); - t.setDisplayName("New 3"); - - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s1 = wb.getSheetAt(0); - s2 = wb.getSheetAt(1); - s3 = wb.getSheetAt(2); - s4 = wb.getSheetAt(3); - assertEquals(0, s1.getTables().size()); - assertEquals(2, s2.getTables().size()); - assertEquals(1, s3.getTables().size()); - assertEquals(0, s4.getTables().size()); - - t = s2.getTables().get(0); - assertEquals("Tabella1", t.getName()); - assertEquals("Tabella1", t.getDisplayName()); - assertEquals("A1:C3", t.getCTTable().getRef()); - - t = s2.getTables().get(1); - assertEquals("New 2", t.getName()); - assertEquals("New 2", t.getDisplayName()); - - t = s3.getTables().get(0); - assertEquals("New 3", t.getName()); - assertEquals("New 3", t.getDisplayName()); - - // Check the relationships - assertEquals(0, s1.getRelations().size()); - assertEquals(3, s2.getRelations().size()); - assertEquals(1, s3.getRelations().size()); - assertEquals(0, s4.getRelations().size()); - - assertEquals( - XSSFRelation.PRINTER_SETTINGS.getContentType(), - s2.getRelations().get(0).getPackagePart().getContentType() - ); - assertEquals( - XSSFRelation.TABLE.getContentType(), - s2.getRelations().get(1).getPackagePart().getContentType() - ); - assertEquals( - XSSFRelation.TABLE.getContentType(), - s2.getRelations().get(2).getPackagePart().getContentType() - ); - assertEquals( - XSSFRelation.TABLE.getContentType(), - s3.getRelations().get(0).getPackagePart().getContentType() - ); - assertEquals( - "/xl/tables/table3.xml", - s3.getRelations().get(0).getPackagePart().getPartName().toString() - ); + XSSFSheet s1 = wb.getSheetAt(0); + XSSFSheet s2 = wb.getSheetAt(1); + XSSFSheet s3 = wb.getSheetAt(2); + assertEquals(1, s1.getTables().size()); + assertEquals(0, s2.getTables().size()); + assertEquals(0, s3.getTables().size()); + + XSSFTable t = s1.getTables().get(0); + assertEquals("Tabella1", t.getName()); + assertEquals("Tabella1", t.getDisplayName()); + assertEquals("A1:C3", t.getCTTable().getRef()); + + // Add a sheet and re-order + XSSFSheet s4 = wb.createSheet("NewSheet"); + wb.setSheetOrder(s4.getSheetName(), 0); + + // Check on tables + assertEquals(1, s1.getTables().size()); + assertEquals(0, s2.getTables().size()); + assertEquals(0, s3.getTables().size()); + assertEquals(0, s4.getTables().size()); + + // Refetch to get the new order + s1 = wb.getSheetAt(0); + s2 = wb.getSheetAt(1); + s3 = wb.getSheetAt(2); + s4 = wb.getSheetAt(3); + assertEquals(0, s1.getTables().size()); + assertEquals(1, s2.getTables().size()); + assertEquals(0, s3.getTables().size()); + assertEquals(0, s4.getTables().size()); + + // Save and re-load + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + s1 = wb.getSheetAt(0); + s2 = wb.getSheetAt(1); + s3 = wb.getSheetAt(2); + s4 = wb.getSheetAt(3); + assertEquals(0, s1.getTables().size()); + assertEquals(1, s2.getTables().size()); + assertEquals(0, s3.getTables().size()); + assertEquals(0, s4.getTables().size()); + + t = s2.getTables().get(0); + assertEquals("Tabella1", t.getName()); + assertEquals("Tabella1", t.getDisplayName()); + assertEquals("A1:C3", t.getCTTable().getRef()); + + + // Add some more tables, and check + t = s2.createTable(); + t.setName("New 2"); + t.setDisplayName("New 2"); + t = s3.createTable(); + t.setName("New 3"); + t.setDisplayName("New 3"); + + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + s1 = wb.getSheetAt(0); + s2 = wb.getSheetAt(1); + s3 = wb.getSheetAt(2); + s4 = wb.getSheetAt(3); + assertEquals(0, s1.getTables().size()); + assertEquals(2, s2.getTables().size()); + assertEquals(1, s3.getTables().size()); + assertEquals(0, s4.getTables().size()); + + t = s2.getTables().get(0); + assertEquals("Tabella1", t.getName()); + assertEquals("Tabella1", t.getDisplayName()); + assertEquals("A1:C3", t.getCTTable().getRef()); + + t = s2.getTables().get(1); + assertEquals("New 2", t.getName()); + assertEquals("New 2", t.getDisplayName()); + + t = s3.getTables().get(0); + assertEquals("New 3", t.getName()); + assertEquals("New 3", t.getDisplayName()); + + // Check the relationships + assertEquals(0, s1.getRelations().size()); + assertEquals(3, s2.getRelations().size()); + assertEquals(1, s3.getRelations().size()); + assertEquals(0, s4.getRelations().size()); + + assertEquals( + XSSFRelation.PRINTER_SETTINGS.getContentType(), + s2.getRelations().get(0).getPackagePart().getContentType() + ); + assertEquals( + XSSFRelation.TABLE.getContentType(), + s2.getRelations().get(1).getPackagePart().getContentType() + ); + assertEquals( + XSSFRelation.TABLE.getContentType(), + s2.getRelations().get(2).getPackagePart().getContentType() + ); + assertEquals( + XSSFRelation.TABLE.getContentType(), + s3.getRelations().get(0).getPackagePart().getContentType() + ); + assertEquals( + "/xl/tables/table3.xml", + s3.getRelations().get(0).getPackagePart().getPartName().toString() + ); } - + /** * Setting repeating rows and columns shouldn't break * any print settings that were there before */ @SuppressWarnings("deprecation") @Test - public void bug49253() throws Exception { - XSSFWorkbook wb1 = new XSSFWorkbook(); - XSSFWorkbook wb2 = new XSSFWorkbook(); - - // No print settings before repeating - XSSFSheet s1 = wb1.createSheet(); - assertEquals(false, s1.getCTWorksheet().isSetPageSetup()); - assertEquals(true, s1.getCTWorksheet().isSetPageMargins()); - - wb1.setRepeatingRowsAndColumns(0, 2, 3, 1, 2); - - assertEquals(true, s1.getCTWorksheet().isSetPageSetup()); - assertEquals(true, s1.getCTWorksheet().isSetPageMargins()); - - XSSFPrintSetup ps1 = s1.getPrintSetup(); - assertEquals(false, ps1.getValidSettings()); - assertEquals(false, ps1.getLandscape()); - - - // Had valid print settings before repeating - XSSFSheet s2 = wb2.createSheet(); - XSSFPrintSetup ps2 = s2.getPrintSetup(); - assertEquals(true, s2.getCTWorksheet().isSetPageSetup()); - assertEquals(true, s2.getCTWorksheet().isSetPageMargins()); - - ps2.setLandscape(false); - assertEquals(true, ps2.getValidSettings()); - assertEquals(false, ps2.getLandscape()); - - wb2.setRepeatingRowsAndColumns(0, 2, 3, 1, 2); - - ps2 = s2.getPrintSetup(); - assertEquals(true, s2.getCTWorksheet().isSetPageSetup()); - assertEquals(true, s2.getCTWorksheet().isSetPageMargins()); - assertEquals(true, ps2.getValidSettings()); - assertEquals(false, ps2.getLandscape()); - - wb1.close(); - wb2.close(); + public void bug49253() throws Exception { + XSSFWorkbook wb1 = new XSSFWorkbook(); + XSSFWorkbook wb2 = new XSSFWorkbook(); + + // No print settings before repeating + XSSFSheet s1 = wb1.createSheet(); + assertEquals(false, s1.getCTWorksheet().isSetPageSetup()); + assertEquals(true, s1.getCTWorksheet().isSetPageMargins()); + + wb1.setRepeatingRowsAndColumns(0, 2, 3, 1, 2); + + assertEquals(true, s1.getCTWorksheet().isSetPageSetup()); + assertEquals(true, s1.getCTWorksheet().isSetPageMargins()); + + XSSFPrintSetup ps1 = s1.getPrintSetup(); + assertEquals(false, ps1.getValidSettings()); + assertEquals(false, ps1.getLandscape()); + + + // Had valid print settings before repeating + XSSFSheet s2 = wb2.createSheet(); + XSSFPrintSetup ps2 = s2.getPrintSetup(); + assertEquals(true, s2.getCTWorksheet().isSetPageSetup()); + assertEquals(true, s2.getCTWorksheet().isSetPageMargins()); + + ps2.setLandscape(false); + assertEquals(true, ps2.getValidSettings()); + assertEquals(false, ps2.getLandscape()); + + wb2.setRepeatingRowsAndColumns(0, 2, 3, 1, 2); + + ps2 = s2.getPrintSetup(); + assertEquals(true, s2.getCTWorksheet().isSetPageSetup()); + assertEquals(true, s2.getCTWorksheet().isSetPageMargins()); + assertEquals(true, ps2.getValidSettings()); + assertEquals(false, ps2.getLandscape()); + + wb1.close(); + wb2.close(); } /** @@ -1138,140 +1154,140 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Test public void bug51037() throws Exception { - XSSFWorkbook wb = new XSSFWorkbook(); - XSSFSheet s = wb.createSheet(); - - CellStyle defaultStyle = wb.getCellStyleAt((short)0); - assertEquals(0, defaultStyle.getIndex()); - - CellStyle blueStyle = wb.createCellStyle(); - blueStyle.setFillForegroundColor(IndexedColors.AQUA.getIndex()); - blueStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); - assertEquals(1, blueStyle.getIndex()); - - CellStyle pinkStyle = wb.createCellStyle(); - pinkStyle.setFillForegroundColor(IndexedColors.PINK.getIndex()); - pinkStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); - assertEquals(2, pinkStyle.getIndex()); - - // Starts empty - assertEquals(1, s.getCTWorksheet().sizeOfColsArray()); - CTCols cols = s.getCTWorksheet().getColsArray(0); - assertEquals(0, cols.sizeOfColArray()); - - // Add some rows and columns - XSSFRow r1 = s.createRow(0); - XSSFRow r2 = s.createRow(1); - r1.createCell(0); - r1.createCell(2); - r2.createCell(0); - r2.createCell(3); - - // Check no style is there - assertEquals(1, s.getCTWorksheet().sizeOfColsArray()); - assertEquals(0, cols.sizeOfColArray()); - - assertEquals(defaultStyle, s.getColumnStyle(0)); - assertEquals(defaultStyle, s.getColumnStyle(2)); - assertEquals(defaultStyle, s.getColumnStyle(3)); - - - // Apply the styles - s.setDefaultColumnStyle(0, pinkStyle); - s.setDefaultColumnStyle(3, blueStyle); - - // Check - assertEquals(pinkStyle, s.getColumnStyle(0)); - assertEquals(defaultStyle, s.getColumnStyle(2)); - assertEquals(blueStyle, s.getColumnStyle(3)); - - assertEquals(1, s.getCTWorksheet().sizeOfColsArray()); - assertEquals(2, cols.sizeOfColArray()); - - assertEquals(1, cols.getColArray(0).getMin()); - assertEquals(1, cols.getColArray(0).getMax()); - assertEquals(pinkStyle.getIndex(), cols.getColArray(0).getStyle()); - - assertEquals(4, cols.getColArray(1).getMin()); - assertEquals(4, cols.getColArray(1).getMax()); - assertEquals(blueStyle.getIndex(), cols.getColArray(1).getStyle()); - - - // Save, re-load and re-check - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); - defaultStyle = wb.getCellStyleAt(defaultStyle.getIndex()); - blueStyle = wb.getCellStyleAt(blueStyle.getIndex()); - pinkStyle = wb.getCellStyleAt(pinkStyle.getIndex()); - - assertEquals(pinkStyle, s.getColumnStyle(0)); - assertEquals(defaultStyle, s.getColumnStyle(2)); - assertEquals(blueStyle, s.getColumnStyle(3)); - wb.close(); + XSSFWorkbook wb = new XSSFWorkbook(); + XSSFSheet s = wb.createSheet(); + + CellStyle defaultStyle = wb.getCellStyleAt((short)0); + assertEquals(0, defaultStyle.getIndex()); + + CellStyle blueStyle = wb.createCellStyle(); + blueStyle.setFillForegroundColor(IndexedColors.AQUA.getIndex()); + blueStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + assertEquals(1, blueStyle.getIndex()); + + CellStyle pinkStyle = wb.createCellStyle(); + pinkStyle.setFillForegroundColor(IndexedColors.PINK.getIndex()); + pinkStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + assertEquals(2, pinkStyle.getIndex()); + + // Starts empty + assertEquals(1, s.getCTWorksheet().sizeOfColsArray()); + CTCols cols = s.getCTWorksheet().getColsArray(0); + assertEquals(0, cols.sizeOfColArray()); + + // Add some rows and columns + XSSFRow r1 = s.createRow(0); + XSSFRow r2 = s.createRow(1); + r1.createCell(0); + r1.createCell(2); + r2.createCell(0); + r2.createCell(3); + + // Check no style is there + assertEquals(1, s.getCTWorksheet().sizeOfColsArray()); + assertEquals(0, cols.sizeOfColArray()); + + assertEquals(defaultStyle, s.getColumnStyle(0)); + assertEquals(defaultStyle, s.getColumnStyle(2)); + assertEquals(defaultStyle, s.getColumnStyle(3)); + + + // Apply the styles + s.setDefaultColumnStyle(0, pinkStyle); + s.setDefaultColumnStyle(3, blueStyle); + + // Check + assertEquals(pinkStyle, s.getColumnStyle(0)); + assertEquals(defaultStyle, s.getColumnStyle(2)); + assertEquals(blueStyle, s.getColumnStyle(3)); + + assertEquals(1, s.getCTWorksheet().sizeOfColsArray()); + assertEquals(2, cols.sizeOfColArray()); + + assertEquals(1, cols.getColArray(0).getMin()); + assertEquals(1, cols.getColArray(0).getMax()); + assertEquals(pinkStyle.getIndex(), cols.getColArray(0).getStyle()); + + assertEquals(4, cols.getColArray(1).getMin()); + assertEquals(4, cols.getColArray(1).getMax()); + assertEquals(blueStyle.getIndex(), cols.getColArray(1).getStyle()); + + + // Save, re-load and re-check + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + s = wb.getSheetAt(0); + defaultStyle = wb.getCellStyleAt(defaultStyle.getIndex()); + blueStyle = wb.getCellStyleAt(blueStyle.getIndex()); + pinkStyle = wb.getCellStyleAt(pinkStyle.getIndex()); + + assertEquals(pinkStyle, s.getColumnStyle(0)); + assertEquals(defaultStyle, s.getColumnStyle(2)); + assertEquals(blueStyle, s.getColumnStyle(3)); + wb.close(); } - + /** * Repeatedly writing a file. * Something with the SharedStringsTable currently breaks... */ @Test public void bug46662() throws Exception { - // New file - XSSFWorkbook wb = new XSSFWorkbook(); - XSSFTestDataSamples.writeOutAndReadBack(wb); - XSSFTestDataSamples.writeOutAndReadBack(wb); - XSSFTestDataSamples.writeOutAndReadBack(wb); - - // Simple file - wb = XSSFTestDataSamples.openSampleWorkbook("sample.xlsx"); - XSSFTestDataSamples.writeOutAndReadBack(wb); - XSSFTestDataSamples.writeOutAndReadBack(wb); - XSSFTestDataSamples.writeOutAndReadBack(wb); - - // Complex file - // TODO + // New file + XSSFWorkbook wb = new XSSFWorkbook(); + XSSFTestDataSamples.writeOutAndReadBack(wb); + XSSFTestDataSamples.writeOutAndReadBack(wb); + XSSFTestDataSamples.writeOutAndReadBack(wb); + + // Simple file + wb = XSSFTestDataSamples.openSampleWorkbook("sample.xlsx"); + XSSFTestDataSamples.writeOutAndReadBack(wb); + XSSFTestDataSamples.writeOutAndReadBack(wb); + XSSFTestDataSamples.writeOutAndReadBack(wb); + + // Complex file + // TODO } - + /** * Colours and styles when the list has gaps in it */ @Test public void bug51222() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51222.xlsx"); - XSSFSheet s = wb.getSheetAt(0); - - XSSFCell cA4_EEECE1 = s.getRow(3).getCell(0); - XSSFCell cA5_1F497D = s.getRow(4).getCell(0); - - // Check the text - assertEquals("A4", cA4_EEECE1.getRichStringCellValue().getString()); - assertEquals("A5", cA5_1F497D.getRichStringCellValue().getString()); - - // Check the styles assigned to them - assertEquals(4, cA4_EEECE1.getCTCell().getS()); - assertEquals(5, cA5_1F497D.getCTCell().getS()); - - // Check we look up the correct style - assertEquals(4, cA4_EEECE1.getCellStyle().getIndex()); - assertEquals(5, cA5_1F497D.getCellStyle().getIndex()); - - // Check the fills on them at the low level - assertEquals(5, cA4_EEECE1.getCellStyle().getCoreXf().getFillId()); - assertEquals(6, cA5_1F497D.getCellStyle().getCoreXf().getFillId()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51222.xlsx"); + XSSFSheet s = wb.getSheetAt(0); - // These should reference themes 2 and 3 - assertEquals(2, wb.getStylesSource().getFillAt(5).getCTFill().getPatternFill().getFgColor().getTheme()); - assertEquals(3, wb.getStylesSource().getFillAt(6).getCTFill().getPatternFill().getFgColor().getTheme()); - - // Ensure we get the right colours for these themes - // TODO fix -// assertEquals("FFEEECE1", wb.getTheme().getThemeColor(2).getARGBHex()); -// assertEquals("FF1F497D", wb.getTheme().getThemeColor(3).getARGBHex()); - - // Finally check the colours on the styles - // TODO fix -// assertEquals("FFEEECE1", cA4_EEECE1.getCellStyle().getFillForegroundXSSFColor().getARGBHex()); -// assertEquals("FF1F497D", cA5_1F497D.getCellStyle().getFillForegroundXSSFColor().getARGBHex()); + XSSFCell cA4_EEECE1 = s.getRow(3).getCell(0); + XSSFCell cA5_1F497D = s.getRow(4).getCell(0); + + // Check the text + assertEquals("A4", cA4_EEECE1.getRichStringCellValue().getString()); + assertEquals("A5", cA5_1F497D.getRichStringCellValue().getString()); + + // Check the styles assigned to them + assertEquals(4, cA4_EEECE1.getCTCell().getS()); + assertEquals(5, cA5_1F497D.getCTCell().getS()); + + // Check we look up the correct style + assertEquals(4, cA4_EEECE1.getCellStyle().getIndex()); + assertEquals(5, cA5_1F497D.getCellStyle().getIndex()); + + // Check the fills on them at the low level + assertEquals(5, cA4_EEECE1.getCellStyle().getCoreXf().getFillId()); + assertEquals(6, cA5_1F497D.getCellStyle().getCoreXf().getFillId()); + + // These should reference themes 2 and 3 + assertEquals(2, wb.getStylesSource().getFillAt(5).getCTFill().getPatternFill().getFgColor().getTheme()); + assertEquals(3, wb.getStylesSource().getFillAt(6).getCTFill().getPatternFill().getFgColor().getTheme()); + + // Ensure we get the right colours for these themes + // TODO fix + // assertEquals("FFEEECE1", wb.getTheme().getThemeColor(2).getARGBHex()); + // assertEquals("FF1F497D", wb.getTheme().getThemeColor(3).getARGBHex()); + + // Finally check the colours on the styles + // TODO fix + // assertEquals("FFEEECE1", cA4_EEECE1.getCellStyle().getFillForegroundXSSFColor().getARGBHex()); + // assertEquals("FF1F497D", cA5_1F497D.getCellStyle().getFillForegroundXSSFColor().getARGBHex()); } @Test @@ -1286,90 +1302,90 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(rels0.get(0).getPackageRelationship(), rels1.get(0).getPackageRelationship()); } - + /** * Add comments to Sheet 1, when Sheet 2 already has * comments (so /xl/comments1.xml is taken) */ @Test public void bug51850() { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51850.xlsx"); - XSSFSheet sh1 = wb.getSheetAt(0); - XSSFSheet sh2 = wb.getSheetAt(1); - - // Sheet 2 has comments - assertNotNull(sh2.getCommentsTable(false)); - assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments()); - - // Sheet 1 doesn't (yet) - assertNull(sh1.getCommentsTable(false)); - - // Try to add comments to Sheet 1 - CreationHelper factory = wb.getCreationHelper(); - Drawing drawing = sh1.createDrawingPatriarch(); - - ClientAnchor anchor = factory.createClientAnchor(); - anchor.setCol1(0); - anchor.setCol2(4); - anchor.setRow1(0); - anchor.setRow2(1); - - Comment comment1 = drawing.createCellComment(anchor); - comment1.setString( - factory.createRichTextString("I like this cell. It's my favourite.")); - comment1.setAuthor("Bob T. Fish"); - - anchor = factory.createClientAnchor(); - anchor.setCol1(0); - anchor.setCol2(4); - anchor.setRow1(1); - anchor.setRow2(1); - Comment comment2 = drawing.createCellComment(anchor); - comment2.setString( - factory.createRichTextString("This is much less fun...")); - comment2.setAuthor("Bob T. Fish"); - - Cell c1 = sh1.getRow(0).createCell(4); - c1.setCellValue(2.3); - c1.setCellComment(comment1); - - Cell c2 = sh1.getRow(0).createCell(5); - c2.setCellValue(2.1); - c2.setCellComment(comment2); - - - // Save and re-load - wb = XSSFTestDataSamples.writeOutAndReadBack(wb); - sh1 = wb.getSheetAt(0); - sh2 = wb.getSheetAt(1); - - // Check the comments - assertNotNull(sh2.getCommentsTable(false)); - assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments()); - - assertNotNull(sh1.getCommentsTable(false)); - assertEquals(2, sh1.getCommentsTable(false).getNumberOfComments()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51850.xlsx"); + XSSFSheet sh1 = wb.getSheetAt(0); + XSSFSheet sh2 = wb.getSheetAt(1); + + // Sheet 2 has comments + assertNotNull(sh2.getCommentsTable(false)); + assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments()); + + // Sheet 1 doesn't (yet) + assertNull(sh1.getCommentsTable(false)); + + // Try to add comments to Sheet 1 + CreationHelper factory = wb.getCreationHelper(); + Drawing drawing = sh1.createDrawingPatriarch(); + + ClientAnchor anchor = factory.createClientAnchor(); + anchor.setCol1(0); + anchor.setCol2(4); + anchor.setRow1(0); + anchor.setRow2(1); + + Comment comment1 = drawing.createCellComment(anchor); + comment1.setString( + factory.createRichTextString("I like this cell. It's my favourite.")); + comment1.setAuthor("Bob T. Fish"); + + anchor = factory.createClientAnchor(); + anchor.setCol1(0); + anchor.setCol2(4); + anchor.setRow1(1); + anchor.setRow2(1); + Comment comment2 = drawing.createCellComment(anchor); + comment2.setString( + factory.createRichTextString("This is much less fun...")); + comment2.setAuthor("Bob T. Fish"); + + Cell c1 = sh1.getRow(0).createCell(4); + c1.setCellValue(2.3); + c1.setCellComment(comment1); + + Cell c2 = sh1.getRow(0).createCell(5); + c2.setCellValue(2.1); + c2.setCellComment(comment2); + + + // Save and re-load + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + sh1 = wb.getSheetAt(0); + sh2 = wb.getSheetAt(1); + + // Check the comments + assertNotNull(sh2.getCommentsTable(false)); + assertEquals(1, sh2.getCommentsTable(false).getNumberOfComments()); + + assertNotNull(sh1.getCommentsTable(false)); + assertEquals(2, sh1.getCommentsTable(false).getNumberOfComments()); } - + /** * Sheet names with a , in them */ @Test public void bug51963() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51963.xlsx"); - XSSFSheet sheet = wb.getSheetAt(0); - assertEquals("Abc,1", sheet.getSheetName()); - - Name name = wb.getName("Intekon.ProdCodes"); - assertEquals("'Abc,1'!$A$1:$A$2", name.getRefersToFormula()); - - AreaReference ref = new AreaReference(name.getRefersToFormula()); - assertEquals(0, ref.getFirstCell().getRow()); - assertEquals(0, ref.getFirstCell().getCol()); - assertEquals(1, ref.getLastCell().getRow()); - assertEquals(0, ref.getLastCell().getCol()); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51963.xlsx"); + XSSFSheet sheet = wb.getSheetAt(0); + assertEquals("Abc,1", sheet.getSheetName()); + + Name name = wb.getName("Intekon.ProdCodes"); + assertEquals("'Abc,1'!$A$1:$A$2", name.getRefersToFormula()); + + AreaReference ref = new AreaReference(name.getRefersToFormula()); + assertEquals(0, ref.getFirstCell().getRow()); + assertEquals(0, ref.getFirstCell().getCol()); + assertEquals(1, ref.getLastCell().getRow()); + assertEquals(0, ref.getLastCell().getCol()); } - + /** * Sum across multiple workbooks * eg =SUM($Sheet1.C1:$Sheet4.C1) @@ -1377,28 +1393,28 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { */ @Ignore public void bug48703() throws Exception { - XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48703.xlsx"); - XSSFSheet sheet = wb.getSheetAt(0); - - // Contains two forms, one with a range and one a list - XSSFRow r1 = sheet.getRow(0); - XSSFRow r2 = sheet.getRow(1); - XSSFCell c1 = r1.getCell(1); - XSSFCell c2 = r2.getCell(1); - - assertEquals(20.0, c1.getNumericCellValue(), 0); - assertEquals("SUM(Sheet1!C1,Sheet2!C1,Sheet3!C1,Sheet4!C1)", c1.getCellFormula()); - - assertEquals(20.0, c2.getNumericCellValue(), 0); - assertEquals("SUM(Sheet1:Sheet4!C1)", c2.getCellFormula()); - - // Try evaluating both - XSSFFormulaEvaluator eval = new XSSFFormulaEvaluator(wb); - eval.evaluateFormulaCell(c1); - eval.evaluateFormulaCell(c2); - - assertEquals(20.0, c1.getNumericCellValue(), 0); - assertEquals(20.0, c2.getNumericCellValue(), 0); + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("48703.xlsx"); + XSSFSheet sheet = wb.getSheetAt(0); + + // Contains two forms, one with a range and one a list + XSSFRow r1 = sheet.getRow(0); + XSSFRow r2 = sheet.getRow(1); + XSSFCell c1 = r1.getCell(1); + XSSFCell c2 = r2.getCell(1); + + assertEquals(20.0, c1.getNumericCellValue(), 0); + assertEquals("SUM(Sheet1!C1,Sheet2!C1,Sheet3!C1,Sheet4!C1)", c1.getCellFormula()); + + assertEquals(20.0, c2.getNumericCellValue(), 0); + assertEquals("SUM(Sheet1:Sheet4!C1)", c2.getCellFormula()); + + // Try evaluating both + XSSFFormulaEvaluator eval = new XSSFFormulaEvaluator(wb); + eval.evaluateFormulaCell(c1); + eval.evaluateFormulaCell(c2); + + assertEquals(20.0, c1.getNumericCellValue(), 0); + assertEquals(20.0, c2.getNumericCellValue(), 0); } /** |