找回密码
 立即注册

QQ登录

只需一步,快速开始

gotoStudy

注册会员

16

主题

46

帖子

148

积分

注册会员

积分
148
gotoStudy
注册会员   /  发表于:2016-9-27 09:59  /   查看:8207  /  回复:12
本帖最后由 Lenka.Guo 于 2016-9-27 10:17 编辑

请问 在MVC5下,导出Excel,动态绑定数据源,数据源类型是object provider,改怎么做

12 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-27 10:16:54
沙发
MVC5中如果使用HTML5Viewer的话,不需要做特殊设置,使用html5Viewer自带的导出Excel按钮即可。
如果是WebViewer的话,运行时绑定数据源需要重写WebService文件,然后再WebServce中实现LocateDataSource方法,在这个方法中来调用导出Excel方法即可。
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-9-27 10:26:19
板凳
因为我不需要展示,只需要导出Excel,所以我没有展现页面,导出不是在展现页面,还有我用的是WebViewer
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-27 10:40:01
地板
本帖最后由 Lenka.Guo 于 2016-9-27 10:54 编辑
gotoStudy 发表于 2016-9-27 10:26
因为我不需要展示,只需要导出Excel,所以我没有展现页面,导出不是在展现页面,还有我用的是WebViewer

您的需求可以分为以下几步完成:
首先在MVC中为报表动态绑定数据源(参考帖子:http://gcdn.gcpowertools.com.cn/showtopic-19954-1-1.html):绑定数据源成功后执行导出Excel实现思路:
  • 在工程中添加一个【Web 服务】文件,修改该类继承的原始类型为GrapeCity.ActiveReports.Web.ReportService。
  • 重写OnCreateReportHandler方法,在这个方法中根据传进来的报表路径,生成报表对象。
  1. protected override object OnCreateReportHandler(string reportPath)
  2.         {
  3.             var instance = base.OnCreateReportHandler(reportPath);
  4.             var pageReport = instance as PageReport;
  5.             if (pageReport != null)
  6.             {
  7.                 pageReport.Document.LocateDataSource += Document_LocateDataSource;
  8.             }
  9.             return instance;
  10.         }
复制代码


  • 调用报表对象的Document_LocateDataSource方法来绑定数据源
  1. void Document_LocateDataSource(object sender, LocateDataSourceEventArgs args)
  2.         {
  3.             switch (args.Report.PageReport.Report.Description)
  4.             {
  5.                 case "客户信息":
  6. args.Data = GetCustomer(customerID);
  7. <b>                    ExportToExcel(args.Report);</b>
  8.                     break;
  9.                 case "订单信息":
  10.                     string orderID = args.Report.Parameters[0].CurrentValue.ToString();
  11.                     args.Data = GetOrder(orderID);
  12.                     break;
  13.                 default:
  14.                     break;
  15.             }
  16.         }
复制代码


  • 绑定数据源成功后,直接执行导出Excel功能
  1. private void ExportToExcel(PageDocument report)
  2.         {
  3. GrapeCity.ActiveReports.Export.Excel.Section.XlsExport xlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();
  4.             xlsExport1.FileFormat = GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.Xlsx;
  5.             xlsExport1.Export(report, @"D:\Demo\" + "\\XLSExpt.xlsx");
  6.         }
复制代码






评分

参与人数 1满意度 +5 收起 理由
gotoStudy + 5 很给力!

查看全部评分

回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-9-27 11:28:05
5#
请问 如果是windowsform环境下导出Excel,也是不需要显示界面,直接导出Excel,用运行时绑定数据,data privoder 方式,该怎么实现
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-27 11:35:35
6#
gotoStudy 发表于 2016-9-27 11:28
请问 如果是windowsform环境下导出Excel,也是不需要显示界面,直接导出Excel,用运行时绑定数据,data pri ...

也是同样的思路,在完成LocateDataSource方法后调用导出Excel的代码,如4#
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-9-27 12:02:17
7#
有没有windowsform下导出excel 的demo啊
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-27 12:16:56
8#
gotoStudy 发表于 2016-9-27 12:02
有没有windowsform下导出excel 的demo啊

稍等,我给您简单做一个吧
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-9-27 15:59:56
9#
Winform Demo, 供您了解:

本帖子中包含更多资源

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

x
回复 使用道具 举报
gotoStudy
注册会员   /  发表于:2016-9-27 16:27:04
10#
按您给的demo导出的文件带有第一行和第一列是空的,请问有什么方法能去掉这个首行首列的空白
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部