Friday, 15 March 2019

Writing to excel with data validation using java apache poi

----------------------------------------------------------------
Date Validation with java code - apache poi
----------------------------------------------------------------
Cell cel= rowx.createCell(i);
cel.setCellStyle(style);
XSSFCreationHelper createHelper = workbook.getCreationHelper();
short dateFormat = createHelper.createDataFormat().getFormat("MM/dd/yyyy");
style.setDataFormat(dateFormat);
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
DataValidationConstraint dvConstraint = dvHelper.createDateConstraint(
    org.apache.poi.ss.usermodel.DataValidationConstraint.OperatorType.BETWEEN,
    "Date(1900, 1, 1)",
    "Date(9999, 12, 31)",
    "MM/dd/yyyy");
CellRangeAddressList addressList = new CellRangeAddressList(
2, pendingRowCount, columnNumber, columnNumber);
DataValidation validation = dvHelper.createValidation(dvConstraint, addressList);
if (validation instanceof XSSFDataValidation) {
    validation.setSuppressDropDownArrow(true);
validation.setShowErrorBox(true);
} else {
        validation.setSuppressDropDownArrow(false);
}
sheet.addValidationData(validation);

----------------------------------------------------------------
DropDown Validation with java code - apache poi
----------------------------------------------------------------
Cell cel= rowx.createCell(i);
cel.setCellStyle(style);
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
DataValidationConstraint dvConstraint =
                  dvHelper.createExplicitListConstraint(new String[] {"Yes","No"});
//same addressList and datavalidation object and if else condition and addValidationData method as above

------------------------------------------
To lock/unlock cell
------------------------------------------
CellStyle lockedStyle = workbook.createCellStyle();
lockedStyle.setWrapText(true);
lockedStyle.setLocked(true);

CellStyle unlockedStyle = workbook.createCellStyle();
unlockedStyle.setWrapText(true);
unlockedStyle.setLocked(false);

----------------------------------------------------------------------------------------------------------------------
Restricted text (only the supplier formula values from excel will populate in dropdown)
----------------------------------------------------------------------------------------------------------------------
Cell cel= rowx.createCell(i);
cel.setCellStyle(style);
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint)
    dvHelper.createFormulaListConstraint("$N$3:$N$5");
//same addressList and datavalidation object and if else condition and addValidationData method as above

-------------------------------------------------------------
Alphanumeric text allowed with text length limit
-------------------------------------------------------------
DataValidationHelper dvHelper = sheet.getDataValidationHelper();
XSSFDataValidationConstraint dvConstraint =
(XSSFDataValidationConstraint) dvHelper.createNumericConstraint(
ValidationType.TEXT_LENGTH, OperatorType.BETWEEN, "0", String.valueOf(maxLength));

2 comments:

  1. Your blog post is incredibly informative and practical, providing a step-by-step guide for implementing data validation and various cell formatting techniques using Java and Apache POI.
    Java has endured over time

    ReplyDelete