Tengo un requisito que me falta agregar validación de datos a una columna completa en lugar de una celda específica. Fui a través de la documentación de Apache poi y encontrado el siguiente ejemplo

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Data Validation");
CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0);
DVConstraint dvConstraint = DVConstraint.createExplicitListConstraint(
        new String[]{"10", "20", "30"});
DataValidation dataValidation = new HSSFDataValidation
        (addressList, dvConstraint);
dataValidation.setSuppressDropDownArrow(false);
sheet.addValidationData(dataValidation);

Pero el ejemplo anterior crea un desplegable datavalidation para una celda en particular. En este caso la fila 0, columna 0. El resto de las celdas de una columna no tiene validación. Pero en el real archivo de excel podemos hacerlo por lo que debería ser posible. He intentado y buscado mucho pero no pudieron llegar a una solución. Por favor ayuda..

  • ¿Qué sucede si se establece un rango de celdas que va desde la fila 0 de la fila (mucho)?
  • si se hace a un buen montón de números de fila, a continuación, se aplicará la validación de datos para todos los mencionados filas, pero después de eso, no
InformationsquelleAutor Chetan | 2015-01-27

2 Comentarios

  1. 3

    Chetan todos los cuatro parámetros del constructor CellRangeAddressList de la siguiente

    CellRangeAddressList(index_of_starting_row, index_of_ending_row, index_of_starting_column,index_of_ending_column);

    así por ejemplo. si hay 10 filas y 5 columnas, y si desea agregar en la lista desplegable en la 2ª columna en todo el todas las filas que significa en la totalidad de la 2ª columna, a continuación, utilizar a continuación el código de dirección de celda

    CellRangeAddressList addressList = new CellRangeAddressList(0,9,1,1);

    basado en el código de esto agregará un desplegable con los valores 10,20,30 en toda la 2ª columna si usted agregue la línea de código anterior mediante la sustitución de su código.

    espero que esto será claro el concepto y se obtendrá el deseo resultado.

    • esto habría que agregar la validación sólo en el 10 filas. Aunque los datos para sólo diez filas, me gustaría añadir la validación de toda la columna
    • me acaba de dar un ejemplo. si desea aplicar en toda la columna, a continuación, pasar 1048576 en lugar de 10 (es decir. 2do parámetro), ya que hay total no. de las filas de MS Excel 2007 es 1.048.576 y si es de Ms Excel 2003, a continuación, pasar a 65536 como no total. de filas en Excel 2003 es de 65.536
    • El máximo número de hileras resuelve el propósito y los valores que usted ha indicado que realmente han ayudado mucho
    • eso suena bonito
  2. 6

    Otra manera de obtener la validación en el conjunto de la columna también puede utilizar -1 por tanto fila de parámetros como:

    CellRangeAddressList columnRange = new CellRangeAddressList(-1, -1, columnIndex, columnIndex);

    Prueba esta en PDI 3.16

    • Confirmado para el PDI 3.17

Dejar respuesta

Please enter your comment!
Please enter your name here