首页 > 解决方案 > 水晶报表导出需要永远

问题描述

我正在努力将 Crystal Report 导出到 Word 文档。

我正在使用以下代码创建报告:

using (ReportDocument initRep = report.SetUpReportDocument(rep, loadId))
{
    string filePath = @"C:\word2Pdf\";
    string fileName = Guid.NewGuid().ToString() + "wordReport.doc";

    var fileNameAndPath = filePath + fileName;
    initRep.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.WordForWindows, fileNameAndPath);
 }

问题出在这行代码上:

 initRep.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.WordForWindows, fileNameAndPath);

这是永远的,没有任何错误。

我的报告有 4 个子报告,它们通过唯一的 Id ( ) 链接到主报告loadId

我在这里甚至在这里进行了很多研究,并且...

当我使用 SQL Server Profiler 进行检查时,我发现查询没有暂停,而且查询似乎在尖叫循环中运行。我真的需要这个来出口,SOS。

标签: c#asp.netasp.net-mvccrystal-reportswebapi

解决方案


如果这些子报表在重复部分中(详细信息最差),那么主报表中的每个子报表都会有一个查询。也就是说,如果您的主报表有 1000 条记录,而子报表位于详细信息部分,那么您将有 4001 个查询(1 个用于主报表,然后 1000 个用于每个子报表)。要进行测试,请删除所有子报表,然后一一添加回来,看看是否有一个比其他的差。它在 Crystal Reports 设计器中不会那么明显,因为 Crystal 只会在您导航到页面时运行子报表。尝试将总页数添加到第一页以查看可怕的结果。

解决方案通常是在查询中完成工作或使用 SQL 函数。仅取决于您的报告需求。


推荐阅读