style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Problema de POI Invalid Head read .....

Gracias por sus comentarios.

Compañeros tengo el siguiente error al querer acceder a un xls generado de la siguiente manera

URL url = new URL(urlReporte);
        BufferedInputStream bufferedInputStream = new BufferedInputStream(url.openStream());

        FileOutputStream fileOutputStream = new FileOutputStream("/home/rjasso/ReportesFH/nameFile.xls");
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

        byte data[] = new byte[1024];
        int counter;
        while ((counter = bufferedInputStream.read(data, 0, 1024)) != -1) {
            bufferedOutputStream.write(data, 0, counter);

        }
        bufferedOutputStream.close();
        fileOutputStream.close();
        bufferedInputStream.close();

Lo genera correctamente pero al querer accederlo de la siguiente manera

FileInputStream fileInputStream = new FileInputStream("/home/rjasso/ReportesFH/nameFile.xls");
            POIFSFileSystem fsFileSystem = new POIFSFileSystem(fileInputStream); -- Linea donde marca el error
              ------- etc

me marca el siguiente error: Invalid header signature; read 939577809081207309, expected -2226271756974174256
at org.apache.poi.poifs.storage.HeaderBlockReader.(HeaderBlockReader.java:112)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.(POIFSFileSystem.java:151)

Estoy leyendo que esto pasa porque lo crea como un archivo de texto plano con extencion xls como forzarlo a que sea un contentType Excel bueno es lo que se me ocurre , Desde ya muchas gracias.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de rj@vasso

Investigando a fondo

El error es porque cuando creo el excel de la manera que lo hago lo genera como un archivo de texto plano , al momento de abrirlo con excel en windos me dice la siguiente leyenda "El archovo que intenta abrir 'NameFile.xls' tiene otro formato que el especificado por la extencion del archivo asegurese que es confiable Desea abrirlo ? " Si le indico que si, lo abre perfectamente .... Pero como arreglar este problema con java ?

Una de las soluciones que lei es que lo abra con excel y lo guarde nuevamente con el asistente , Efectivamente funciona pero no es el escenario que estoy buscando ya que debo de abrirlo desde http;// etc etc .... Guardarlo en excel y posteriormente acceder a el para obtener la informacion ... todo este desde java... alguien tendra una idea de como resolverlo .... Gracias

Imagen de neko069

Poi

Haz intentado con los ejemplos que están en la guía rápida de Apache POI? (específicamente el primer ejemplo te dice cómo creas un workBook a partir de un stream).

        URL url = new URL( "http://www.fechac.org/pdf/solicitud/guia_para_presentacion_de_proyectos.xls" );
        BufferedInputStream bufferedInputStream = new BufferedInputStream( url.openStream() );
        Workbook workBook = new HSSFWorkbook(bufferedInputStream);
        FileOutputStream fileOutputStream = new FileOutputStream("c:/elEjemplodeArchivoExcelBajadoConApachePoi.xls");
        workBook.write(fileOutputStream);              
               
        fileOutputStream.close();
        bufferedInputStream.close();

El ejemplo que te pongo funciona, lo acabo de probar ;-)
De nada, otro café a la cuenta.
Have a nice day.

Imagen de rj@vasso

Me sigue saliendo el error

java.io.IOException: Invalid header signature; read 939577809081207309, expected -2226271756974174256

Nose a que se deba pero una al parecer es mi URL en la que se encuentra mi Xls , te la comparto para ver si tienes alguna observacion :

http://marketnews.usda.gov/gear/usda/report_output_xls.jsp?/portal/fv?&r...

Imagen de neko069

Pues mira ... encontré

Pues mira ... encontré ésto.
Resulta que el archivo excel que jalas a tu máquina, no es un excel propiamente .. la posible solución es más como lo menciones en tu segundo post, peeeeero:

Cámbiale la extensión al archivo por .htm y ábrelo con firefox...te va a abrir una tabla de html.

O sea, tendrías que bajar el archivo, con la extensión que te digo, y de ahí, leerlo con un parseador, Jericho html y htmlParser son un par de opciones.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">