fizsoft 发表于 2015-10-29 12:33:00

客户端脚本导出Excel的问题

我看了其他帖子里讲到用如下代码可以实现JS导出Excel:
<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
      var viewMode;
      $(document).ready(function () {
            $('#WebViewer1').bind('loaded', function () {
                // 获取 ViewMode 对象
                viewMode = GetViewModel('WebViewer1');
            });
      });
      // 导出 PDF 文件
      function Button1_onclick() {
            if (viewMode.PageLoaded()) {
                viewMode.Export(ExportType.Pdf, function (uri) {
                  window.location = uri;
                }, true, { FileName: "ActiveReports报表.pdf" });
            }
      }
      // 导出 Excel 文件
      function Button2_onclick() {
            if (viewMode.PageLoaded()) {
                viewMode.Export(ExportType.Xls, function (uri) {
                  window.location = uri;
                }, true, { FileName: "ActiveReports报表.xls" });
            }
      }
      // 导出 Word 文件
      function Button3_onclick() {
            if (viewMode.PageLoaded()) {
                viewMode.Export(ExportType.Word, function (uri) {
                  window.location = uri;
                }, true, { FileName: "ActiveReports报表.doc" });
            }
      }
    </script>

有两个问题:
1、jquery库貌似有冲突,一旦引用jquery-1.9.1.min.js,报表一直处于加载状态。有没有非jquery版本的脚本。
2、这个导出支持钻取到子报表的导出吗?就是我钻取到下层的子报表时,运行这个方法得到的是当前报表的导出

iceman 发表于 2015-10-29 15:37:00

回复 1楼fizsoft的帖子

可以通过FlashViewer + WebService 方式导出报表:
http://blog.gcpowertools.com.cn/post/2014/11/13/customize_flashviewer.aspx

问题2,我并不是十分理解您的意思,希望一起导出主报表和子报表到 Excel 吗?

fizsoft 发表于 2015-10-29 15:50:00

只导出子报表,就是当前钻取到的报表

iceman 发表于 2015-10-29 18:08:00

回复 3楼fizsoft的帖子

如果是基于2#链接中的方法,可以通过参数传递需要导出的报表,关键代码如下:

            PageReport pr = new PageReport(new System.IO.FileInfo(context.Server.MapPath(&quot;PageReport1.rdlx&quot;)));

fizsoft 发表于 2015-10-30 10:52:00

HTMLView的该怎么操作?有例子吗?Flash的有其他的问题解决不了。

iceman 发表于 2015-10-30 14:21:00

回复 5楼fizsoft的帖子

理解您的问题是:希望通过 HTML Viewer 在后台导出 Excel 文件。可以参考博客:
http://blog.gcpowertools.com.cn/post/2014/08/24/advanced-html-viewer-with-export-options.aspx

前台代码:

<script language="javascript" type="text/javascript">
   function ForcePostBack() {
      form1.submit();
   }
   var reportSelect = '<select id="ReportSelect" style="width:150px"><option selected disabled>Choose Report</option><option value="SectionReport1">SectionReport1</option><option value="SectionReport2">SectionReport2</option></select>';
   $(document).ready(function () {
      var selectedValue = $("#fldReportName").val();
      if (selectedValue !== "") {
         setTimeout(function () {
            $("#ReportSelect").val(selectedValue);
         }, 100);
      }
      var toolbar = $('#WebViewer1').find('.arvToolBar');
      toolbar.append(reportSelect);
      //Force a postback upon report selection
      $("#ReportSelect").change(function (e, args) {
         var reportName = this.value;
         $("#fldReportName").val(reportName);
         ForcePostBack();
         this.value = $("#fldReportName").val();
      });
   });
</script>


后台结合2#链接中导出方法导出即可。

fizsoft 发表于 2015-10-31 17:45:00

找到了最简单的方法,用下面这段代码随便在哪个按钮的onclick调用就行:
      function ExportExcel()
      {
            viewMode = GetViewModel('WebViewer1');
            if (viewMode.PageLoaded()) {
                viewMode.Export(ExportType.Xls, function (uri) {
                  window.location = uri;
                }, true, { FileName: &quot;ActiveReports报表.xls&quot; });
            }
      }

钻取也没有关系,问题解决,可以结贴

ZenosZeng 发表于 2015-11-2 10:04:00

回复 7楼fizsoft的帖子

:hjyzw:

谢谢fizsoft分享,在这边博客中也列出了基于Web客户端的导出和打印方法,可以导出当前视图下的报表内容。
http://blog.gcpowertools.com.cn/post/2013/07/23/ActiveReports_Client_Export.aspx

fizsoft 发表于 2015-11-2 11:50:00

回复 8楼dof的帖子

嗯,其实就是这个文章里的方法,只不过没用jquery

ZenosZeng 发表于 2015-11-2 12:15:00

回复 9楼fizsoft的帖子

哈哈,好的!
页: [1]
查看完整版本: 客户端脚本导出Excel的问题