Apache POI não atualiza celula e corrompe arquivo (Servlet)
4 respostasResolvido
excelwebapacheservletjava
Y
yurifarod
Oá, tudo bom ?
Estou tendo o seguinte problema: Tenho um sistema web que faz a leitura e apresentação de vários arquivos em Excel. As apresentações estão todas funcionando perfeitamente (leituras), entretanto um módulo terá de atualizar uma célula arquivo. Fiz dezenas de teste sempre com o mesmo resultado, o servlet me retorna erro e arquivo .xls é corrompido.
Segue código para avaliação:
# HTTP Status 500 - Servlet execution threw an exception**type**Exceptionreport**message**Servletexecutionthrewanexception**description**Theserverencounteredaninternalerrorthatpreventeditfromfulfillingthisrequest.**exception**javax.servlet.ServletException:Servletexecutionthrewanexceptionorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)**rootcause**java.lang.NoClassDefFoundError:org/apache/commons/collections4/bidimap/TreeBidiMaporg.apache.poi.hpsf.Section.<init>(Section.java:182)org.apache.poi.hpsf.PropertySet.init(PropertySet.java:497)org.apache.poi.hpsf.PropertySet.<init>(PropertySet.java:195)org.apache.poi.hpsf.DocumentSummaryInformation.<init>(DocumentSummaryInformation.java:111)org.apache.poi.hpsf.PropertySetFactory.create(PropertySetFactory.java:115)org.apache.poi.POIDocument.getPropertySet(POIDocument.java:226)org.apache.poi.POIDocument.getPropertySet(POIDocument.java:185)org.apache.poi.POIDocument.readPropertySet(POIDocument.java:160)org.apache.poi.POIDocument.readProperties(POIDocument.java:143)org.apache.poi.hssf.usermodel.HSSFWorkbook.updateEncryptionInfo(HSSFWorkbook.java:2243)org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:1465)org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1387)org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1375)psb_classes.Cadastrar.processRequest(Cadastrar.java:82)psb_classes.Cadastrar.doGet(Cadastrar.java:101)javax.servlet.http.HttpServlet.service(HttpServlet.java:621)javax.servlet.http.HttpServlet.service(HttpServlet.java:728)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)**rootcause**java.lang.ClassNotFoundException:org.apache.commons.collections4.bidimap.TreeBidiMaporg.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)org.apache.poi.hpsf.Section.<init>(Section.java:182)org.apache.poi.hpsf.PropertySet.init(PropertySet.java:497)org.apache.poi.hpsf.PropertySet.<init>(PropertySet.java:195)org.apache.poi.hpsf.DocumentSummaryInformation.<init>(DocumentSummaryInformation.java:111)org.apache.poi.hpsf.PropertySetFactory.create(PropertySetFactory.java:115)org.apache.poi.POIDocument.getPropertySet(POIDocument.java:226)org.apache.poi.POIDocument.getPropertySet(POIDocument.java:185)org.apache.poi.POIDocument.readPropertySet(POIDocument.java:160)org.apache.poi.POIDocument.readProperties(POIDocument.java:143)org.apache.poi.hssf.usermodel.HSSFWorkbook.updateEncryptionInfo(HSSFWorkbook.java:2243)org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:1465)org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1387)org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1375)psb_classes.Cadastrar.processRequest(Cadastrar.java:82)psb_classes.Cadastrar.doGet(Cadastrar.java:101)javax.servlet.http.HttpServlet.service(HttpServlet.java:621)javax.servlet.http.HttpServlet.service(HttpServlet.java:728)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
Parece que é um erro gerado pela última atualização do Apache POI, rodei alguns fóruns gringos e eles deixaram essa classe “faltando” no jar.
Vou testar quando chegar em casa, mas ao que parece é isso!