Bom dia!
Manjo bem pouco (quase nada) de POI e peguei um BO pra corrigir aqui no trabalho…
Tem um relatório enorme, com 66mil linhas que tá dando erro quando exporta…
07/02/2013 11:26:10 com.sun.faces.lifecycle.InvokeApplicationPhase execute
AVISO: Invalid row number (65536) outside allowable range (0..65535)
java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)
at org.apache.poi.hssf.usermodel.HSSFRow.setRowNum(HSSFRow.java:207)
at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:73)
at org.apache.poi.hssf.usermodel.HSSFSheet.createRow(HSSFSheet.java:204)
at org.primefaces.component.export.ExcelExporter.export(ExcelExporter.java:54)
at org.primefaces.component.export.DataExporter.processAction(DataExporter.java:94)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:777)
at javax.faces.component.UICommand.broadcast(UICommand.java:300)
at javax.faces.component.UIData.broadcast(UIData.java:915)
at org.primefaces.component.datatable.DataTable.broadcast(DataTable.java:630)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:115)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Esse é o erro…
o código está assim
[code]HSSFWorkbook wb = (HSSFWorkbook) document;
HSSFSheet sheet = wb.getSheetAt(0);
int rowNum = 0;
int cellNum = 0;
HSSFRow row = sheet.createRow(rowNum++);
for (int i = 0; i < getFieldList().size(); i++) {
if (getField().isVisible()) {
HSSFCell createCell = row.createCell(cellNum++);
createCell.setCellValue(getFieldList().get(i).getLabel());
}
}
for (int i = 0; i < result.size(); i++) {
cellNum = 0;
if(i == 60000){
sheet = wb.createSheet();
rowNum = 0;
}
row = sheet.createRow(rowNum++);
for (int j = 0; j < getFieldList().size(); j++) {
if (getField().isVisible()) {
HSSFCell createCell = row.createCell(cellNum++);
Object attribute = getColumn(result.get(i), getFieldList().get(j));
if (attribute instanceof Date) {
createCell.setCellValue((Date) attribute);
} else if (attribute instanceof Integer) {
createCell.setCellValue((Integer) attribute);
} else if (attribute instanceof BigDecimal) {
createCell.setCellValue(((BigDecimal) attribute).toString());
} else {
createCell.setCellValue((String) attribute);
}
}
}
}[/code]
Dei uma procurada no google, mas não encontrei nada. Debugando o código, o documento fica com 2 sheet, uma com 60k de registro e outro com 6k. A var rowNum = 6k e pouco… sinceramente não tenho mais ideia do que pode ser.
E se alguém souber se tem um jeito certo pra jogar pra outra sheet, por favor me fale rs tirar aquela gambi dali haha
Desde já agradeço, caras!