Foros del Web » Programación para mayores de 30 ;) » Java »

Leer archivos de excel con java

Estas en el tema de Leer archivos de excel con java en el foro de Java en Foros del Web. Buenas No soy experto en java, necesito leer un archivo de excel y con la información hacer unas validaciones para lamacenarla en una Base de ...
  #1 (permalink)  
Antiguo 13/09/2007, 15:08
 
Fecha de Ingreso: marzo-2006
Mensajes: 13
Antigüedad: 18 años, 2 meses
Puntos: 0
Leer archivos de excel con java

Buenas

No soy experto en java, necesito leer un archivo de excel y con la información hacer unas validaciones para lamacenarla en una Base de datos.

Quien me pueda regalar una guia detallada de como hacerlo, me ayudaria mucho.
  #2 (permalink)  
Antiguo 16/09/2007, 23:39
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Re: Leer archivos de excel con java

Este codigo, lee un archivo .TXT y en base a las instrucciones SQL dentro del .txt se crean tablas sobre la base de datos, para un excel debe ser algo similar, pero separado por comas como token:

Los imports que usa son:
import java.sql.*;
import java.io.*;
import java.util.*;
import com.ibm.db.beans.*;



Cita:
// Abre la lista de tablas a crear
Vector tables = new Vector();
String tableFile = "tablas.txt";
String table = null;
String create = null;
String drop = null;

InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
String line = null;

is = this.getClass().getResourceAsStream(tableFile);
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
System.out.println( "CICLO 1 Crea tablas");

while ((line = br.readLine()) != null) {
StringTokenizer tokenizer = new StringTokenizer(line, "=");
table = tokenizer.nextToken(); // Nombre de tabla
create = tokenizer.nextToken(); // INstruccion create
// Primero borra la tabla existente
String tmpString = replaceAll(table, "QGPL", getBiblioteca() );


drop = "drop table " + getBiblioteca()+"."+tmpString; // table
System.out.println(drop);
executeStatement(drop, true);
System.out.println(create);
// Luego crea de nuevo la tabla
tmpString = replaceAll(create, "QGPL", getBiblioteca() );

//executeStatement(create, true);
executeStatement(tmpString, true);
tables.addElement(table);
}

br.close();
  #3 (permalink)  
Antiguo 17/09/2007, 08:17
 
Fecha de Ingreso: abril-2007
Mensajes: 76
Antigüedad: 17 años
Puntos: 3
Re: Leer archivos de excel con java

wwwmaster creo que no tiene nada(algo a lo mejor si pero poco) que ver yo estube hace tiempo buscando algo de eso

Prueba buscando en el foro...... http://www.forosdelweb.com/f45/leer-...e-java-352592/

Y algo sobre la libreria Jakarta POI.
  #4 (permalink)  
Antiguo 17/09/2007, 22:51
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Re: Leer archivos de excel con java

leer un archivo excel guardado como .CVS (separado por comas) es igual a leer un archivo de texto.

El "parse" se tendria q hacer manualmente por los tokens (comas) de la informacion que se lee. Otra manera seria leer mediante un EXCEL driver como si fuera una tabla el archivo en excel, pero no lo he hecho en java, solo en asp y php.
  #5 (permalink)  
Antiguo 18/09/2007, 01:17
 
Fecha de Ingreso: abril-2007
Mensajes: 76
Antigüedad: 17 años
Puntos: 3
Re: Leer archivos de excel con java

a eso me referia a leer un archivo excel (xls), yo consegi grabar y crear de un jtable un archivo excel pero leerlo tal cual no lo termine de hacer correctamente
  #6 (permalink)  
Antiguo 18/09/2007, 02:40
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Leer archivos de excel con java

Cita:
Iniciado por wwwmaster Ver Mensaje
leer un archivo excel guardado como .CVS (separado por comas) es igual a leer un archivo de texto.
Si, pero lo que han pedido es leer un fichero de Excel, no un fichero .CVS. Y en tu mensaje inicial no dices nada de transformar primero el fichero Excel a .CVS, de ahi la confusión, supongo.

Si tiene la opción de transformarlo y queda en un formato que le sirve, pues así mismo. Si no, lo que suele usar la gente es Jakarta POI, xlsql, o JExcelAPI, que te permiten leer Excels directamente.

No me ha tocado, así que no se cual va mejor o peor.

Hay esas opciones y alguna más comercial en esta lista:
http://schmidt.devlib.org/java/libraries-excel.html

Y para más información "java excel" en Google saca estas cosas y algunas más.

S!
  #7 (permalink)  
Antiguo 25/10/2007, 08:30
Avatar de santiago_dj2000  
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Leer archivos de excel con java

mira este es el método que te permite leer los datos de cualquier exel. Primero este código está desarrollado con la librería poi-2.5.1-final-20040804.jar.
------------------------------------------------------------------------------------------------------
/**
* Método que se encarga de leer los datos de un archivo en formato excel
* @param file Archivo que se va a proceder a leer
* @return Vector que contiene la informacion del archivo
*/
public Vector leeArchivo(File file){
Vector informacionArchivo = new Vector();
POIFSFileSystem poifsFileSystem = null;
try {
poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
HSSFWorkbook hssfWorkbook = null;
try {
hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
} catch (IOException ex) {
ex.printStackTrace();
}
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
Iterator iterator = hssfSheet.rowIterator();
// Recorro datos de fila en fila
while(iterator.hasNext()){
HSSFRow hssfRow = (HSSFRow)iterator.next();
Iterator iteratorAuxiliar = hssfRow.cellIterator();
Vector informacionFila = new Vector();
//Me barro todos los elementos de una fila
for(short i = hssfRow.getFirstCellNum(); i < hssfRow.getLastCellNum(); i++){
HSSFCell hssfCell = hssfRow.getCell(i);
if(hssfCell != null){
switch(hssfCell.getCellType()){
case HSSFCell.CELL_TYPE_BLANK: informacionFila.add(""); break;
case HSSFCell.CELL_TYPE_BOOLEAN: informacionFila.add(hssfCell.getBooleanCellValue() ); break;
case HSSFCell.CELL_TYPE_FORMULA: informacionFila.add(hssfCell.getStringCellValue()) ; break;
case HSSFCell.CELL_TYPE_NUMERIC: informacionFila.add(hssfCell.getNumericCellValue() ); break;
case HSSFCell.CELL_TYPE_STRING: informacionFila.add(hssfCell.getStringCellValue()) ; break;
default:
}
}
}
informacionArchivo.add(informacionFila);
}
return informacionArchivo;
}
----------------------------------------------------------------------------------------------------
Espero que te sirva saludos, Perdón por la tardanza más vale tarde que nunca
  #8 (permalink)  
Antiguo 25/10/2007, 11:54
Avatar de santiago_dj2000  
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 17 años, 6 meses
Puntos: 0
De acuerdo Re: Leer archivos de excel con java

Este es un método que te lee los datos del archivo exel y te retorna la información dentro de un vector.
__________________________________________________ __________________________________________________ ______________________________
/**
* Método que se encarga de leer los datos de un archivo en formato excel
* @param file Archivo que se va a proceder a leer
* @return Vector que contiene la informacion del archivo
*/
public Vector leeArchivo(File file){
Vector informacionArchivo = new Vector();
POIFSFileSystem poifsFileSystem = null;
try {
poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
HSSFWorkbook hssfWorkbook = null;
try {
hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
} catch (IOException ex) {
ex.printStackTrace();
}
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
Iterator iterator = hssfSheet.rowIterator();
// Recorro datos de fila en fila
while(iterator.hasNext()){
HSSFRow hssfRow = (HSSFRow)iterator.next();
Iterator iteratorAuxiliar = hssfRow.cellIterator();
Vector informacionFila = new Vector();
//Me barro todos los elementos de una fila
for(short i = hssfRow.getFirstCellNum(); i < hssfRow.getLastCellNum(); i++){
HSSFCell hssfCell = hssfRow.getCell(i);
if(hssfCell != null){
switch(hssfCell.getCellType()){
case HSSFCell.CELL_TYPE_BLANK: informacionFila.add(""); break;
case HSSFCell.CELL_TYPE_BOOLEAN: informacionFila.add(hssfCell.getBooleanCellValue() ); break;
case HSSFCell.CELL_TYPE_FORMULA: informacionFila.add(hssfCell.getStringCellValue()) ; break;
case HSSFCell.CELL_TYPE_NUMERIC: informacionFila.add(hssfCell.getNumericCellValue() ); break;
case HSSFCell.CELL_TYPE_STRING: informacionFila.add(hssfCell.getStringCellValue()) ; break;
default:
}
}
}
informacionArchivo.add(informacionFila);
}
return informacionArchivo;
}
__________________________________________________ __________________________________________________ ______________________________
Espero que te sirva con este método he logrado leer datos de un archivo de 12 megas.
  #9 (permalink)  
Antiguo 25/10/2007, 17:15
Avatar de cris_maco  
Fecha de Ingreso: abril-2007
Ubicación: Salamanca
Mensajes: 254
Antigüedad: 17 años
Puntos: 0
Re: Leer archivos de excel con java

tengo que decir que el metodo getStringCellValue() esta deprecado, en su lugar usar HSSFRichTextString()
  #10 (permalink)  
Antiguo 05/11/2007, 02:00
jhh
 
Fecha de Ingreso: octubre-2007
Mensajes: 3
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Leer archivos de excel con java

Hola,

Estoy haciendo un programa que crea un archvo en excel y me gustaria saber si hay alguna forma de insertar una imagen en una celda en vez de texto.

Si alguien sabe como hacerlo os agradeceria que me respondieseis.

Gracias de todas formas

jhh
  #11 (permalink)  
Antiguo 02/01/2008, 14:40
 
Fecha de Ingreso: enero-2008
Ubicación: La Paz
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Leer archivos de excel con java

hola, me podrina indicar por favor que archivos tengo que descargar de jakarta y como hago un pequeño ejemplo
  #12 (permalink)  
Antiguo 21/11/2008, 04:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Leer archivos de excel con java

Hola soy nuevo en este foro y nuevo tb en jsf y estoy intentando leer un fichero excel desde mi aplicacion y recorrerlo por columnas en vez de x filas y hacer una serie de validaciones para posteriormente meter esos datos leidos en distintas tablas de bases de datos.Espero que alguien me pueda ayudar xq la verdad es q stoy ya bastante liado leyendo comentarios y no se como atajar este problema.Muxas gracias de antemano!!!
  #13 (permalink)  
Antiguo 21/11/2008, 06:37
 
Fecha de Ingreso: septiembre-2003
Mensajes: 122
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

A ver si sirve esto....(usando poi-3.0-rc4)

Con inputFileUpload pones el archivo en el formulario/backingbean/o como quieras llamarlo.

En el servidor haces esto:
InputStream stream = form.getFichero().getInputStream(); //form es el backingbean con alzance session.
HSSFWorkbook workbook = new HSSFWorkbook(stream);
HSSFSheet sheet = workbook.getSheetAt(0);
HSSFRow row = sheet.getRow(0);

En row vas a tener la fila 0.
Si queres la 1 haces sheet.getRow(1); asi sucesivamente.
luego para acceder a cada columna del row haces....
String valorStr = row.getCell((short)0).getRichStringCellValue().get String(); //El valor de la columna 0.

Creo que con eso tiene que bastar.
No se si ya hay algo para recorrer por columna, pero si no lo hay lo implementas.

Saludos.-

Última edición por emucho; 21/11/2008 a las 06:38 Razón: Me falto aclarar algo
  #14 (permalink)  
Antiguo 21/11/2008, 07:24
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

Muchas gracias por tu respuesta, la pruebo a ver...
  #15 (permalink)  
Antiguo 24/11/2008, 02:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

emucho llevo desde el Viernes probando esa última instrucción para que me devolviera el valor de la celda y haciéndole la traza una vez tras otra no m devuelve el valor, sale del mismo sin darme ningun resultado...sabes alguna otra forma de sacar el valor de esa celda con esta api?muxas gracias x todo
  #16 (permalink)  
Antiguo 24/11/2008, 09:52
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

Duda resuelta, ya me he buscado la vida. Gracias de todas formas!!
  #17 (permalink)  
Antiguo 24/11/2008, 11:33
 
Fecha de Ingreso: septiembre-2003
Mensajes: 122
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

¿Que era lo que pasaba?
  #18 (permalink)  
Antiguo 26/11/2008, 02:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

Pues que el metodo getRichStringCellValue(). no m funcionaba, tuve que poner row.getCell((short)1).getStringCellValue() y esta ya devuelve bien los datos.Sabes si hay algun iterador con esta Api xa recorrer el Excel x columnas?Es que no se a priori el tamaño del Excel y tiene q recorrerlo automaticamente...Gracias
  #19 (permalink)  
Antiguo 03/12/2008, 11:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

Buenas tardes aqui vuelvo a la carga...mi problema es q el iterador usado por Apache POI para iterar sobre celdas no m da el resultado esperado y lo hago personlalmente el recorrido, pero tengo el problema que al acabar y encontrar una celda vacia me da un nullpointer exception el rowidZonas.getCell((short)z).getStringCellValue() q es la condicion para salir del bucle, y no se como puedo salir xq deberia de encontrar un null y salir del mismo xq mi condicion es q si es igual a null se sale...a ver si alguien puede decirme el xq...creo q el problema es del metodo getStringCellValue() que peta como sea null...
  #20 (permalink)  
Antiguo 03/12/2008, 13:42
 
Fecha de Ingreso: septiembre-2003
Mensajes: 122
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

¿Porque no validas que rowidZonas.getCell((short)z) no sea null?
  #21 (permalink)  
Antiguo 16/12/2008, 03:26
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

Lo valido lo q pasa es q al hacer sheet.getRow(0) me da un nullPointerException y no se como tratarla xa q no salte la excepcion sino q m devuelva un mensaje de error.Si alguien sabe como tratar ese caso(en el que el Excel pasado sea nulo o contenga valores nulos en la primera fila) le agradeceria me comentara la solucion. Gracias!!!
  #22 (permalink)  
Antiguo 17/12/2008, 02:30
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

¿Alguien sabe como solucionar el caso de que tengamos una celda vacía(nula)?lo estoy haciendo asi:

switch(rowEspecies.getCell((short)c).getCellType() ){
case HSSFCell.CELL_TYPE_BLANK:
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("El numero de especies pasado en la fila "+cont+" y columna " +c+ " no es de un tipo válido"));
break;
}


pero me da un nullPointerException en vez de meterse dentro del type blank...Muchas graciAS
  #23 (permalink)  
Antiguo 17/12/2008, 06:06
 
Fecha de Ingreso: noviembre-2008
Mensajes: 15
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

Ya lo solucioné...Gracias por vuestra colaboración jajaja
  #24 (permalink)  
Antiguo 17/02/2010, 05:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Leer archivos de excel con java

Yo estoy utilizando el apache poi para leer un fichero excel en java puro, y luego guardar los datos que recojo de las celdas en una tabla.

Según he podido leer este es el proyecto mas extendido para realizar este tipo de procesos y el mas estable ya que lleva mucho tiempo en desarrollo.

Leete la guia rápida de ayuda en : http://poi.apache.org/spreadsheet/quick-guide.html#NewWorkbook.

Yo pienso que si lo que quieres es leer un excel esta es un opción facil ya que viene con clases y metodos para poder leer las filas y columnas que quieras.

Saludos.
  #25 (permalink)  
Antiguo 17/02/2010, 05:36
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Leer archivos de excel con java

El último mensaje de este tema es dediciembre del 2008, y ya habían solucionado el problema...

No es bueno resucitar temas que descansan el sueño de los justos, podrían enfadarse .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:31.