Crystal Reports需要数小时才能通过代码导出为pdf

问题描述

很长一段时间以来,我一直面临这个问题,几个月后我仍然找不到任何解决方案。这是场景: VS 2019,Framework 4.6和Crystal报告13_0_27。

以下代码需要几个小时才能导出pdf(约400页和30.000行)。如果我打开报告 使用Crystal报告和导出文档,通过代码进行相同的查询,只需几秒钟。

我尝试了几件事,例如ExportToStream并将流保存到文件,或直接导出到磁盘 其他文章确实读到“ pdfFormatOptions.UsePageRange = True”应该有帮助,但结果相同。

该代码适用于具有100行的小型pdf。

Informe.Load(Application.StartupPath + @"\informes\report.rpt");

        for (i = 0; i < Informe.Database.Tables.Count; ++i)
        {
            logOnInfo.ConnectionInfo.ServerName = "Server";
            logOnInfo.ConnectionInfo.DatabaseName = "BBDD";
            logOnInfo.ConnectionInfo.UserID = "user";
            logOnInfo.ConnectionInfo.Password = "user";
            Informe.Database.Tables[i].ApplyLogOnInfo(logOnInfo);
        }

        diskOpts.DiskFileName = PDFPath + _cabe.Guid + "_minutos.pdf";
        ExportOptions exportOpts2 = Informe.ExportOptions;
        exportOpts2.DestinationOptions = diskOpts;
        exportOpts2.ExportFormatType = ExportFormatType.PortableDocFormat;
        exportOpts2.ExportDestinationType = ExportDestinationType.DiskFile;
        
        try
        {
            Informe.RecordSelectionFormula = @" {CabeceraFacturas.Guid}='{" + _cabe.Guid.ToString() + "}'";
            //Informe.Export();
            Stream oStream;
            oStream = (Stream)Informe.ExportToStream(ExportFormatType.PortableDocFormat);

            using (FileStream fileStream = File.Create(RutaGeneracionPDF + _cabe.Guid + "_minutos.pdf",(int)oStream.Length))
            {
                byte[] bytesInStream = new byte[oStream.Length];
                oStream.Read(bytesInStream,bytesInStream.Length);
                fileStream.Write(bytesInStream,bytesInStream.Length);
                fileStream.Close();
            }


        }

谢谢!

解决方法

经过数小时和数小时的头痛之后,我终于做到了。

在每个详细信息(约30.000行)中,我都有一个公式,该公式计算了一些值,其中包含两个详细信息字段和两个来自联合视图的字段。当我通过代码导出时,该视图就是问题(Crystal Reports中的导出工作正常,没有延迟)。我必须用SQL创建一个新表,将所有视图中的行插入到该新表中,然后将此表添加到报表中。.voilá,它可以正常工作,并且可以在几秒钟内导出报表。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...