aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache/poi/hssf
diff options
context:
space:
mode:
authorDominik Stadler <centic@apache.org>2014-10-06 13:20:12 +0000
committerDominik Stadler <centic@apache.org>2014-10-06 13:20:12 +0000
commit5f4551da69cdc956a8c4d516809071f1ffe9452a (patch)
treecd0bfd5a5ea1d164256212a36f9fc2882c4e9744 /src/testcases/org/apache/poi/hssf
parent9fbea88af267c442ef74cb116f0b094fe07fb0af (diff)
downloadpoi-5f4551da69cdc956a8c4d516809071f1ffe9452a.tar.gz
poi-5f4551da69cdc956a8c4d516809071f1ffe9452a.zip
Print out current version of java before building to allow to see in build output if we use a supported Java VM version
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1629644 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org/apache/poi/hssf')
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java180
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestComment.java161
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java79
3 files changed, 343 insertions, 77 deletions
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java
index bd874629f8..93bdcd37bc 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestCellStyle.java
@@ -26,6 +26,7 @@ import java.util.Date;
import junit.framework.TestCase;
import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.dev.BiffViewer;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
@@ -126,7 +127,7 @@ public final class TestCellStyle extends TestCase {
assertEquals("LAST ROW ", 0, s.getLastRowNum());
assertEquals("FIRST ROW ", 0, s.getFirstRowNum());
}
-
+
public void testHashEquals() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
@@ -135,21 +136,21 @@ public final class TestCellStyle extends TestCase {
HSSFRow row = s.createRow(0);
HSSFCell cell1 = row.createCell(1);
HSSFCell cell2 = row.createCell(2);
-
+
cs1.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
cs2.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/dd/yy"));
-
+
cell1.setCellStyle(cs1);
cell1.setCellValue(new Date());
-
+
cell2.setCellStyle(cs2);
cell2.setCellValue(new Date());
-
+
assertEquals(cs1.hashCode(), cs1.hashCode());
assertEquals(cs2.hashCode(), cs2.hashCode());
assertTrue(cs1.equals(cs1));
assertTrue(cs2.equals(cs2));
-
+
// Change cs1, hash will alter
int hash1 = cs1.hashCode();
cs1.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/dd/yy"));
@@ -210,7 +211,7 @@ public final class TestCellStyle extends TestCase {
assertEquals("LAST ROW == 99", 99, s.getLastRowNum());
assertEquals("FIRST ROW == 0", 0, s.getFirstRowNum());
}
-
+
/**
* Cloning one HSSFCellStyle onto Another, same
* HSSFWorkbook
@@ -220,63 +221,63 @@ public final class TestCellStyle extends TestCase {
HSSFFont fnt = wb.createFont();
fnt.setFontName("TestingFont");
assertEquals(5, wb.getNumberOfFonts());
-
+
HSSFCellStyle orig = wb.createCellStyle();
orig.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
orig.setFont(fnt);
orig.setDataFormat((short)18);
-
+
assertTrue(HSSFCellStyle.ALIGN_RIGHT == orig.getAlignment());
assertTrue(fnt == orig.getFont(wb));
assertTrue(18 == orig.getDataFormat());
-
+
HSSFCellStyle clone = wb.createCellStyle();
assertFalse(HSSFCellStyle.ALIGN_RIGHT == clone.getAlignment());
assertFalse(fnt == clone.getFont(wb));
assertFalse(18 == clone.getDataFormat());
-
+
clone.cloneStyleFrom(orig);
assertTrue(HSSFCellStyle.ALIGN_RIGHT == clone.getAlignment());
assertTrue(fnt == clone.getFont(wb));
assertTrue(18 == clone.getDataFormat());
assertEquals(5, wb.getNumberOfFonts());
}
-
+
/**
* Cloning one HSSFCellStyle onto Another, across
* two different HSSFWorkbooks
*/
public void testCloneStyleDiffWB() {
HSSFWorkbook wbOrig = new HSSFWorkbook();
-
+
HSSFFont fnt = wbOrig.createFont();
fnt.setFontName("TestingFont");
assertEquals(5, wbOrig.getNumberOfFonts());
-
+
HSSFDataFormat fmt = wbOrig.createDataFormat();
fmt.getFormat("MadeUpOne");
fmt.getFormat("MadeUpTwo");
-
+
HSSFCellStyle orig = wbOrig.createCellStyle();
orig.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
orig.setFont(fnt);
orig.setDataFormat(fmt.getFormat("Test##"));
-
+
assertTrue(HSSFCellStyle.ALIGN_RIGHT == orig.getAlignment());
assertTrue(fnt == orig.getFont(wbOrig));
assertTrue(fmt.getFormat("Test##") == orig.getDataFormat());
-
+
// Now a style on another workbook
HSSFWorkbook wbClone = new HSSFWorkbook();
assertEquals(4, wbClone.getNumberOfFonts());
HSSFDataFormat fmtClone = wbClone.createDataFormat();
-
+
HSSFCellStyle clone = wbClone.createCellStyle();
assertEquals(4, wbClone.getNumberOfFonts());
-
+
assertFalse(HSSFCellStyle.ALIGN_RIGHT == clone.getAlignment());
assertFalse("TestingFont" == clone.getFont(wbClone).getFontName());
-
+
clone.cloneStyleFrom(orig);
assertTrue(HSSFCellStyle.ALIGN_RIGHT == clone.getAlignment());
assertTrue("TestingFont" == clone.getFont(wbClone).getFontName());
@@ -284,47 +285,47 @@ public final class TestCellStyle extends TestCase {
assertFalse(fmtClone.getFormat("Test##") == fmt.getFormat("Test##"));
assertEquals(5, wbClone.getNumberOfFonts());
}
-
+
public void testStyleNames() {
HSSFWorkbook wb = openSample("WithExtendedStyles.xls");
HSSFSheet s = wb.getSheetAt(0);
HSSFCell c1 = s.getRow(0).getCell(0);
HSSFCell c2 = s.getRow(1).getCell(0);
HSSFCell c3 = s.getRow(2).getCell(0);
-
+
HSSFCellStyle cs1 = c1.getCellStyle();
HSSFCellStyle cs2 = c2.getCellStyle();
HSSFCellStyle cs3 = c3.getCellStyle();
-
+
assertNotNull(cs1);
assertNotNull(cs2);
assertNotNull(cs3);
-
+
// Check we got the styles we'd expect
assertEquals(10, cs1.getFont(wb).getFontHeightInPoints());
assertEquals(9, cs2.getFont(wb).getFontHeightInPoints());
assertEquals(12, cs3.getFont(wb).getFontHeightInPoints());
-
+
assertEquals(15, cs1.getIndex());
assertEquals(23, cs2.getIndex());
assertEquals(24, cs3.getIndex());
-
+
assertNull(cs1.getParentStyle());
assertNotNull(cs2.getParentStyle());
assertNotNull(cs3.getParentStyle());
-
+
assertEquals(21, cs2.getParentStyle().getIndex());
assertEquals(22, cs3.getParentStyle().getIndex());
-
- // Now check we can get style records for
+
+ // Now check we can get style records for
// the parent ones
assertNull(wb.getWorkbook().getStyleRecord(15));
assertNull(wb.getWorkbook().getStyleRecord(23));
assertNull(wb.getWorkbook().getStyleRecord(24));
-
+
assertNotNull(wb.getWorkbook().getStyleRecord(21));
assertNotNull(wb.getWorkbook().getStyleRecord(22));
-
+
// Now check the style names
assertEquals(null, cs1.getUserStyleName());
assertEquals(null, cs2.getUserStyleName());
@@ -337,47 +338,112 @@ public final class TestCellStyle extends TestCase {
c4.setCellStyle(cs2);
assertEquals("style1", c4.getCellStyle().getParentStyle().getUserStyleName());
}
-
+
public void testGetSetBorderHair() {
HSSFWorkbook wb = openSample("55341_CellStyleBorder.xls");
HSSFSheet s = wb.getSheetAt(0);
HSSFCellStyle cs;
- cs = s.getRow(0).getCell(0).getCellStyle();
- assertEquals(CellStyle.BORDER_HAIR, cs.getBorderRight());
+ cs = s.getRow(0).getCell(0).getCellStyle();
+ assertEquals(CellStyle.BORDER_HAIR, cs.getBorderRight());
- cs = s.getRow(1).getCell(1).getCellStyle();
- assertEquals(CellStyle.BORDER_DOTTED, cs.getBorderRight());
+ cs = s.getRow(1).getCell(1).getCellStyle();
+ assertEquals(CellStyle.BORDER_DOTTED, cs.getBorderRight());
- cs = s.getRow(2).getCell(2).getCellStyle();
- assertEquals(CellStyle.BORDER_DASH_DOT_DOT, cs.getBorderRight());
+ cs = s.getRow(2).getCell(2).getCellStyle();
+ assertEquals(CellStyle.BORDER_DASH_DOT_DOT, cs.getBorderRight());
- cs = s.getRow(3).getCell(3).getCellStyle();
- assertEquals(CellStyle.BORDER_DASHED, cs.getBorderRight());
+ cs = s.getRow(3).getCell(3).getCellStyle();
+ assertEquals(CellStyle.BORDER_DASHED, cs.getBorderRight());
- cs = s.getRow(4).getCell(4).getCellStyle();
- assertEquals(CellStyle.BORDER_THIN, cs.getBorderRight());
+ cs = s.getRow(4).getCell(4).getCellStyle();
+ assertEquals(CellStyle.BORDER_THIN, cs.getBorderRight());
- cs = s.getRow(5).getCell(5).getCellStyle();
- assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT_DOT, cs.getBorderRight());
+ cs = s.getRow(5).getCell(5).getCellStyle();
+ assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT_DOT, cs.getBorderRight());
- cs = s.getRow(6).getCell(6).getCellStyle();
- assertEquals(CellStyle.BORDER_SLANTED_DASH_DOT, cs.getBorderRight());
+ cs = s.getRow(6).getCell(6).getCellStyle();
+ assertEquals(CellStyle.BORDER_SLANTED_DASH_DOT, cs.getBorderRight());
- cs = s.getRow(7).getCell(7).getCellStyle();
- assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT, cs.getBorderRight());
+ cs = s.getRow(7).getCell(7).getCellStyle();
+ assertEquals(CellStyle.BORDER_MEDIUM_DASH_DOT, cs.getBorderRight());
- cs = s.getRow(8).getCell(8).getCellStyle();
- assertEquals(CellStyle.BORDER_MEDIUM_DASHED, cs.getBorderRight());
+ cs = s.getRow(8).getCell(8).getCellStyle();
+ assertEquals(CellStyle.BORDER_MEDIUM_DASHED, cs.getBorderRight());
- cs = s.getRow(9).getCell(9).getCellStyle();
- assertEquals(CellStyle.BORDER_MEDIUM, cs.getBorderRight());
+ cs = s.getRow(9).getCell(9).getCellStyle();
+ assertEquals(CellStyle.BORDER_MEDIUM, cs.getBorderRight());
- cs = s.getRow(10).getCell(10).getCellStyle();
- assertEquals(CellStyle.BORDER_THICK, cs.getBorderRight());
+ cs = s.getRow(10).getCell(10).getCellStyle();
+ assertEquals(CellStyle.BORDER_THICK, cs.getBorderRight());
- cs = s.getRow(11).getCell(11).getCellStyle();
- assertEquals(CellStyle.BORDER_DOUBLE, cs.getBorderRight());
+ cs = s.getRow(11).getCell(11).getCellStyle();
+ assertEquals(CellStyle.BORDER_DOUBLE, cs.getBorderRight());
+ }
+
+ public void testBug54894() throws IOException {
+ HSSFWorkbook wb = new HSSFWorkbook();
+ HSSFSheet sheet = wb.createSheet("new sheet");
+
+ // Create a row and put some cells in it. Rows are 0 based.
+ HSSFRow row = sheet.createRow(1);
+
+ // Create a cell and put a value in it.
+ HSSFCell cell = row.createCell(1);
+ cell.setCellValue(4);
+
+ CellStyle def = cell.getCellStyle();
+
+ String filenameB = "C:\\temp\\54894B.xls";
+ FileOutputStream fileOut = new FileOutputStream(filenameB);
+ try {
+ wb.write(fileOut);
+ } finally {
+ fileOut.close();
+ }
+
+ // Style the cell with borders all around.
+ HSSFCellStyle style = wb.createCellStyle();
+ style.cloneStyleFrom(def);
+
+ String filenameM = "C:\\temp\\54894M.xls";
+ fileOut = new FileOutputStream(filenameM);
+ try {
+ wb.write(fileOut);
+ } finally {
+ fileOut.close();
+ }
+
+ style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
+
+ cell.setCellStyle(style);
+
+ String filenameM1 = "C:\\temp\\54894M1.xls";
+ fileOut = new FileOutputStream(filenameM1);
+ try {
+ wb.write(fileOut);
+ } finally {
+ fileOut.close();
+ }
+
+ // Write the output to a file
+ String filename = "C:\\temp\\54894.xls";
+ fileOut = new FileOutputStream(filename);
+ try {
+ wb.write(fileOut);
+ } finally {
+ fileOut.close();
+ }
+
+ /*Runtime.getRuntime().exec(new String[] {"cmd", "/c", "start", filenameB});
+ Runtime.getRuntime().exec(new String[] {"cmd", "/c", "start", filenameM});
+ Runtime.getRuntime().exec(new String[] {"cmd", "/c", "start", filenameM1});
+ Runtime.getRuntime().exec(new String[] {"cmd", "/c", "start", filename});*/
+
+ System.out.println("testfile M");
+ BiffViewer.main(new String[] {filenameM});
+ System.out.println("testfile M1");
+ BiffViewer.main(new String[] {filenameM1});
}
public void testShrinkToFit() {
@@ -449,7 +515,7 @@ public final class TestCellStyle extends TestCase {
public Throwable getException() {
return exception;
}
- };
+ }
public void test56563() throws Throwable {
CellFormatBugExample threadA = new CellFormatBugExample("56563a.xls");
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java b/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java
index cac444baef..7db79d848b 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestComment.java
@@ -17,20 +17,37 @@
package org.apache.poi.hssf.usermodel;
+import static org.junit.Assert.assertArrayEquals;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+
import junit.framework.TestCase;
-import org.apache.poi.ddf.EscherSpRecord;
+
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.model.CommentShape;
import org.apache.poi.hssf.model.HSSFTestModelHelper;
-import org.apache.poi.hssf.record.*;
-
-import java.io.*;
-import java.util.Arrays;
+import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
+import org.apache.poi.hssf.record.EscherAggregate;
+import org.apache.poi.hssf.record.NoteRecord;
+import org.apache.poi.hssf.record.ObjRecord;
+import org.apache.poi.hssf.record.TextObjectRecord;
+import org.apache.poi.ss.usermodel.Cell;
+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.Drawing;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
/**
* @author Evgeniy Berlog
* @date 26.06.12
*/
+@SuppressWarnings("deprecation")
public class TestComment extends TestCase {
public void testResultEqualsToAbstractShape() {
@@ -53,25 +70,25 @@ public class TestComment extends TestCase {
byte[] actual = comment.getEscherContainer().getChild(0).serialize();
assertEquals(expected.length, actual.length);
- assertTrue(Arrays.equals(expected, actual));
+ assertArrayEquals(expected, actual);
expected = commentShape.getSpContainer().getChild(2).serialize();
actual = comment.getEscherContainer().getChild(2).serialize();
assertEquals(expected.length, actual.length);
- assertTrue(Arrays.equals(expected, actual));
+ assertArrayEquals(expected, actual);
expected = commentShape.getSpContainer().getChild(3).serialize();
actual = comment.getEscherContainer().getChild(3).serialize();
assertEquals(expected.length, actual.length);
- assertTrue(Arrays.equals(expected, actual));
+ assertArrayEquals(expected, actual);
expected = commentShape.getSpContainer().getChild(4).serialize();
actual = comment.getEscherContainer().getChild(4).serialize();
assertEquals(expected.length, actual.length);
- assertTrue(Arrays.equals(expected, actual));
+ assertArrayEquals(expected, actual);
ObjRecord obj = comment.getObjRecord();
ObjRecord objShape = commentShape.getObjRecord();
@@ -88,7 +105,7 @@ public class TestComment extends TestCase {
actual = torShape.serialize();
assertEquals(expected.length, actual.length);
- assertTrue(Arrays.equals(expected, actual));
+ assertArrayEquals(expected, actual);
NoteRecord note = comment.getNoteRecord();
NoteRecord noteShape = commentShape.getNoteRecord();
@@ -98,7 +115,10 @@ public class TestComment extends TestCase {
actual = noteShape.serialize();
assertEquals(expected.length, actual.length);
- assertTrue(Arrays.equals(expected, actual));
+ assertTrue(
+ "\nHad: " + Arrays.toString(actual) +
+ "\n Expected: " + Arrays.toString(expected),
+ Arrays.equals(expected, actual));
}
public void testAddToExistingFile() {
@@ -240,6 +260,7 @@ public class TestComment extends TestCase {
assertEquals(agg.getTailRecords().size(), 1);
HSSFSimpleShape shape = patriarch.createSimpleShape(new HSSFClientAnchor());
+ assertNotNull(shape);
assertEquals(comment.getOptRecord().getEscherProperties().size(), 10);
}
@@ -260,12 +281,12 @@ public class TestComment extends TestCase {
assertEquals(comment.getShapeId(), 2024);
- CommonObjectDataSubRecord cod = (CommonObjectDataSubRecord) comment.getObjRecord().getSubRecords().get(0);
- assertEquals(cod.getObjectId(), 1000);
+ /*CommonObjectDataSubRecord cod = (CommonObjectDataSubRecord) comment.getObjRecord().getSubRecords().get(0);
+ assertEquals(2024, cod.getObjectId());
EscherSpRecord spRecord = (EscherSpRecord) comment.getEscherContainer().getChild(0);
assertEquals(spRecord.getShapeId(), 2024);
assertEquals(comment.getShapeId(), 2024);
- assertEquals(comment.getNoteRecord().getShapeId(), 1000);
+ assertEquals(2024, comment.getNoteRecord().getShapeId());*/
}
public void testAttemptToSave2CommentsWithSameCoordinates(){
@@ -285,4 +306,116 @@ public class TestComment extends TestCase {
}
assertNotNull(err);
}
+
+
+ public void testBug56380InsertComments() throws Exception {
+ HSSFWorkbook workbook = new HSSFWorkbook();
+ HSSFSheet sheet = workbook.createSheet();
+ Drawing drawing = sheet.createDrawingPatriarch();
+ int noOfRows = 3000;
+ String comment = "c";
+
+ for(int i = 0; i < noOfRows; i++) {
+ Row row = sheet.createRow(i);
+ Cell cell = row.createCell(0);
+ insertComment(drawing, cell, comment + i);
+ }
+
+ // assert that the comments are created properly before writing
+ checkComments(sheet, noOfRows, comment);
+
+ System.out.println("Listing comments before write");
+ listComments(sheet.getDrawingPatriarch());
+
+ assertEquals(noOfRows, sheet.getDrawingPatriarch().getChildren().size());
+
+ // store in temp-file
+ File file = new File(System.getProperty("java.io.tmpdir") + File.separatorChar + "test_comments.xls");
+ FileOutputStream fs = new FileOutputStream(file);
+ try {
+ sheet.getWorkbook().write(fs);
+ } finally {
+ fs.close();
+ }
+
+ // save and recreate the workbook from the saved file
+ workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook);
+ sheet = workbook.getSheetAt(0);
+
+ // recreate the workbook from the saved file
+ /*FileInputStream fi = new FileInputStream(file);
+ try {
+ sheet = new HSSFWorkbook(fi).getSheetAt(0);
+ } finally {
+ fi.close();
+ }*/
+
+ System.out.println("Listing comments after read");
+ listComments(sheet.getDrawingPatriarch());
+
+ assertEquals(noOfRows, sheet.getDrawingPatriarch().getChildren().size());
+
+ // store file after
+ file = new File(System.getProperty("java.io.tmpdir") + File.separatorChar + "test_comments_after.xls");
+ fs = new FileOutputStream(file);
+ try {
+ sheet.getWorkbook().write(fs);
+ } finally {
+ fs.close();
+ }
+
+ // assert that the comments are created properly after reading back in
+ //checkComments(sheet, noOfRows, comment);
+ }
+
+ private void listComments(HSSFShapeContainer container) {
+ for (Object object : container.getChildren()) {
+ HSSFShape shape = (HSSFShape) object;
+ if (shape instanceof HSSFShapeGroup) {
+ listComments((HSSFShapeContainer) shape);
+ continue;
+ }
+ if (shape instanceof HSSFComment) {
+ HSSFComment comment = (HSSFComment) shape;
+ System.out.println("Comment " + comment.getString().getString() + " at " + comment.getColumn() + "/" + comment.getRow());
+ }
+ }
+ }
+
+ private void checkComments(Sheet sheet, int noOfRows, String commentStr) {
+ for(int i = 0; i < noOfRows; i++) {
+ assertNotNull(sheet.getRow(i));
+ Cell cell = sheet.getRow(i).getCell(0);
+ assertNotNull(cell);
+ Comment comment = cell.getCellComment();
+ assertNotNull("Did not get a Cell Comment for row " + i, comment);
+ assertNotNull(comment.getString());
+
+ assertEquals(i, comment.getRow());
+ assertEquals(0,comment.getColumn());
+
+ assertEquals(commentStr + i, comment.getString().getString());
+ }
+ }
+
+ private void insertComment(Drawing drawing, Cell cell, String message) {
+ CreationHelper factory = cell.getSheet().getWorkbook().getCreationHelper();
+
+ ClientAnchor anchor = factory.createClientAnchor();
+ anchor.setCol1(cell.getColumnIndex());
+ anchor.setCol2(cell.getColumnIndex() + 1);
+ anchor.setRow1(cell.getRowIndex());
+ anchor.setRow2(cell.getRowIndex() + 1);
+ anchor.setDx1(100);
+ anchor.setDx2(100);
+ anchor.setDy1(100);
+ anchor.setDy2(100);
+
+ Comment comment = drawing.createCellComment(anchor);
+
+ RichTextString str = factory.createRichTextString(message);
+ comment.setString(str);
+ comment.setAuthor("fanfy");
+ cell.setCellComment(comment);
+ }
}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
index a37751dec3..70e04f6362 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
@@ -17,12 +17,7 @@
package org.apache.poi.hssf.usermodel;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.Assert.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -55,8 +50,13 @@ import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.formula.ptg.Area3DPtg;
import org.apache.poi.ss.usermodel.BaseTestWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.FormulaEvaluator;
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.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellUtil;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.TempFile;
import org.junit.Test;
@@ -1070,4 +1070,71 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
private void expectName(HSSFWorkbook wb, String name, String expect) {
assertEquals(expect, wb.getName(name).getRefersToFormula());
}
+
+ @Test
+ public void test55747() throws IOException {
+ HSSFWorkbook wb = new HSSFWorkbook();
+ Sheet sheet =wb.createSheet("Test1");
+ Row row =sheet.createRow(0);
+ CellUtil.createCell(row, 0, "Hello world.");
+ row = sheet.createRow(1);
+ Cell cell = row.createCell(0);
+ cell.setCellType(Cell.CELL_TYPE_FORMULA);
+ cell.setCellFormula("IF(ISBLANK(A1),\" not blank a1\",CONCATENATE(A1,\" - %%s.\"))");
+
+ Cell cell2 = row.createCell(1);
+ cell2.setCellType(Cell.CELL_TYPE_FORMULA);
+ cell2.setCellFormula("CONCATENATE(A1,\" - %%s.\")");
+
+ Cell cell3 = row.createCell(2);
+ cell3.setCellType(Cell.CELL_TYPE_FORMULA);
+ cell3.setCellFormula("ISBLANK(A1)");
+
+ wb.setForceFormulaRecalculation(true);
+
+ FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
+ for(int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) {
+ sheet = wb.getSheetAt(sheetNum);
+ for(Row r : sheet) {
+ for(Cell c : r) {
+ if(c.getCellType() == Cell.CELL_TYPE_FORMULA) {
+ evaluator.evaluateFormulaCell(c);
+ }
+ }
+ }
+ }
+
+ cell = row.getCell(0);
+ assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType());
+ assertEquals("IF(ISBLANK(A1),\" not blank a1\",CONCATENATE(A1,\" - %%s.\"))", cell.getCellFormula());
+ assertEquals("Hello world. - %%s.", cell.getStringCellValue());
+
+ cell2 = row.getCell(1);
+ assertEquals(Cell.CELL_TYPE_FORMULA, cell2.getCellType());
+ assertEquals("CONCATENATE(A1,\" - %%s.\")", cell2.getCellFormula());
+ assertEquals("Hello world. - %%s.", cell2.getStringCellValue());
+
+ FileOutputStream stream = new FileOutputStream( "C:/temp/55747.xls");
+ try {
+ wb.write(stream);
+ } finally {
+ stream.close();
+ }
+
+ HSSFWorkbook wbBack = HSSFTestDataSamples.writeOutAndReadBack(wb);
+ Sheet sheetBack = wb.getSheetAt(0);
+ Row rowBack = sheetBack.getRow(1);
+
+ cell = rowBack.getCell(0);
+ assertEquals(Cell.CELL_TYPE_FORMULA, cell.getCellType());
+ assertEquals("IF(ISBLANK(A1),\" not blank a1\",CONCATENATE(A1,\" - %%s.\"))", cell.getCellFormula());
+ assertEquals("Hello world. - %%s.", cell.getStringCellValue());
+
+ cell2 = rowBack.getCell(1);
+ assertEquals(Cell.CELL_TYPE_FORMULA, cell2.getCellType());
+ assertEquals("CONCATENATE(A1,\" - %%s.\")", cell2.getCellFormula());
+ assertEquals("Hello world. - %%s.", cell2.getStringCellValue());
+ wbBack.close();
+ wb.close();
+ }
}