【问题标题】:Write Excel file from rdl/rdlc file in Windows application在 Windows 应用程序中从 rdl/rdlc 文件写入 Excel 文件
【发布时间】:2015-11-09 16:15:42
【问题描述】:

我有由 Report Builder 3.0 制作的 rdl 文件。我需要在用 C++ 编写的 Windows 应用程序中使用它们,以便能够在运行时设置 SQL Server 连接参数和报告位置。

这可能吗?如何实现?

Google 告诉我我需要将 rdl 转换为 rdlc 文件,但即便如此我也找不到设置这些文件的方法参数并从 C++ 调用 rdlc 文件。

【问题讨论】:

    标签: c++ excel reporting-services rdlc rdl


    【解决方案1】:

    您可以使用 ReportViewer 并使用 RDL 或 RDLC 文件,但 RDL 可能有一些限制,因为它不包含创建数据绑定代码所需的信息。

    RDL 文件不包含设计时的某些信息 ReportViewer 控件依赖于自动生成 数据绑定代码。通过手动绑定数据,RDL文件可以在 ReportViewer 控件。

    您可以从 ReportViewer 设置参数,查看this 文档和以下 C# 代码示例:

    private void SetReportParameters() {
       // Set Processing Mode
       reportViewer1.ProcessingMode = ProcessingMode.Remote;
    
       // Set report server and report path
       reportViewer1.ServerReport.ReportServerUrl = new
          Uri("http://<ServerName>/reportserver");
    
       reportViewer1.ServerReport.ReportPath = 
          "/AdventureWorks Sample Reports/Employee Sales Summary";
    
       List<ReportParameter> paramList = new List<ReportParameter>();
    
       paramList.Add(new ReportParameter("EmpID", "288", false));
       paramList.Add(new ReportParameter("ReportMonth", "12", false));
       paramList.Add(new ReportParameter("ReportYear", "2003", false));
    
       this.reportViewer1.ServerReport.SetParameters(paramList);
    
       // Process and render the report
       reportViewer1.RefreshReport();
    }
    

    这是使用ReportViewer 生成Excel 文件的示例:

    protected void Button1_Click(object sender, EventArgs e)
    {
                Warning[] warnings;
                string[] streamids;
                string mimeType;
                string encoding;
                string extension;
    
                byte[] bytes = ReportViewer1.LocalReport.Render(
                   "Excel", null, out mimeType, out encoding,
                    out extension,
                   out streamids, out warnings);
    
                FileStream fs = new FileStream(@"c:\output.xls",
                   FileMode.Create);
                fs.Write(bytes, 0, bytes.Length);
                fs.Close();
    
                Label1.Text = "Report exported to output.xls";
    }
    

    如果这对你有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      相关资源
      最近更新 更多