Tenia un problema, me pasaron unos archivos excel con unos cientos de registros (ver imagen más abajo) que exportaron de una base de datos, los registros estaban en mayúsculas y el formato que tenían no era el que se necesitaba, resumiendo teníamos un registros de la siguiente forma:
CODIGO NOMBRE COMPLETO PROFESION
HBBHKK-03 SR(A) ESTER MOSOBICHO DOCTOR
y lo que se quería era colocar primero la profesión abreviada de la persona seguido de su nombre, todo esto claro en minúsculas, por ejemplo el resultado del ejemplo anterior seria este:
Dr. Ester Mosobicho
Solución
El lenguaje de programación que elegí fue Java 🙂 y como necesitaba algo que me dejara manipular los archivos excel fácilmente, utilice la librería JExcel (http://jexcelapi.sourceforge.net/), el resultado una clase que me permite aplicar las correcciones al problema y me escribe en pantalla los registros con el formato deseado, la clase a continuación totalmente comentada:
import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * @web https://www.jc-mouse.net/ * @author Mouse */ public class Xexcel { /* variable local para almacenar profesiones y sus abreviaciones */ private HashMap<String,String> profesiones = new HashMap(); /** * Constructor de clase */ public Xexcel(){ //se llenan las profesiones y su abreviatura profesiones.put( "Doctor", "Dr." ); profesiones.put( "Ingeniero", "Ing." ); profesiones.put( "Maestro", "Mtro." ); profesiones.put( "Arquitecto", "Arq." ); profesiones.put( "Bioquimico", "Bq." ); profesiones.put( "Administrador", "Adm." ); } /** * Metodo que aplica el formato al texto extraido de un archivo excel * @param String xls direccion del archivo excel 2003 */ public void formatear( String xls ) { String tmp = "DR(A) "; String data; try { Workbook workbook = Workbook.getWorkbook( new File( xls ) ); //recorre todas las hojas for ( int sheetNo = 0; sheetNo < workbook.getNumberOfSheets(); sheetNo++ ) { //obtiene una hoja Sheet hoja = workbook.getSheet( sheetNo ); System.out.println("Titulo: " + workbook.getSheet(sheetNo).getName()); //recorrea todas las filas for ( int fila = 0; fila < hoja.getRows(); fila++ ) { //recorre solo la columna 1 y 2, la columna 0 que corresponde al ID no nos interesa for ( int columna = 2; columna > 0 ; columna-- ) { //se extrae contenido de celda y se convierte a minuscula data = hoja.getCell(columna, fila).getContents().toLowerCase() ; if( columna == 1 && data.length() > 0 ) { //se elimina palabra "SR(A) " de string data = data.substring( tmp.length() , data.length() ); data = toTitle( data ); //se convierte cadena "EJEMPLO" a "Ejemplo" System.out.println( " " + data ); //Se imprime }else if( columna == 2 && data.length() > 0 ) //profesion { data = toTitle( data );//se convierte cadena "EJEMPLO" a "Ejemplo" data = Abreviar( data );//Se busca su abreviatura System.out.print( "> " + data ); //se imprime } } } } } catch (IOException ex) { System.err.println( ex.getMessage() ); } catch (BiffException ex) { System.err.println( ex.getMessage() ); } } /** * Retorna la abreviación de una palabra caso contrario retorna un string * @param String word palabra a abreviar * @return String Abreviatura de palabra */ private String Abreviar( String word ){ for (Map.Entry e : profesiones.entrySet()) { if( e.getKey().toString().equals( word.trim() ) ) { return e.getValue().toString(); } } return "Sr(a)"; } /** * Formatea un string de la forma "cadena" a "Cadena" * @param String cad palabra * @return String resultado de conversion */ private String toTitle( String cad ) { String word; //convierte en array String aux[] = cad.split(" "); cad = ""; // se limpia cadena for( int i=0; i<aux.length; i++ ) { word = aux[i]; word = word.substring(0,1).toUpperCase() + word.substring(1,word.length() ); cad += word + " "; } return cad; } }//-->fin clase
Implementando la clase
public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { Xexcel xl = new Xexcel(); xl.formatear("E:\\Libro1.xls" ); } }
y su resultado:
run: Titulo: Hoja1 > Dr. Maria Dolores Del Orto > Ing. Debora Teste > Dr. Ester Mosobicho > Mtro. Olga Disima De Loyo > Arq. Armando Bronca Segura > Arq. Solomeo Paredes > Bq. Keko Jones > Adm. Rozamel Fierro > Adm. Lucas Trado > Ing. Aquiles Pinto Paredes > Bq. Rodrigo Melo Rosa > Dr. Paola Chupabola > Dr. Dolores Delano > Ing. Ana Mier De Cilla > Ing. Ana Pulpito Salido > Mtro. Ester Mosobicho Titulo: Hoja2 Titulo: Hoja3
No esta testeada completamente pero me salvo de ese problemilla y lo publico tal cual esta ahora porque sino se me olvida y se pierde 🙂
Enjoy!!!
Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.
Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye
Enjoy! :)
Los gráficos de torta, también llamados gráficos de 360 grados o circulares, son gráficos estadísticos que se utilizan p...
En este tutorial Android Bolivia 🙂 construiremos una sencilla aplicación para realizar llamadas por teléfono, aprenderem...
Existen diferentes métodos par imprimir reportes hechos con JasperReport en aplicaciones hechas en java, en este post te...
Jasypt es una biblioteca java que permite agregar capacidades básicas de encriptación a proyectos con el mínimo esfuerzo...
GraphADT es una proyecto alojado en github escrito en java que te permite trabajar con grafos, a la fecha de escribir es...
El Ascii Art o Arte Ascii, consiste en realizar dibujos con los caracteres ASCII (Código Americano Estándar de Intercamb...
Los comentarios estan cerrados
Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...
En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...
Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...
Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...
Muchas gracias :’D
puedes explicar bien cada parametro la verdad no se entiende ta como para copiar pegar pero no enseñas nada solo pocos comentarios vagos para entender un poko
hola JMouse continuaras con el proyecto de control de Stock o ya lo dejaste por que la verda se ve muy inreresante de antemano gracias
Excelente información amigo. Pero quería saber si me puedes ayudar con el tamaño de las imágenes es que ya pruebo muchas y no me sale.
Muy bien explicado gracias por compartir y preparar este material
excelente
Hola.
Me puedes enviar el codigo del proyecto «Crear archivos JNLP con Netbeans»
Seria muy interesante que todos los proyectos se pudiera descargar el codigo.
Excelente ejemplo me preguntaba si tienes un ejemplo de realizar menus para cambiar el color de jframe usando look and feel…..
Seria bueno uno donde expliques asimetrica y pki 🙂