Estoy tratando de generar un archivo de Excel con algunas validaciones, he leído el poi dev guides para implementarlo. Durante la implementación, recibí una excepción (String literals in formulas can't be bigger than 255 characters ASCII
). POI concatena todas las opciones desplegables en cadena '0' delimitada y verifica su longitud y me da una excepción. :(
Estoy usando la última versión del POI 3.8 beta 5.
Y mi código es:Limitación al generar lista desplegable de Excel con Apache POI
try {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 0);
//CellRangeAddressList from org.apache.poi.ss.util package
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(getCountries());
DataValidation dataValidation = new HSSFDataValidation(addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);
sheet.addValidationData(dataValidation);
FileOutputStream fileOut = new FileOutputStream("c:\\test.xls");
wb.write(fileOut);
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
Después de que he tratado con XSSFWorkBook con este código:
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
DataValidationHelper validationHelper = new XSSFDataValidationHelper(sheet);
DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(getCountries());
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DataValidation dataValidation = validationHelper.createValidation(constraint, addressList);
dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
dataValidation.setSuppressDropDownArrow(true);
sheet.addValidationData(dataValidation);
FileOutputStream fileOut = new FileOutputStream("c:\\test.xlsx");
Desafortunadamente, no hay éxito con ese resultado, que es una coma delimenated cadena larga en una celda:
Pero manualmente en excel, puedo crear celdas desplegables con esta larga lista de países.
¿Hay alguna forma de generar el menú desplegable con cadenas largas, o la API no es compatible?
suena como un insecto/limitación de la implementación de POI, tal vez debería informar esto como un error en http://poi.apache.org/ – centic