Está en la página 1de 3

Leer Excel desde Java como si fuera una Base de Datos - ChuWiki

1 de 3

http://chuwiki.chuidiang.org/index.php?title=Leer_Excel_desde_Java_co...

JDBC-to-ODBC Bridge
For Windows, OS X, Linux, Unix. OpenLink Software,
since 1993.
uda.openlinksw.com/jdbc-odbc-st/

Curso Struts Framework


Aprende a programar en Framework Struts con los
mejores. Compra aqu
www.globalmentoring.com.mx

AMQP meets JMS


AMQP 1.0 fully integrated with JMS, free AMQP 1.0
Client!
www.swiftmq.com

ERP Systems List


Free expert ratings of ERP systems. Make your own
professional reports!
SoftwareResearchTools.com/free_rep

Leer Excel desde Java como si fuera una Base de


Datos
0

Twittear

De ChuWiki

Contenido
1 Configurar la fuente de datos
2 Cdigo java
3 Tablas
3.1 Nombre de las tablas
3.2 Catlogos

Desde java y usando el driver ojdb, podemos acceder a un fichero Excel como si fuera una base de datos, de
forma que podremos leer su contenido o escribir en l. Veamos aqu cmo.

Configurar la fuente de datos


Lo primero que tenemos que hacer, en windows, es configurar el fichero excel como si fuera una fuente de datos.
Puedes ver el vdeo de cmo configurar un excel como fuente de datos.
Screencasts and videos online (http://www.screentoaster.com/)
Si lo prefieres puedes ver los pasos detallados en Conectar Java con Access, aunque all se habla de un fichero
Access y ficheros .mdb. Debes hacer lo mismo, pero eligiendo un Driver de excel y un fichero .xls

Cdigo java

30/01/2012 1:39

Leer Excel desde Java como si fuera una Base de Datos - ChuWiki

2 de 3

http://chuwiki.chuidiang.org/index.php?title=Leer_Excel_desde_Java_co...

Smplemente debemos abrir la conexin como si fuera una base de datos normal, usando el Driver
sun.jdbc.odbc.JdbcOdbcDriver. El cdigo puede ser como este
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conexion = DriverManager.getConnection("jdbc:odbc:un_excel");

donde "un_excel" es el nombre que elegimos para la fuente de datos cuando la configuramos en el paso anterior.
A partir de aqu, el cdigo es el normal para acceso a cualquier base de datos (http://www.chuidiang.com
/java/mysql/EjemploJava.php) , usando los Statement y ResultSet. Podemos leer o insertar, si al configurar en la
fuente de datos desmarcamos el check de "slo lectura".
Smplemente comentar un par de cosas:

Tablas
En un excel se considera que cada una de las hojas dentro del fichero excel es una tabla. Las columnas de la tabla
sern los nombres que aparecen en la primera fila (no las letras A,B,C...). As, por ejemplo, el siguiente trozo de
cdigo java
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conexion = DriverManager
.getConnection("jdbc:odbc:un_excel");
Statement st = conexion.createStatement();
st.execute("create table kk2 (id NUMBER, nombre TEXT, precio NUMBER)");
st.execute("INSERT INTO kk2 (id,nombre,precio) "
+ "VALUES (1,'hola',12.52)");
conexion.close();
} catch (Exception e) {
e.printStackTrace();
}

Dar como resultado la siguiente hoja de excel

30/01/2012 1:39

Leer Excel desde Java como si fuera una Base de Datos - ChuWiki

3 de 3

http://chuwiki.chuidiang.org/index.php?title=Leer_Excel_desde_Java_co...

Nombre de las tablas


Si el fihero excel se ha creado con la aplicacin excel en vez de con nuestra aplicacin java, desde java veremos
los nombres de las hojas (de las tablas) con un $ detrs. Por ejemplo, si el excel tiene una pestaa etiquetada
"Nov2004", desde java la veremos como "Nov2004$". La forma de acceder a ellos con una SQL sin que nos de
error por el carcter $, es poniendo el nombre de la tabla con el $ y todo ello entre corchetes, as [Nov2004$]
ResultSet rs = st.executeQuery("select * from [Nov2004$]");

Si la tabla la hemos creado nosotros con un "create table", no es necesario este $ al consultarla.

Catlogos
Los catlogos que considera la base de datos son los ficheros Excel. Cuando abrimos nuestra fuente de datos que
apunta a un fichero excel, el catlogo que estamos usando es ese fichero excel. Sin embargo, tendremos como
catlogos accesibles todos los ficheros excel que haya en el mismo directorio del fichero excel que hemos elegido.
Y si cambiamos de catlogo y ponemos uno que no existe, estaremos creando un fichero excel nuevo en ese
directorio.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conexion = DriverManager.getConnection("jdbc:odbc:un_excel");
conexion.setCatalog("nuevoCatalogo");

Ese trozo de cdigo utilizar el fichero "nuevoCatalogo.xls", independientemente del fichero que hayamos
indicado en la fuente de datos "un_excel". Si ese fichero nuevoCatalogo.xls existe, ser el que se use. Si no existe,
lo crear (debemos nosotros, desde java, crear las tablas correspondientes y las columnas para cada una de ellas).
Obtenido de "http://chuwiki.chuidiang.org
/index.php?title=Leer_Excel_desde_Java_como_si_fuera_una_Base_de_Datos"
Categora: Java:Base de datos
Oracle Licenses Worldwide Get the Oracle licenses at discounts from Oracle Partner www.pontis.biz
Oracle Industry Apps Compare ERP vendors to Oracle and implement your closest match. ERP.technologyevaluation.com
Pregunte al Tcnico 5 Tcnicos estn en lnea. Pregunte y obtenga su respuesta ya! JustAnswer.es/electronica-es

Esta pgina fue modificada por ltima vez el 05:26, 3 dic 2011.

Esta obra est bajo una licencia de Creative Commons.


Para reconocer la autora debes poner http://www.chuidiang.com/chuwiki

30/01/2012 1:39

También podría gustarte