Foi o que entendi quando vi a exceção gerada quando executei uns testes com a classe abaixo.
A exceção foi essa:
Detalhe: a tabela que estou lendo tem mais de 45.000 registros. Consigo executar a classe trazendo até uns 24.000 registros, quando passo para 25.000 é que acontece essa exceção.
O código é esse aí. Se alguém puder dar uma força…
import java.sql.*;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.engine.JRExporterParameter;
import java.io.OutputStream;
public class RelatorioTransacoesExcel
{
// método construtor
public RelatorioTransacoesExcel()
{
} // fim do método construtor
public static void main( String args[] )
{
runReport( "jdbc:oracle:thin:@localhost:1521:beckwith", "dbadmin", "dbadmin", "RelatorioTransacoes.jasper" );
}
// método que retorna conexão com o banco de dados
public static Connection conexaoBD( String banco, String usuario, String senha )
{
Connection conexao = null;
try
{
Class.forName( "oracle.jdbc.driver.OracleDriver" );
conexao = DriverManager.getConnection( banco, usuario, senha );
}
catch( Exception ex )
{
String mensagem = "Falha na conexão com banco: "+ ex.getMessage() + " " + ex.getLocalizedMessage();
System.out.println( mensagem );
}
return conexao;
} // fim do método conexaoBD
public static void runReport( String banco, String usuario, String senha, String relatorio )
{
try
{
Connection conexao = conexaoBD( banco, usuario, senha );
JasperPrint jasperPrint = JasperFillManager.fillReport( relatorio, null, conexao );
JRXlsExporter exporterXLS = new JRXlsExporter();
exporterXLS.setParameter( JRExporterParameter.JASPER_PRINT, jasperPrint );
exporterXLS.setParameter( JRExporterParameter.OUTPUT_FILE_NAME, "Novoteste.xls" );
exporterXLS.setParameter( JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE );
// parâmetro que exibe as linhas de grade das células no excel
exporterXLS.setParameter( JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE );
// parâmetro que remove linhas em branco geradas pela quebra de página
exporterXLS.setParameter( JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE );
exporterXLS.exportReport();
}
catch( Exception ex )
{
String mensagem = "Falha na criação do relatório " + ex.getMessage() + " " + ex.getLocalizedMessage();
System.out.println( mensagem );
}
}
}