Procedimiento para deshabilitar usuarios leyendo un fichero xls en Command Manager

Proposito

Poco a poco subimos el nivel de los procedimientos… en este articulo se muestra un procedimiento para deshabilitar usuarios leyendo un fichero xls en Command Manager. El procedimiento lee la primera hoja excel y tiene en cuenta las dos primeras columnas y solo deshabilitara cuando en la segunda columna aparezca la palabra deshabilitar. El contenido del excel es:

  • Columna A: login del usuario.
  • Columna B: deshabilitar o cualquier otro valor.

Explicación del código

A continuación se explica el código linea a linea o bien se puede abrir el procedimiento descargado (enlace disponible más abajo) desde MicroStrategy Command Manager (Menú Archivo > Abrir Procedimiento) donde podéis encontrar las líneas de código con el detalle de lo que realiza cada paso.

//Creado por MiguelTroyano.com
// Configuramos el libro de trabajo
jxl.Workbook libroTrabajo =  jxl.Workbook.getWorkbook(new File(sFicheroEntrada));
 
// Obtenemos la primera hoja del libro de Excel
jxl.Sheet primeraHoja = libroTrabajo.getSheet(0);
 
// Determinamos el numero de filas basandonos en la primera columna
jxl.Cell[] cellColumn = primeraHoja.getColumn(0);
int numeroFilas = cellColumn.length;
 
// Determinamos el numero de columnas basandonos en la primera fila
jxl.Cell[] cellRow = primeraHoja.getRow(0);
int numeroColumnas = cellRow.length;
 
printOut("El documento tiene: " + numeroFilas + " filas y " + numeroColumnas + " columnas");
 
// Especificamos si tiene encabezado o no para empezar en la fila 0 o 1
int i = 0;
if ( sEncabezado ){
    i = 1;
}
 
// Se crea una variable para especificar el número de fila real de excel
int x = i;
x++;
 
// Recorremos el excel fila por fila y realizamos una accion por cada fila
while ( I <= numeroFilas ) {
 
   // Se declara una varaible por cada columna del excel
    // Columna A: usuario, Columna B: estado
 
    String sValorColumnaA = primeraHoja.getCell(0, i).getContents();
    String sValorColumnaB = primeraHoja.getCell(1, i).getContents();
 
    // Solo se deshabilita los usuarios que tengan en la columna B deshabilitar
    if ( sValorColumnaB.contains ( "deshabilitar" )  ) {
        String sConsulta = "ALTER USER \"" + sValorColumnaA + "\" DISABLED \"" + "\";";
        execute(sConsulta);
        printOut( "El usuario '" + sValorColumnaA + " se ha deshabilitado correctamente.") ;
    }
  
    // Si su estado es otro, informamos que no se deshabilita.
    else {
        printOut( "El usuario '" + sValorColumnaA + " no se ha deshabilitado '" +"'") ;
    }
    i++;
   x++;
}

Si se observa el código, el procedimiento va leyendo fila por fila todas las columnas y deshabilita aquellos que en su columna B tienen la palabra deshabilitar.

El procedimiento tiene dos parametros de entrada que debes informar antes de ejecutarlo:

  • sFicheroEntrada: dirección completa de la ubicación del fichero excel (xls)
  • sEncabezado: se debe indicar true si el fichero excel tiene encabezado o false si no lo tiene.

Además antes de ejecutarlo también deberás indicarle donde has guardado el fichero .jar que contiene las clases necesarias para poder leer del fichero excel (también adjunto en la descarga del ejemplo)

¡importante! este procedimiento es posible que no funcione con fichero xlsx. Si es posible convierte tu fichero xlsx a xls para utilizar este procedimiento.

Ejemplo a descargar

Os podeis descargar el ejemplo completo haciendo clic en el botón descargar. La descarga contiene un fichero zip con los siguientes archivos:

  • Fichero con extensión .cmp de Command Manager que contiene el código del procedimiento.
  • Fichero de ejemplo de Microsoft Excel.
  • Clase Java necesaria para el funcionamiento del procedimiento.
  • Fichero .scp que contiene la llamada al procedimiento.
  • Fichero .bat para ejecutar el procedimiento desde la linea de comandos.

Si optas por ejecutarlo desde la linea de comandos recuerda que debes modificar los ficheros .scp y .bat con las rutas donde ubiques los ficheros y ademas debes abrir el procedimiento para indicarle donde esta guardado el fichero .jar

Escribir un comentario