mirror of https://github.com/apache/poi.git
Fix bug #50795 - Avoid NPE from xmlbeans when moving XSSF Comments from one cell to another
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1072022 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b585dd59a6
commit
51653729ce
|
@ -34,6 +34,7 @@
|
|||
|
||||
<changes>
|
||||
<release version="3.8-beta1" date="2010-??-??">
|
||||
<action dev="poi-developers" type="fix">50795 - Avoid NPE from xmlbeans when moving XSSF Comments from one cell to another</action>
|
||||
<action dev="poi-developers" type="fix">46664 - When creating HSSF Print Areas, ensure the named range is reference based not value based</action>
|
||||
<action dev="poi-developers" type="fix">50756 - When formatting numbers based on their Cell Style, treat GENERAL the same as the more typical General</action>
|
||||
<action dev="poi-developers" type="fix">fixed HSSFWorkbook.createCellStyle to throw exception if the maximum number of cell styles was exceeded</action>
|
||||
|
|
|
@ -116,7 +116,16 @@ public class XSSFComment implements Comment {
|
|||
_comment.setRef(ref.formatAsString());
|
||||
_comments.referenceUpdated(oldRef, _comment);
|
||||
|
||||
if(_vmlShape != null) _vmlShape.getClientDataArray(0).setColumnArray(0, new BigInteger(String.valueOf(col)));
|
||||
if(_vmlShape != null) {
|
||||
_vmlShape.getClientDataArray(0).setColumnArray(
|
||||
new BigInteger[] { new BigInteger(String.valueOf(col)) }
|
||||
);
|
||||
|
||||
// There is a very odd xmlbeans bug when changing the column
|
||||
// arrays which can lead to corrupt pointer
|
||||
// This call seems to fix them again... See bug #50795
|
||||
_vmlShape.getClientDataList().toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -620,4 +620,56 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
|
|||
assertEquals("SUM(\n1,2\n)", c.getCellFormula());
|
||||
assertEquals(3.0, c.getNumericCellValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* Moving a cell comment from one cell to another
|
||||
*/
|
||||
public void test50795() throws Exception {
|
||||
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());
|
||||
|
||||
|
||||
// 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());
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue