Leyendo los documentos de la Hoja de Excel en Java
Por alguna razón me pareció Apache POI difícil de utilizar para la lectura de la hoja de Excel, en términos de las convenciones de nomenclatura y el código por lo que estaba buscando otra biblioteca para la lectura de hojas de Excel en Java y me detuve en JXL.
Java Excel API saber JXL es una API basada en Java que nos permite leer / escribir / editar la hoja de Excel. El principal creo que me gustaba de él era su sencillez sobre Apache POI paquete. Este artículo le mostrará cómo podemos leer hoja de Excel usando JXL.
Ahora aquí me voy a leer una hoja de Excel con un contenido:
| EmpID | Nombre | Designación |
| 1 | ABC | Ingeniero de Software |
| 2 | DFG | Sr Ingeniero de Software |
| 3 | Carta de intenciones | Jefe de equipo |
| 4 | LKJ | Project Manager |
| 5 | Qwe | Software Architech |
He subido la misma hoja de Excel en el servidor se puede descargar desde aquí: Descargar hoja de Excel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | ; import java.io.FileInputStream ; import java.io.IOException ; import java.io.InputStream ; import java.util.Locale ; import jxl.Cell ; import jxl.Sheet ; import jxl.Workbook ; import jxl.WorkbookSettings ; import jxl.read.biff.BiffException ; import jxl.DateCell ; public class ReadXLSheet { public void init ( String filePath ) { FileInputStream fs = null ; try { fs = new FileInputStream ( new File ( filePath ) ) ; contentReading ( fs ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } catch ( Exception e ) { e. printStackTrace ( ) ; } finally { try { fs. close ( ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } } } //Returns the Headings used inside the excel sheet public void getHeadingFromXlsFile ( Sheet sheet ) { int columnCount = sheet. getColumns ( ) ; for ( int i = 0 ; i < columnCount ; i ++ ) { System . out . println ( sheet. getCell ( i, 0 ) . getContents ( ) ) ; } } public void contentReading ( InputStream fileInputStream ) { WorkbookSettings ws = null ; Workbook workbook = null ; Sheet s = null ; Cell rowData [ ] = null ; int rowCount = '0' ; int columnCount = '0' ; DateCell dc = null ; int totalSheet = 0 ; try { ws = new WorkbookSettings ( ) ; ws. setLocale ( new Locale ( "en" , "EN" ) ) ; workbook = Workbook. getWorkbook ( fileInputStream, ws ) ; totalSheet = workbook. getNumberOfSheets ( ) ; if ( totalSheet > 0 ) { System . out . println ( "Total Sheet Found:" + totalSheet ) ; for ( int j = 0 ; j < totalsheet ; j ++ ) { System . out . println ( "Sheet Name:" + workbook. getSheet ( j ) . getName ( ) ) ; } } //Getting Default Sheet ie 0 s = workbook. getSheet ( 0 ) ; //Reading Individual Cell getHeadingFromXlsFile ( s ) ; //Total Total No Of Rows in Sheet, will return you no of rows that are occupied with some data System . out . println ( "Total Rows inside Sheet:" + s. getRows ( ) ) ; rowCount = s. getRows ( ) ; //Total Total No Of Columns in Sheet System . out . println ( "Total Column inside Sheet:" + s. getColumns ( ) ) ; columnCount = s. getColumns ( ) ; //Reading Individual Row Content for ( int i = 0 ; i < rowCount ; i ++ ) { //Get Individual Row rowData = s. getRow ( i ) ; if ( rowData [ 0 ] . getContents ( ) . length ( ) != 0 ) { // the first date column must not null for ( int j = 0 ; j < columnCount ; j ++ ) { switch ( j ) { case 0 : System . out . println ( "Employee Id:" + rowData [ j ] . getContents ( ) ) ; case 1 : System . out . println ( "Employee Name:" + rowData [ j ] . getContents ( ) ) ; case 2 : System . out . println ( "Employee Designation:" + rowData [ j ] . getContents ( ) ) ; default : break ; } } } } workbook. close ( ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } catch ( BiffException e ) { e. printStackTrace ( ) ; } } public static void main ( String [ ] args ) { try { ReadXLSheet xlReader = new ReadXLSheet ( ) ; xlReader. init ( "/home/hitesh/Desktop/test.xls" ) ; } catch ( Exception e ) { e. printStackTrace ( ) ; } } } java.io.File importación; java.io.FileInputStream importación; java.io.IOException importación; java.io.InputStream importación; java.util.Locale importación; jxl.Cell importación; jxl.Sheet importación; jxl.Workbook de importación; jxl.WorkbookSettings importación; jxl.read.biff.BiffException importación; jxl.DateCell importación; public class ReadXLSheet (public void init (filepath String) (FileInputStream fs = null; try (FileInputStream nueva fs = (new File (filepath)); contentReading (fs);) catch (IOException e) (e. printStackTrace ();) catch (Exception e) (e. printStackTrace ();) finally (try (fs. close ();) catch (IOException e) (e . printStackTrace ();))) / / Devuelve el títulos que se utilizan dentro de la hoja de Excel getHeadingFromXlsFile public void (las chapas) (int ColumnCount = hoja. getColumns (); for (int i = 0; i <ColumnCount; i + +) (System. cabo. println (sheet. getCell (i, 0). getContents ());)) public void contentReading (InputStream FileInputStream) (WorkbookSettings fue = null; libro libro = null; s Hoja = null; de la célula rowData [] = null; rowCount int = '0 '; ColumnCount int = '0'; DateCell dc = null; totalSheet int = 0; try (fue WorkbookSettings = new (); fue. setlocale (nuevo Locale ("es", "EN" )); libro = libro. getWorkbook (FileInputStream, lo era); totalSheet = libro. getNumberOfSheets (); if (totalSheet> 0) (System. cabo. println ("Total Hoja encontrados:" totalSheet +); for (int j = 0; totalsheet <j, j + +) (System. cabo. println ("nombre de la hoja:" + libro. getSheet (j). getName ());)) / / Obtener Hoja predeterminado es decir, 0 s = libro. getSheet ( 0); / / Lectura individual getHeadingFromXlsFile célula (s); / / Total Número total de filas de hoja, le devolverá ninguna de las filas que están ocupados con algunos datos del sistema. salir. println ("Filas interior total de la hoja:" + s . GetRows ()); rowCount = s. GetRows (); / / Total Número total de columnas de hoja de sistema. salir. println ("Total Columna en el interior de la hoja:" + s. getColumns ()); ColumnCount = getColumns s. ( ); / / Lectura individual fila Contenido for (int i = 0; i <rowCount; i + +) (/ / Obtener rowData fila individual = getRow s. (i), si ([rowData 0]. getContents (). longitud ()! = 0) (/ / la columna de la primera cita no debe null for (int j = 0; j <ColumnCount; j + +) (switch (j) (case 0: System. cabo. println ("Id del empleado: "+ rowData [j]. getContents ()); el caso 1: Sistema. cabo. println (" Nombre del empleado: "+ rowData [j]. getContents ()); el caso 2: Sistema. cabo. println (" Employee Designación: "+ rowData [j]. getContents ()); default: break;)))) libro. close ();) catch (IOException e) (e. printStackTrace ();) catch (BiffException e) (e. printStackTrace ( );)) static public void principal (String [] args) (try (xlReader ReadXLSheet = nueva ReadXLSheet (); xlReader. init ("/ home / hitesh / Escritorio / test.xls");) catch (Exception e) ( e. printStackTrace ();))) |
Hoja Total encontrados: 3 --------------------------------------------- - Ficha Nombre: nombre de la hoja Sheet1: nombre de la hoja Hoja2: Sheet3 ------------------------------------- Columna --------- Denominación: Columna EmpID Encabezamiento: Nombre de columna Denominación: ----------------------------- Designación ----------------- Total filas en el interior de la hoja: 6 --------------------------- ------------------- Total Columna en el interior de la hoja: 3 ------------------------- --------------------- ID de empleado: Nombre del empleado EmpID: Designación del Empleado Nombre: Designación ----------------- ----------------------------- Id del empleado: 1 Nombre del empleado: Designación del Empleado ABC: Ingeniero de Software -------- -------------------------------------- Id del empleado: 2 Nombre del empleado: Designación del Empleado DFG: Sr Ingeniero de Software del Empleado ---------------------------------------------- Id : 3 Nombre del empleado: Designación del Empleado carta de intenciones: Líder del Equipo --------------------------------------- ------- Id del empleado: 4 Nombre del empleado: Designación del Empleado LKJ: Gerente de Proyecto ------------------------------ ---------------- Id del empleado: 5 Nombre del empleado: Designación del Empleado qwe: Arquitecto de Software En lo que respecta al código escrito la siguiente soy capaz de realizar las siguientes operaciones:
- Calcular totales de las hojas no dentro de la Hoja de Excel
- Lista de todos los nombre de hoja utilizado en el interior de hojas de Excel
- Leer individuales de la célula para especificar la posición de la célula - en el código ha leído el título de la columna es decir, fila 1
- Leer Total filas modificadas en la hoja de Excel
- Leer Total columnas Modificado en la hoja de Excel
- Leer el contenido de filas individuales

Búsqueda personalizada


































Si tengo que escribir el código utilizando PDI, para cumplir las tareas que ha realizado, el código hubiera sido muy similar con llamadas a la API muy similar. Veo el nivel de dificultad a medida que más o menos la misma en comparación con los PI. Mi pregunta es cuál es la diferencia de puntos de interés?
Hola Surya,
Diferencia viene con el paquete de convención de nomenclatura utilizada. JXL es utilizada exclusivamente para Excel en Java. Cuando, en Apache POI existen diferentes proyectos realizados para diferentes archivos de Microsoft Office, HWPF Por ejemplo, HSSF, etc HPSF Ahora como desarrollador usted tiene que comprobar que si un análisis sintáctico para Excel, descargue el paquete y luego ponerla en práctica.
¡Hola!
Me gustó su tutorial.
Manish
hay un problema, mientras que varias hojas en xls. quiero accsess varios valores hoja a la vez, pero devuelve un valor ovelap de dos hojas.
pero el tutorial es muy bueno.
plz resolver el problema
Hola Avijit,
¿Puedes pegar el código fuente que está utilizando.
Hitesh agarwal
Hola Hitesh,
Muy tutorial buen hombre. Sigue así
Hola Hitesh,
Niza el trabajo el hombre. Yo tenía una pregunta. ¿Es posible escribir las macros de Excel en Java y ejecutar las macros mientras trabajaba en la hoja de cálculo.
Gracias
Abhi
Gran tutorial, thx lottt ...
¡Hola!
En primer lugar, gracias por el tutorial.
Tengo un problema. He descargado la API, pero no sé dónde guardarlo en eclipse. La razón es que los archivos descomprimidos putt de la API en la carpeta plugins, pero el programa que puso como ejemplo aún pide JXL.
¿Podría usted por favor ayuda?
Gracias.
xls muy agradable leer el código .. thanx mucho.
muy buen tutorial excel lado a otro de lectura. Gracias
cómo leer los datos de Excel que utiliza el nombre de archivo de columnas.
Digamos por ejemplo,
Lugar País
Chennai, India
Mumbai India
Necesidad de leer con la columna lugar, país.
Por favor, ayúdame a salir.
hola, si el archivo de Excel han 18bm, cómo leer?
hey ..
Estoy tratando de ejecutar programa de año pero sigue dándome la versión java mal debe ser 50,0 49,0.
Dosent JXL trabajar con Java 1.5?
Quiero saber si hay anythign im falta?
¿Cómo podemos insertar una nueva fila a la hoja?
¿Cómo podemos copiar el formato de registro existente a una nueva fila?
Hola Hitesh,
la colección de Niza, mantenerlo, útil para la gente.
¿Cómo podemos insertar una nueva fila a la hoja?
¿Cómo podemos copiar el formato de registro existente a una nueva fila?
Rgds
Swamy.
Suresh hitesh,
hola Hitesh,
Hola hitesh,
El tutorial fue de ayuda del G-8
Gracias
Hola Hitesh,
Tengo la siguiente excepción cuando traté de ejecutar el ReadXLSheet.java.
jxl.read.biff.BiffException: No se puede reconocer flujo OLE
en jxl.read.biff.CompoundFile. (CompoundFile.java: 116)
en jxl.read.biff.File. (File.java: 127)
en jxl.Workbook.getWorkbook (Workbook.java: 268)
en com.sample.ReadXLSheet.contentReading (ReadXLSheet.java: 65)
en com.sample.ReadXLSheet.init (ReadXLSheet.java: 30)
en com.sample.ReadXLSheet.main (ReadXLSheet.java: 20)
¿Cuál podría ser la razón de esto.
Al principio tuve la excepción siguiente cuando traté de ejecutar el ReadXLSheet.java.
java.lang.UnsupportedClassVersionError: número de versión incorrecto en archivo. archivo de clase
Más tarde i cumplido la fuente jexcelapi_2_6_12 con mi JVM y utiliza el frasco generado. Ahora no estoy recibiendo este error pero yo estoy recibiendo
jxl.read.biff.BiffException. lata u por favor me ayude a resolver este problema.
gracias,
ganesh
Hola Ganesh,
¿No encuentra este error. Tendrá que comprobar esto.
Gracias,
Hitesh Agarwal
Hola Hitesh,
Thanku para comentarios y ur tutorial.
Tengo un problema con respecto a la hoja de Excel.
Tengo dos hoja de Excel, Ambos se encuentran en el mismo sistema.
si hago un cambio en la hoja de Excel, a continuación, afecta a la hoja de excel otros.
Puedo hacer ping a otro sistema y puede enviar el mensaje el otro sistema mediante el uso de la programación del zócalo.
pero no tengo ni idea de cómo actualizar la hoja de Excel que se encuentra en el otro sistema de mensajería instantánea como el mismo haciendo cuando la hoja de Excel en el mismo sistema.
Por favor, responda lo antes posible
Gracias de antemano.
@ Ganesh
Compruebe si ur usando. Xlsx en lugar de. Xls
Tengo esta excepción (No se puede reconocer flujo OLE) si uso el archivo xlsx nuevo.
Así que usando jexcelapi_2_6_12 solucionará el problema de formato xlsx?
@ Ganesh
Compruebe si el archivo está bloqueado test.xls .. Haga clic derecho e ir a las propiedades. Si éste se encuentra bloqueado, desbloquearlo .. Algunas características de seguridad de Windows que bloquea algunos archivos descargados hasta que lo desbloquees .. Pruebe si esto ayuda!
gracias por su tutorial ^ _ ^
muchas gracias, yo estaba trabajando en un problema donde necesitaba archivo xls correa de cuero (400) - sólo una vez. Usted me salvó el día con este frasco!
Hola a todos,
El código funciona muy bien con un cambio.
Después de cada declaración de caso, añada una "ruptura"
por lo que el código revisado sería:
switch (j) (
case 0:
System.out.println ("Id del empleado:" + rowData [j]. GetContents ());
break;
Caso 1:
System.out.println ("Nombre del empleado:" + rowData [j]. GetContents ());
break;
case 2:
System.out.println ("Employee Denominación:" + rowData [j]. GetContents ());
break;
por defecto:
break;
)
Con el código que figura, se realiza un bucle a través de todas las condiciones de tres y da una salida errónea.
Gracias por el código.
sido muy útil el trabajo ... gran
@ Ganesh
Estoy recibiendo el mismo error que he Ganesh. Mi archivo se guarda como. Xls y desbloquear es, pero sigue recibiendo el mismo BiffException.Please ayuda
Hola gracias por el código ... ... ...
Código funcionó bien cuando corro primera vez obtuve resultado también ....
Pero cuando ejecuto el mismo código, después de tres tiempos de exection ... ... dando su archivo no se encuentra y de excepción de punto nulo ... ... ... .. nombre de la ruta especificada es correcta .... plzzzz hacerme volver con una solución tan pronto como sea posible ... ... ..
Hola gracias por el código ... ... ...
Código funcionó bien cuando corro primera vez obtuve resultado también ....
Pero cuando ejecuto el mismo código, después de tres tiempos de exection ... ... dando su archivo no se encuentra y de excepción de punto nulo ... ... ... .. plzzzz hacerme volver con una solución tan pronto como sea posible ... ... ..
Gracias por adelantado ... ... ... ... ... ...
¿Dónde puedo conseguir archivo jar?
Hola Hitesh,
Hacer u haber cualquier idea acerca de cómo escribir. Xlsx. Si es así lata u pls compartir algunos ejemplos de código.
Gracias
Hola Meneka,
Las últimas Apache POI soporte de archivos xslx.
Gracias,
Hitesh Agarwal
He descargado el código y tryied para ejecutarlo en la plataforma Ubuntu con JDK6
pero en tiempo de ejecución se pone de manifiesto esta
Excepción en \ hilo principal java.lang.NoClassDefFoundError \: ReadXLSheet
en java.lang.Class.initializeClass (libgcj.so.10)
Causado por: java.lang.ClassNotFoundException: jxl.Cell no se encuentra en gnu.gcj.runtime.SystemClassLoader (urls = [archivo primario :./], = (gnu.gcj.runtime.ExtensionClassLoader urls = [], los padres = null ))
en java.net.URLClassLoader.findClass (libgcj.so.10)
en java.lang.ClassLoader.loadClass (libgcj.so.10)
en java.lang.ClassLoader.loadClass (libgcj.so.10)
en java.lang.Class.initializeClass (libgcj.so.10)
en lugar de la producción
Puede usted por favor dígame cuál es el problema con mi código no soy capaz de conseguir y su urget
hacia la búsqueda de ayuda ...
Gracias de antemano
Hola Gaurav,
Usted tendrá que agregar JExcel API en su ruta de clase, mientras que la elaboración del expediente de Java, puede descargar el JExcelAPI de http://jexcelapi.sourceforge.net/
Gracias,
Hitesh Agarwal
¡Hola!
He escrito la siguiente función:
public void leer () throws IOException (
inputWorkbook archivo = new File ("c: / temp / test.xls");
W libro;
try (
w = Workbook.getWorkbook (inputWorkbook);
...
) Catch (BiffException e) (
e.printStackTrace ();
)
)
Cuando ejecuto esta función dentro de una aplicación normal de Java junto con todo lo JFace funciona bien. Pero cuando ejecuto esta función dentro de un proyecto RCP me sale el siguiente error:
java.lang.ClassNotFoundException: jxl.read.biff.BiffException
en org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal (BundleLoader.java: 494)
en org.eclipse.osgi.internal.loader.BundleLoader.findClass (BundleLoader.java: 410)
en org.eclipse.osgi.internal.loader.BundleLoader.findClass (BundleLoader.java: 398)
en org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass (DefaultClassLoader.java: 105)
en java.lang.ClassLoader.loadClass (Unknown Source)
en model.CollectionManager.newOilFor (CollectionManager.java: 120)
en model.CollectionManager.loadCollection (CollectionManager.java: 107)
en model.CollectionManager.getCollection (CollectionManager.java: 56)
en hellooil.CollectionViewContentProvider.getElements (CollectionViewContentProvider.java: 39)
...
¿Alguien sabe qué podría estar mal?
Estoy recibiendo este error cuando ejecuto el código escrito previamente. Realmente no entiendo el problema. Gracias de antemano.
jxl.read.biff.BiffException: No se puede reconocer flujo OLE
en jxl.read.biff.CompoundFile. (CompoundFile.java: 116)
en jxl.read.biff.File. (File.java: 127)
en jxl.Workbook.getWorkbook (Workbook.java: 268)
en ReadXLSheet.contentReading (ReadXLSheet.java: 55)
en ReadXLSheet.init (ReadXLSheet.java: 20)
en ReadXLSheet.main (ReadXLSheet.java: 109)
¿Alguien puede ayudarme por escrito al contenido de un archivo de Excel en un archivo XML en Java.
En realidad soy capaz de leer el archivo de Excel, pero estoy tratando de enviar los datos en el archivo XML a través de un objeto de FileWriter pero no su trabajo ...
por favor me proporcione algún código mejor.
_________________________________________________
Este es mi código que estoy tratando de ejecutar:
java.io.BufferedWriter importación;
java.io.File importación;
java.io.FileWriter importación;
importación java.io.IOException;
importación java.util .*;
jxl.Cell importación;
jxl.CellType importación;
jxl.Sheet importación;
jxl.Workbook importación;
jxl.read.biff.BiffException importación;
(public class ReadExcel
public void (String [] args) throws IOException (
String inputFile = "c: / Data.xls";
Archivo inputWorkbook = new File (inputFile);
Archivo FileOut = new File ("C: / data.xml");
FileWriter fw = nueva FileWriter (FileOut);
fw.write ("");
W libro;
try (
w = Workbook.getWorkbook (inputWorkbook);
/ / Obtener la primera hoja
Hoja de la hoja = w.getSheet (0);
/ / Recorrer primera columna y 10 líneas
for (int i = 0; i sheet.getColumns <(); i + +) (
for (int j = 0; j <sheet.getRows (); j + +) (
La célula de células sheet.getCell = (j, i);
/ / Tipo de CellType cell.getType = ();
if (cell.getType () == CellType.LABEL) (
fw.write ("" + cell.getContents ()+"");
)
if (cell.getType () == CellType.NUMBER) (
fw.write ("" + cell.getContents ()+"");
)
)
)
fw.write ("");
) Catch (BiffException e) (
e.printStackTrace ();
)
)
)
¿Alguien puede ayudarme por escrito el contenido de un archivo de Excel en un archivo XML en Java.
En realidad soy capaz de leer el archivo de Excel, pero estoy tratando de enviar los datos en el archivo XML a través de un objeto de FileWriter pero no su trabajo ...
por favor me proporcione algún código mejor.
_________________________________________________
Este es mi código que estoy tratando de ejecutar:
** NOTA: Yo no era capaz de escribir las etiquetas en este sitio, así que utiliza llaves para las etiquetas en lugar de llaves angulares
java.io.BufferedWriter importación;
java.io.File importación;
java.io.FileWriter importación;
importación java.io.IOException;
importación java.util .*;
jxl.Cell importación;
jxl.CellType importación;
jxl.Sheet importación;
jxl.Workbook importación;
jxl.read.biff.BiffException importación;
(public class ReadExcel
public void (String [] args) throws IOException (
String inputFile = "c: / Data.xls";
Archivo inputWorkbook = new File (inputFile);
Archivo FileOut = new File ("C: / data.xml");
FileWriter fw = nueva FileWriter (FileOut);
fw.write ("(raíz)");
W libro;
try (
w = Workbook.getWorkbook (inputWorkbook);
/ / Obtener la primera hoja
Hoja de la hoja = w.getSheet (0);
/ / Recorrer primera columna y 10 líneas
for (int i = 0; i sheet.getColumns <(); i + +) (
for (int j = 0; j <sheet.getRows (); j + +) (
La célula de células sheet.getCell = (j, i);
/ / Tipo de CellType cell.getType = ();
if (cell.getType () == CellType.LABEL) (
fw.write ("(tag)" cell.getContents + ()+"{/ etiqueta) ");
)
if (cell.getType () == CellType.NUMBER) (
fw.write ("(tag)" cell.getContents + ()+"{/ etiqueta) ");
)
)
)
fw.write ("(/ root)");
) Catch (BiffException e) (
e.printStackTrace ();
)
)
)
Hey cualquiera puede decirme de donde debo descargar el paquete JXL y dónde debo colocarlo para compilar el código fuente.