leer archivos de excel con java

dlldrv
13 de Enero del 2009
he logrado leer pero solo una linea y lo lee dos veces, alguien me puede ver que me falta para que siga leyendo las demas lineas del archivo de excel
tener un archivo en el c: que se llame ejemplo ngresarle(numerico,numerico,caracter,boolean,date, para los tipos de los campos del xls)
1 2 prueba true 31/07/2008
3 5 otra prueba false 31/07/2008


me encontre este DemoJExcel,java
package reportes;

import java.io.*;
import java.util.Date;
import jxl.*;
import jxl.read.biff.BiffException;
import jxl.write.*;


public class DemoJExcel
{
public static void main(String[] args)
{
//escribirExcel();

leerExcel();

System.out.println("Ejemplo Finalizado.");
}
public static void leerExcel()
{
try
{
//Se abre el fichero Excel
Workbook workbook = Workbook.getWorkbook(new File("ejemplo.xls"));

//Se obtiene la primera hoja
Sheet sheet = workbook.getSheet(0);

int rows = sheet.getRows();
//Iterator rows = sheet.rowIterator();
//.getPhysicalNumberOfRows();
for (int r = 0; r < rows; r++)
{

//Se leen las primeras 5 celdas
for(int i=0; i<5; i++)
{
//Se obtiene la celda i-esima
Cell cell = sheet.getCell(i,0);

//Se imprime en pantalla la celda según su tipo
if (cell.getType() == CellType.NUMBER)
{
System.out.println("Número: " + ((NumberCell)cell).getValue());
}
else if (cell.getType() == CellType.LABEL)
{
System.out.println("String: " + ((LabelCell)cell).getString());
}
else if (cell.getType() == CellType.BOOLEAN)
{
System.out.println("Boolean: " + ((BooleanCell)cell).getValue());
}
else if (cell.getType() == CellType.DATE)
{
System.out.println("Fecha: " + ((DateCell)cell).getDate());
}
}
}
}
catch (Exception ex)
{
System.out.println("Error!");
}
}

/*public static void escribirExcel()
{
try
{
//Se crea el libro Excel
WritableWorkbook workbook =
Workbook.createWorkbook(new File("ejemplo.xls"));

//Se crea una nueva hoja dentro del libro
WritableSheet sheet =
workbook.createSheet("HojaEjemplo", 0);

//Creamos celdas de varios tipos
sheet.addCell(new jxl.write.Number(0, 0, 1));
sheet.addCell(new jxl.write.Number(1, 0, 1.2));
sheet.addCell(new jxl.write.Label(2, 0, "ejemplo"));
sheet.addCell(new jxl.write.Boolean(3,0,true));

//Creamos una celda de tipo fecha y la mostramos
//indicando un patón de formato
DateFormat customDateFormat =
new DateFormat ("d/m/yy h:mm");

WritableCellFormat dateFormat =
new WritableCellFormat (customDateFormat);

sheet.addCell(new jxl.write.DateTime(4, 0, new Date(), dateFormat));

//Escribimos los resultados al fichero Excel
workbook.write();
workbook.close();

leerExcel();

System.out.println("Ejemplo finalizado.");
}
catch (IOException ex)
{
System.out.println("Error al crear el fichero.");
}
catch (WriteException ex)
{
System.out.println("Error al escribir el fichero.");
}
}
*/
}

marking 666
13 de Enero del 2009
lo que pasa es que tienes que aumentar las filas estas leyendo solo la primera asi Cell cell = sheet.getCell(i,0); tienes que cambiar el cero por la "r" que son las columnas y es todo tan facil como esto Cell cell = sheet.getCell(i,r); esa "r" pertenece al for que te da el numero de filas de la hoja de exel for (int r = 0; r < rows; r++)
{ si te fijas en este codigo no utiliza la r para nada

ibernal
13 de Enero del 2009
este código que tienes esta leyendo, creando un archivo y escribiendo en él,
si tu solo necesitas leer el archivo le puedes quitar muchas cosas qu no son necesarias,

yo hace poco hice un programa que lee archivos de excel , aca te dejo la imagen del código necesario.

http://4.bp.blogspot.com/_bx6H9tN85W8/SVUr_0QV7QI/AAAAAAAAAAs/NZgYIDFqsQY/s1600-h/javaexcel.bmp


Espero te sirva.