Problema con JExcel

A ver si me pueden ayudar:
Me creo un libro Excel a través de una tabla de Access, y me lo guarda con extensión xls.
No entiendo porque al tratarlo desde Java, en donde lo abro, almaceno la información en variables, y lo subo a una tabla a Oracle me da error.
Si el archivo lo creo desde Excel, a partir de un txt, no me sale éste error, pero siendo creado desde Access, si me aparece.
Este es el error que me aparece:
Error : jxl. Read. Biff. BiffException: Unable to recognize OLE stream
Unable to recognize OLE stream
Jxl. Read. Biff. BiffException: Unable to recognize OLE stream
At jxl. Read. Biff. CompoundFile.<init>(CompoundFile.java:116)
At jxl. Read. Biff. File.<init>(File.java:127)
At jxl. Workbook.getWorkbook(Workbook.java:221)
At jxl. Workbook.getWorkbook(Workbook.java:198)
Leyendo por ahí he mirado que este error suele ser causa de que el archivo no está con la extensión xls, pero no es mi caso... Entonces no entiendo por qué puede ser.
Respuesta
1
Parece un error difícil de descifrar. ¿Qué versión de JExcel usas? Si no es la última (2.6.9) puedes probar a actualizarla. ¿Qué versión de Access? ¿A qué tipo version de excel estás exportando la tabla? Ten en cuenta las especificaciones de JExcel (# Reads data from Excel 95, 97, 2000, XP, and 2003 workbooks
# Reads and writes formulas (Excel 97 and later only) )
Yo apostaría a que es una cuestión de versión del excel o de que contiene datos introducidos por Access que JExcel no soporta.
Gracias por contestar tan deprisa...
Pues a ver, el problema no está en el JExcel, puesto que tengo un libro de excel generado a partir de un tx que me funciona, abre bien el libro, trata los datos de éste, y después lo sube a la tabla de Oracle
El problema es cuando me genero el Excel a partir del Access, que es con éste libro Excel con el que me aparece ese error
Utilizo Access 2003 y Excel 2003
Si en vez de guardar la tabla de Access como xls, pruebo a abrirla como txt, me saca bastante basura... no sé si puede ser por eso el fallo...
Gracias por contestar tan rápido, cualquier ayuda me es buena, a ver si lo consigo
Un saludo
¿Has probado a exportar del Access 2003 a diferentes formatos de Excel?
Desde Access 2003 puedes exportar a Excel 3, 4, 5-7 y 97-2003. Prueba a exportar a todos esas versiones y prueba con cada una de ellas. Para descartar si es un problema de versión del excel.
Ahora tengo que salir pero a las 4 veré los resultados de las pruebas.
Puff... A ver, tengo 21 años, es mi primer trabajo y estoy solo en cliente, con solo una informática que tiene mucho curro...
La verdad es que no tengo demasiados conocimientos y lo que consigo es a través de internet, buscando, rebuscando, y pegándome con ello...
Lo que utilizo yo para exportar de Access a Excel es ésta función:
Dim ruta As String
Dim proyecto As String
Dim version As String
proyecto = InputBox("Introduce el proyecto al que pertenece el archivo")
version = InputBox("Introduce la version del archivo")
ruta = "D:\datos\Acces\CatalogoAccion_" & Format(Now, "YYYYMMDD") & "_v" & version & "_" & proyecto & ".xls"
MsgBox (ruta)
DoCmd.TransferSpreadsheet acExport, , "MACRO_EXPORTACION", ruta, True, ""
No sé como tengo que hacer para exportarlo a otra version de Excel
Necesito que sea un proceso automático par ahacer todos los días, utilizo las macros para ello... y utilizo los informes para dejarlo echo mediante botones
Gracias por la ayuda, un saludo
Eso es lo que hacemos los informáticos, buscar, rebuscar y pegarnos. La única diferencia suele ser los años que llevamos haciéndolo.
Como puedes ver aquí:
http://msdn.microsoft.com/en-us/library/aa220766.aspx
Si en el segundo parámetro de la llamada a TransferSpreadsheet no pones nada usará excel 8 o excel 9 como tipo de exportación. En estos casos cuanto más moderno es un formato más problemas puede dar (Sobre todo leyéndolo con una librería que no está patrocinada por Microsoft, precisamente)
Prueba a usar como segundo parámetro los que te indica en esa página para excel7 y hacia abajo (acSpreadsheetTypeExcel7, ... 6, ...) y a ver que pasa
He probado con estos...
acSpreadsheetTypeExcel3
acSpreadsheetTypeExcel4
acSpreadsheetTypeExcel5
acSpreadsheetTypeExcel7
Ninguno funciona, me sigue dando el mismo error
Gracias por contestar tan deprisa, un saludo
Prueba tambien acSpreadsheetTypeExcel8 y acSpreadsheetTypeExcel9, para descartarlo del todo. Sigo investigando...
Otra cosa. ¿Los archivos excel que ese código VB generan se pueden abrir sin problemas en Excel? Si los abres en Excel y los guardas con otro formato o version, ¿los lee el JExcel?
El 8 y el 9 me dan fallo... directamente parece que Access 2003 no los reconoce...
El archivo que me genera el Access es un .xls, y se puede abrir perfectamente en Excel... saca algunos mensajes de error como que un número ha sido almacenado como cadena y poco más...
Es lo que no entiendo, que está con extensión .xls y que se abre bien con Excel
Y sin embargo me da fallo, y el que me genero en Excel a partir de un archivo de texto no...
Un saludo
Me temo que es lo que tienen las librerías gratuitas, que no son 100% fiables. Deberías postear en la página de desarrollo de JExcel y preguntar allí a qué puede ser debido que el xls generado por Access no se pueda leer con la librería. A lo mejor saben por qué o no se les ha presentado ese caso aún.
Prueba a después de abrir el archivo con Excel y guardarlo con otro formato o versión en el propio Excel y ver si así lo reconoce.
La grabo con formato txt o csv, se me graba de la forma
"miarchivo.txt.xls"
Y después me lo abre sin problema...
¿Cuál es esa página?
Gracias por contestar y un saludo
La página principal:
http://jexcelapi.sourceforge.net/
Y la de los foros (hace falta registro):
http://tech.groups.yahoo.com/group/JExcelApi/
Siento no haber podido ayudarte al final. A veces los problemas son demasiado complicados o directamente no tienen solución de la manera que esperamos.

1 respuesta más de otro experto

Respuesta
Lo siento pero no tengo ni idea de que se pueda tratar, nunca he trabajado con archivos excel de esta forma

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas