Bug 53965: Fixed XmlValueOutOfRangeExceptio calling getDataValidations for custom validations with XSSFSheet
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1396650 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
299ca1472b
commit
82e268acf3
@ -34,6 +34,7 @@
|
||||
|
||||
<changes>
|
||||
<release version="3.9-beta1" date="2012-??-??">
|
||||
<action dev="poi-developers" type="fix">53965 - Fixed XmlValueOutOfRangeExceptio calling getDataValidations for custom validations with XSSFSheet </action>
|
||||
<action dev="poi-developers" type="fix">53974 - Avoid NPE when constructing HSSFWorbook on Google App Engine</action>
|
||||
<action dev="poi-developers" type="fix">53568 - Fixed null returned by XSSFPicture.getPictureData()</action>
|
||||
<action dev="poi-developers" type="fix">53950 - fixed setForceFormulaRecalculation to reset workbook-level "manual" flag</action>
|
||||
|
@ -26,6 +26,7 @@ import org.apache.poi.ss.usermodel.DataValidationConstraint.ValidationType;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.poi.ss.util.CellRangeAddressList;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDataValidation;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STDataValidationOperator;
|
||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STDataValidationType;
|
||||
|
||||
/**
|
||||
@ -146,7 +147,10 @@ public class XSSFDataValidationHelper implements DataValidationHelper {
|
||||
}
|
||||
|
||||
if (validationType!=ValidationType.ANY && validationType!=ValidationType.LIST) {
|
||||
newDataValidation.setOperator(XSSFDataValidation.operatorTypeMappings.get(constraint.getOperator()));
|
||||
STDataValidationOperator.Enum op = XSSFDataValidation.operatorTypeMappings.get(constraint.getOperator());
|
||||
if(op != null) {
|
||||
newDataValidation.setOperator(op);
|
||||
}
|
||||
if (constraint.getFormula1() != null) {
|
||||
newDataValidation.setFormula1(constraint.getFormula1());
|
||||
}
|
||||
|
@ -16,6 +16,7 @@
|
||||
==================================================================== */
|
||||
package org.apache.poi.xssf.usermodel;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
@ -239,4 +240,25 @@ public class TestXSSFDataValidation extends BaseTestDataValidation {
|
||||
validation.createPromptBox("Prompt", "Enter some value");
|
||||
validation.setSuppressDropDownArrow(yesNo);
|
||||
}
|
||||
|
||||
public void test53965() throws Exception {
|
||||
|
||||
XSSFWorkbook wb = new XSSFWorkbook();
|
||||
XSSFSheet sheet = wb.createSheet();
|
||||
List<XSSFDataValidation> lst = sheet.getDataValidations(); //<-- works
|
||||
assertEquals(0, lst.size());
|
||||
|
||||
//create the cell that will have the validation applied
|
||||
sheet.createRow(0).createCell(0);
|
||||
|
||||
DataValidationHelper dataValidationHelper = sheet.getDataValidationHelper();
|
||||
DataValidationConstraint constraint = dataValidationHelper.createCustomConstraint("SUM($A$1:$A$1) <= 3500");
|
||||
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
|
||||
DataValidation validation = dataValidationHelper.createValidation(constraint, addressList);
|
||||
sheet.addValidationData(validation);
|
||||
|
||||
// this line caused XmlValueOutOfRangeException , see Bugzilla 3965
|
||||
lst = sheet.getDataValidations();
|
||||
assertEquals(1, lst.size());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user