leer archivos de excel con java
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.");
}
}
*/
}
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.");
}
}
*/
}
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
{ si te fijas en este codigo no utiliza la r para nada
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.
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.
