JXL e Apache Poi Parsing Excel com objetos de imagem anexados
-
12-09-2019 - |
Pergunta
Eu tentei usar o JXL e o Apache POI para carregar dados de um arquivo do Excel, até agora o mecanismo JXL funcionou bem. Mesmo se eu incorporar uma imagens no arquivo.
Recebi um arquivo de uma fonte que não analisa, recebo a seguinte exceção com POI
Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0xE2 left 2 bytes remaining still to be read.
at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:124)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:402)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:277)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:202)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:184)
at testXlsParsers.main(TestXlsParsers.java:19)
E com JXL eu recebo um índice dos limites
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:546)
at java.util.ArrayList.get(ArrayList.java:321)
at jxl.read.biff.WorkbookParser.getSheet(WorkbookParser.java:247)
at ParserXLS.parse(ParserXLS.java:27)
at ParserXLS.main(ParserXLS.java:46)
O arquivo carrega no Excel, mas não no escritório aberto e a única coisa que posso ver nos dados brutos é o objeto relacionado ao Adobe XMP Core 4.1 ... que parece ser a causa do problema, se eu remover a imagem, ele funcionar bem ... se eu colocar outro jpg em sua boa.
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.277092, Fri Feb 23 2007 14:16:18 ">
Existe alguma maneira de ignorar isso? Como eu iria analisar esse arquivo.
Obrigado.
Solução
Uma coisa a tentar é usar uma versão mais recente do apache poi - bugs como esse são corrigidos ao longo do tempo.
Se a versão mais recente do POI não ajudar (3.8 beta 2 até a redação), você deverá abrir um novo bug no POI Bugzilla e fazer o upload do arquivo de problemas. A exceção que você está vendo é causada por POI acreditar que deve haver uma certa quantidade de dados e encontrar mais. Com o arquivo, será possível identificar por que esses dados estão lá e contorná -lo. (Isto é, assumindo que ainda não foi consertado!)