git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1072022 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_8_BETA1
<changes> | <changes> | ||||
<release version="3.8-beta1" date="2010-??-??"> | <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">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">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> | <action dev="poi-developers" type="fix">fixed HSSFWorkbook.createCellStyle to throw exception if the maximum number of cell styles was exceeded</action> |
_comment.setRef(ref.formatAsString()); | _comment.setRef(ref.formatAsString()); | ||||
_comments.referenceUpdated(oldRef, _comment); | _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(); | |||||
} | |||||
} | } | ||||
/** | /** |
assertEquals("SUM(\n1,2\n)", c.getCellFormula()); | assertEquals("SUM(\n1,2\n)", c.getCellFormula()); | ||||
assertEquals(3.0, c.getNumericCellValue()); | 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()); | |||||
} | |||||
} | } |