繁体   English   中英

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

[英]Crystal Reports takes hours to export to pdf by code

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

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

我尝试了几件事,例如 ExportToStream 并将 stream 保存到文件,或直接导出到磁盘,其他帖子确实读到“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, 0, bytesInStream.Length);
                fileStream.Write(bytesInStream, 0, bytesInStream.Length);
                fileStream.Close();
            }


        }

谢谢!

在花费了数天、数小时和头痛之后,我终于成功了。

在每个细节(大约 30.000 行)中,我有一个公式计算了一些值,其中包含两个细节字段和两个来自连接视图的字段。 当我通过代码导出时,视图是问题(在 Crystal Reports 中导出工作正常,没有延迟)。 我必须在 SQL 中创建一个新表,将视图中的所有行插入到这个新表中,然后将此表添加到报告中……瞧,它起作用了,在几秒钟内导出了报告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM