找回密码
 立即注册

QQ登录

只需一步,快速开始

gotoStudy

注册会员

16

主题

46

帖子

148

积分

注册会员

积分
148
gotoStudy
注册会员   /  发表于:2016-4-6 10:35  /   查看:7232  /  回复:11
本帖最后由 Lenka.Guo 于 2016-4-6 11:43 编辑

报表数据60页,导出PDF和excel的速度非常慢,要十来分钟,能有办法提升下速度吗

11 个回复

倒序浏览
gotoStudy
注册会员   /  发表于:2016-4-7 16:02:00
推荐
本帖最后由 gotoStudy 于 2016-4-7 16:20 编辑
Lenka.Guo 发表于 2016-4-7 15:54
那就是,在前端页面处理导出请求比较慢了,而不是导出过程了?
您可以试着用这个工具,将报表转换后(注 ...

我调试过,不是前台页面的问题,是导出代码:_reportRuntime.Render(_renderingExtentionExcel,_provider, excelSetting.GetSettings());  执行的速度慢的问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-4-6 11:43:15
沙发
感谢您的反馈

我在本地测试,使用报表设计器导出 43页的报表(830条数据,每条包含10列数据) 导出PDF 时间 需要4s左右的时间。

能否反馈下您的导出环境,数据量 以及报表结构,我在这边重现下您的问题。通常来讲,60页的数据导出效率不会那么低的。

评分

参与人数 1满意度 +5 收起 理由
gotoStudy + 5

查看全部评分

回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-4-7 11:01:40
板凳
本帖最后由 gotoStudy 于 2016-4-7 11:10 编辑
Lenka.Guo 发表于 2016-4-6 11:43
感谢您的反馈

我在本地测试,使用报表设计器导出 43页的报表(830条数据,每条包含10列数据) 导出PDF  ...

i5,8G PC主机,VS2015+MVC,
导出数据57页,(总共3371条数据,每条包含16列)数据库源是存储过程取出来的,直接在数据库执行存储过程时间<1ms,报表显示在页面的速度大概在4s左右,还有报表时进行了分组显示的,列父分组大概是8列,子分组大概是2列,主要代码如下
  1.   

  2. System.IO.MemoryStream ms = new System.IO.MemoryStream();//存储返回的文件流
  3.             PageReport report = new PageReport(new FileInfo(Server.MapPath(filename)));
  4.             report.Report.ReportParameters[0].DefaultValue.Values.Add(examIds);
  5.             GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(report);

  6.             GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider _provider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();

  7.             switch (exporttype)
  8.             {
  9.                 case 1://导出Pdf
  10.                     GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension _renderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();                 
  11.                     _reportRuntime.Render(_renderingExtension, _provider);                  
  12.                     contentType = "application/pdf";
  13.                     fileShuffix = ".pdf";
  14.                     break;
  15.                 case 2:////导出Excel
  16.                     //GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice _renderingExtentionExcel = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice();
  17.                     GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension _renderingExtentionExcel = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
  18.                     GrapeCity.ActiveReports.Export.Excel.Page.Settings s = new GrapeCity.ActiveReports.Export.Excel.Page.Settings();

  19.                     GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings
  20.           excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
  21.                     excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
  22.                     GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;
  23.                     excelSetting.MultiSheet = false;                  
  24.                     excelSetting.Pagination = false;

  25.                     _reportRuntime.Render(_renderingExtentionExcel,_provider, excelSetting.GetSettings());                  
  26.                     contentType = "application/vnd.ms-excel";
  27.                     fileShuffix = ".xls";
  28.                     break;
  29.                 default:
  30.                     break;

  31.             }
  32.             _provider.GetPrimaryStream().OpenStream().CopyTo(ms);
  33.             return File(ms.ToArray(), contentType, exportname + System.DateTime.Now.ToString("yyyyMMddHHmmss") + fileShuffix);
复制代码

回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-4-7 11:29:15
地板
gotoStudy 发表于 2016-4-7 11:01
i5,8G PC主机,VS2015+MVC,
导出数据57页,(总共3371条数据,每条包含16列)数据库源是存储过程取出来 ...

您好,谢谢您的反馈,

因为要重新问题,搭建您的环境需要一定的时间,为了调查导出Excel文件的具体速度,希望您能够给我们提供尽可能多的信息。
导出为Excel文件的速度,从报表的角度而言主要由三方面原因决定的:报表结构,数据量;报表样式。

您的报表结构是怎么样的,可以截图?生成的Excel文件大概多少MB?
您能够通过工具检测导出的具体时间吗?或是录制一个简单的Demo视频监控导出?

评分

参与人数 1满意度 +5 收起 理由
gotoStudy + 5

查看全部评分

回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-4-7 14:52:17
5#
Lenka.Guo 发表于 2016-4-7 11:29
您好,谢谢您的反馈,

因为要重新问题,搭建您的环境需要一定的时间,为了调查导出Excel文件的具体速 ...

我单独弄了个demo,数据库文件在APP_DATA下,麻烦帮我查下原因
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-4-7 14:52:22
6#
本帖最后由 gotoStudy 于 2016-4-7 15:01 编辑
Lenka.Guo 发表于 2016-4-7 11:29
您好,谢谢您的反馈,

因为要重新问题,搭建您的环境需要一定的时间,为了调查导出Excel文件的具体速 ...

我单独弄了个demo,但是文件太大上传不来,我把数据库文件,和主要的文件上传上来,麻烦帮我查下原因

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-4-7 15:08:30
7#
gotoStudy 发表于 2016-4-7 14:52
我单独弄了个demo,但是文件太大上传不来,我把数据库文件,和主要的文件上传上来,麻烦帮我查下原因

有没有精确的计算下,导出Excel文件花费多长时间?
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-4-7 15:41:16
8#
Lenka.Guo 发表于 2016-4-7 15:08
有没有精确的计算下,导出Excel文件花费多长时间?

没有掐过表,但应该是超过了十分钟,一般是点了导出,等很久都没反应,等我去做别的事了,突然弹出个保存文件的对话框
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-4-7 15:54:32
9#
gotoStudy 发表于 2016-4-7 15:41
没有掐过表,但应该是超过了十分钟,一般是点了导出,等很久都没反应,等我去做别的事了,突然弹出个保存 ...

那就是,在前端页面处理导出请求比较慢了,而不是导出过程了?
您可以试着用这个工具,将报表转换后(注意,先把报表参数去掉),在设计器中导出Excel测试下时间,如果时间正常,那就说明是前台页面的问题;http://gcdn.gcpowertools.com.cn/showtopic-21521-1-1.html

评分

参与人数 1满意度 +5 收起 理由
gotoStudy + 5

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部