Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 动态报表导出pdf/excel报表花费太多时间_Java_Jasper Reports_Dynamic Reports - Fatal编程技术网

Java 动态报表导出pdf/excel报表花费太多时间

Java 动态报表导出pdf/excel报表花费太多时间,java,jasper-reports,dynamic-reports,Java,Jasper Reports,Dynamic Reports,我从数据库中获取了26000条记录,并将其放入一个列表中,而将该列表导出为PDF或excel会占用太多时间 report.toXlsx(new FileOutputStream(fileForXls)); 执行上述命令需要30到40秒。 如何减少其执行时间 代码 public synchronized String execute(){ JasperReportBuilder report = DynamicReports.report();//a new repor

我从数据库中获取了26000条记录,并将其放入一个列表中,而将该列表导出为PDF或excel会占用太多时间

report.toXlsx(new FileOutputStream(fileForXls));
执行上述命令需要30到40秒。 如何减少其执行时间

代码

 public synchronized String execute(){
            JasperReportBuilder report = DynamicReports.report();//a new report
            StyleBuilder boldStyle  = DynamicReports.stl.style().bold();
            StyleBuilder boldCenteredStyle = DynamicReports.stl.style(boldStyle)
                    .setHorizontalAlignment(HorizontalAlignment.CENTER);

            StyleBuilder columnTitleStyle  = DynamicReports.stl.style(boldCenteredStyle)
                    .setBorder(DynamicReports.stl.pen1Point())
                    .setBackgroundColor(Color.LIGHT_GRAY);


            report
              .columns(
                  Columns.column("Sr #", "srNumber",DataTypes.integerType()).setWidth(40).setHorizontalAlignment(HorizontalAlignment.LEFT),
                  Columns.column("IR No", "irNo", DataTypes.stringType()).setWidth(130),
                  Columns.column("Status", "state", DataTypes.stringType()));

            report.columnGrid()
                    .setIgnorePageWidth(true)
                    .title( // title of the report
                    Components
                            .text("IR Report")
                            .setStyle(boldCenteredStyle)
                            .setHorizontalAlignment(
                                    HorizontalAlignment.CENTER))
                    .setColumnTitleStyle(columnTitleStyle)
                    .highlightDetailEvenRows()
                    .pageFooter(
                            Components.pageXofY().setStyle(
                                    boldCenteredStyle))
                    .setDataSource(createDataSource());

            String fileForXls="D:/IRReport.xlsx";

            report.toXlsx(new FileOutputStream(fileForXls)); //time consuming code

return SUCCESS;
}

private JRDataSource createDataSource() {
    DRDataSource dataSource = new DRDataSource("srNumber","irNo", "state");
    List<ResultHeaderBean> data1= irdao.getAllRecords(); //returns List of 26000 records
    int count=0;
    for(ResultHeaderBean data:data1 ){
        count=++count;
        dataSource.add(count,crdata.getIrNumber(), crdata.getStatus());
    }
    return dataSource;
}
公共同步字符串执行(){
JasperReportBuilder report=DynamicReports.report();//新报告
StyleBuilder boldStyle=DynamicReports.stl.style().bold();
StyleBuilder boldCenteredStyle=DynamicReports.stl.style(boldStyle)
.setHorizontalAlignment(HorizontalAlignment.CENTER);
StyleBuilder columnTitleStyle=DynamicReports.stl.style(boldCenteredStyle)
.setboorder(DynamicReports.stl.pen1Point())
.setBackgroundColor(颜色:浅灰色);
报告
.栏目(
Columns.column(“Sr#”,“srNumber”,DataTypes.integerType()).setWidth(40).setHorizontalAlignment(HorizontalAlignment.LEFT),
Columns.column(“IR No”,“irNo”,DataTypes.stringType()).setWidth(130),
Columns.column(“Status”、“state”、DataTypes.stringType());
report.columnGrid()
.setIgnorePageWidth(真)
.title(//报告的标题
组件
.文本(“IR报告”)
.setStyle(粗体中心样式)
.setHorizontalAlignment(
水平对齐(中心)
.setColumnTitleStyle(columnTitleStyle)
.highlightDetailEvenRows()
.pageFooter(
Components.pageXofY().setStyle(
粗体(中心样式)
.setDataSource(createDataSource());
字符串fileForXls=“D:/unreport.xlsx”;
report.toXlsx(新文件输出流(fileForXls));//耗时代码
回归成功;
}
私有JRDataSource createDataSource(){
DRDataSource数据源=新的DRDataSource(“srNumber”、“irNo”、“state”);
List data1=irdao.getAllRecords();//返回26000条记录的列表
整数计数=0;
for(resultTheaderbean数据:data1){
计数=++计数;
add(count,crdata.getIrNumber(),crdata.getStatus());
}
返回数据源;
}

这仍然是每秒866个项目。完整代码花费了30秒?从包含的数据库读取?从数据库读取只需1或2秒,report.toXlxs()需要30秒您可以查看JRFileVirtualizer您是否尝试使用探查器?我没有使用profiler@AlexK