123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- /**
- *
- */
- package org.apache.poi.xssf.usermodel;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import org.apache.poi.ss.usermodel.DataValidation;
- import org.apache.poi.ss.usermodel.DataValidationConstraint;
- import org.apache.poi.ss.usermodel.DataValidationHelper;
- 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.STDataValidationType;
-
- /**
- * @author <a href="rjankiraman@emptoris.com">Radhakrishnan J</a>
- *
- */
- public class XSSFDataValidationHelper implements DataValidationHelper {
- private XSSFSheet xssfSheet;
-
-
- public XSSFDataValidationHelper(XSSFSheet xssfSheet) {
- super();
- this.xssfSheet = xssfSheet;
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createDateConstraint(int, java.lang.String, java.lang.String, java.lang.String)
- */
- public DataValidationConstraint createDateConstraint(int operatorType, String formula1, String formula2, String dateFormat) {
- return new XSSFDataValidationConstraint(ValidationType.DATE, operatorType,formula1, formula2);
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createDecimalConstraint(int, java.lang.String, java.lang.String)
- */
- public DataValidationConstraint createDecimalConstraint(int operatorType, String formula1, String formula2) {
- return new XSSFDataValidationConstraint(ValidationType.DECIMAL, operatorType,formula1, formula2);
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createExplicitListConstraint(java.lang.String[])
- */
- public DataValidationConstraint createExplicitListConstraint(String[] listOfValues) {
- return new XSSFDataValidationConstraint(listOfValues);
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createFormulaListConstraint(java.lang.String)
- */
- public DataValidationConstraint createFormulaListConstraint(String listFormula) {
- return new XSSFDataValidationConstraint(ValidationType.LIST, listFormula);
- }
-
-
-
- public DataValidationConstraint createNumericConstraint(int validationType, int operatorType, String formula1, String formula2) {
- if( validationType==ValidationType.INTEGER) {
- return createIntegerConstraint(operatorType, formula1, formula2);
- } else if ( validationType==ValidationType.DECIMAL) {
- return createDecimalConstraint(operatorType, formula1, formula2);
- } else if ( validationType==ValidationType.TEXT_LENGTH) {
- return createTextLengthConstraint(operatorType, formula1, formula2);
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createIntegerConstraint(int, java.lang.String, java.lang.String)
- */
- public DataValidationConstraint createIntegerConstraint(int operatorType, String formula1, String formula2) {
- return new XSSFDataValidationConstraint(ValidationType.INTEGER, operatorType,formula1,formula2);
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createTextLengthConstraint(int, java.lang.String, java.lang.String)
- */
- public DataValidationConstraint createTextLengthConstraint(int operatorType, String formula1, String formula2) {
- return new XSSFDataValidationConstraint(ValidationType.TEXT_LENGTH, operatorType,formula1,formula2);
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createTimeConstraint(int, java.lang.String, java.lang.String, java.lang.String)
- */
- public DataValidationConstraint createTimeConstraint(int operatorType, String formula1, String formula2) {
- return new XSSFDataValidationConstraint(ValidationType.TIME, operatorType,formula1,formula2);
- }
-
- public DataValidationConstraint createCustomConstraint(String formula) {
- return new XSSFDataValidationConstraint(ValidationType.FORMULA, formula);
- }
-
- /* (non-Javadoc)
- * @see org.apache.poi.ss.usermodel.DataValidationHelper#createValidation(org.apache.poi.ss.usermodel.DataValidationConstraint, org.apache.poi.ss.util.CellRangeAddressList)
- */
- public DataValidation createValidation(DataValidationConstraint constraint, CellRangeAddressList cellRangeAddressList) {
- XSSFDataValidationConstraint dataValidationConstraint = (XSSFDataValidationConstraint)constraint;
- CTDataValidation newDataValidation = CTDataValidation.Factory.newInstance();
-
- int validationType = constraint.getValidationType();
- switch(validationType) {
- case DataValidationConstraint.ValidationType.LIST:
- newDataValidation.setType(STDataValidationType.LIST);
- newDataValidation.setFormula1(constraint.getFormula1());
- break;
- case DataValidationConstraint.ValidationType.ANY:
- newDataValidation.setType(STDataValidationType.NONE);
- break;
- case DataValidationConstraint.ValidationType.TEXT_LENGTH:
- newDataValidation.setType(STDataValidationType.TEXT_LENGTH);
- break;
- case DataValidationConstraint.ValidationType.DATE:
- newDataValidation.setType(STDataValidationType.DATE);
- break;
- case DataValidationConstraint.ValidationType.INTEGER:
- newDataValidation.setType(STDataValidationType.WHOLE);
- break;
- case DataValidationConstraint.ValidationType.DECIMAL:
- newDataValidation.setType(STDataValidationType.DECIMAL);
- break;
- case DataValidationConstraint.ValidationType.TIME:
- newDataValidation.setType(STDataValidationType.TIME);
- break;
- case DataValidationConstraint.ValidationType.FORMULA:
- newDataValidation.setType(STDataValidationType.CUSTOM);
- break;
- default:
- newDataValidation.setType(STDataValidationType.NONE);
- }
-
- if (validationType!=ValidationType.ANY && validationType!=ValidationType.LIST) {
- newDataValidation.setOperator(XSSFDataValidation.operatorTypeMappings.get(constraint.getOperator()));
- if (constraint.getFormula1() != null) {
- newDataValidation.setFormula1(constraint.getFormula1());
- }
- if (constraint.getFormula2() != null) {
- newDataValidation.setFormula2(constraint.getFormula2());
- }
- }
-
- CellRangeAddress[] cellRangeAddresses = cellRangeAddressList.getCellRangeAddresses();
- List<String> sqref = new ArrayList<String>();
- for (int i = 0; i < cellRangeAddresses.length; i++) {
- CellRangeAddress cellRangeAddress = cellRangeAddresses[i];
- sqref.add(cellRangeAddress.formatAsString());
- }
- newDataValidation.setSqref(sqref);
-
- return new XSSFDataValidation(dataValidationConstraint,cellRangeAddressList,newDataValidation);
- }
- }
|