找回密码
 立即注册

QQ登录

只需一步,快速开始

wu8829

中级会员

55

主题

266

帖子

643

积分

中级会员

积分
643

活字格认证微信认证勋章

wu8829
中级会员   /  发表于:2019-6-16 08:49  /   查看:3586  /  回复:9
请问在webform中,HtmlView能否设置“连续页显示”?

麻烦提供一个关于HtmlView导出为excel的Demo,官网教程的导出方式存在瑕疵,例如:导出的excel生成多个sheet。博客中的教程(https://www.grapecity.com.cn/blo ... r-appeared-disorder)是在winform下。

9 个回复

倒序浏览
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-6-17 11:19:44
沙发
您好,导出Excel的代码如下:
  1. // Provide the page report you want to render.
  2. GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport();GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(report);

  3. // Create an output directory.
  4. System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyExcel");
  5. outputDirectory.Create();

  6. // Provide settings for your rendering output.
  7. GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
  8. excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
  9. GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;

  10. // Set the rendering extension and render the report.
  11. GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
  12. GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

  13. // Overwrite output file if it already exists.
  14. outputProvider.OverwriteOutputFile = true;

  15. reportDocument.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());
复制代码
然后设置导出时sheet的属性是通过控制这个属性控制的:Multisheet的属性默认是true,你在后台代码层修改为 false就行。


本帖子中包含更多资源

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

x
回复 使用道具 举报
wu8829
中级会员   /  发表于:2019-6-17 11:39:58
板凳
1、第一个问题,您未解答。
2、第二个问题,您的方案是利用一个具有runat=server属性的按钮,来导出,如果我是html按钮呢?例如:

<input id='btnPrint' type='Button' value='导出' onclick='OnExport()'/>

        function OnExport() {
            var viewModel = GetViewModel('WV_Balance');
            viewModel.Export(ExportType.Xls, function (uri) {
                window.location = uri;
            }, true);


其次,您的方案中,使用了:

System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyExcel");
outputDirectory.Create();

如果我并不具有路径权限呢?而且您这个方法,要在服务器上产生多少垃圾文件呀,导出一次,产生一个excel。(尽管,我们可以通过后续代码删除,但此方法并不完美)
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-6-17 16:16:42
地板
第一个问题这样设置:

然后第二个关于导出的问题,可以进行一个拦截,然后你进行对应的一个操作:
  1. GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath(@"Reports\页面报表.rdlx")));
  2.                 GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(rpt);

  3.                 // Provide settings for your rendering output.
  4.                 GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
  5.                 excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xlsx;
  6.                 GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;

  7.                 // Set the rendering extension and render the report.
  8.                 GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
  9.                 GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
  10.                 reportDocument.Render(excelRenderingExtension, outputProvider, setting.GetSettings());

  11.                 Response.ContentType = "application/vnd.ms-excel";
  12.                 Response.AddHeader("content-disposition", "inline;filename=MyExport.xls");
  13.                 System.IO.MemoryStream ms = new System.IO.MemoryStream();
  14.                 outputProvider.GetPrimaryStream().OpenStream().CopyTo(ms);
  15.                 Response.BinaryWrite(ms.ToArray());
  16.                 Response.End();
复制代码


本帖子中包含更多资源

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

x
回复 使用道具 举报
wu8829
中级会员   /  发表于:2019-6-17 17:09:58
5#
第一个问题已经完美解决,谢谢,又衍生出另外一个问题:报表标题行如何冻结,在呈现的时候!
回复 使用道具 举报
wu8829
中级会员   /  发表于:2019-6-17 17:25:24
6#
本帖最后由 wu8829 于 2019-6-17 17:45 编辑

第二个问题:

按照提供的方法导出后发现exccel中,出现空行(空行的位置是未设置MultiSheet = false之前分页的位置)


本帖子中包含更多资源

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

x
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-6-18 09:00:46
7#
你好,冻结行列只能在H5的方式渲染的时候才可以。你现在用的HtmlViewer实现不了这个需求。
第二个问题,你说的空行的问题,是在分页前还是在分页后。
回复 使用道具 举报
wu8829
中级会员   /  发表于:2019-6-18 09:10:01
8#
KearneyKang 发表于 2019-6-18 09:00
你好,冻结行列只能在H5的方式渲染的时候才可以。你现在用的HtmlViewer实现不了这个需求。
第二个问题,你 ...

分页前,也就是说,5 进水阀 是第一页的最后一条记录
回复 使用道具 举报
wu8829
中级会员   /  发表于:2019-6-18 11:49:25
9#
该问题已自行解决,谢谢,请闭贴
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-6-18 13:42:29
10#
好的

评分

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

查看全部评分

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