2017-03-10 42 views
8

Raporları açısal 2'de gösterme konusunda bir ipucu için interneti taradım. Şimdiye kadar güvenebileceğim hiçbir şey bulamadım. Herhangi biri bana yardım edebilirse çok memnun olurum.Köşeli SSRS Raporunu Nasıl Gösterir 2 Uygulama

+0

http://blog.chrisbriggsy.com/the-first-step-towards-integration/ için özel bir bileşen eklemeye benzer http://www.dotnetspeak.com/angular/using-ssrs-in-angular-asp-net-mvc-application/ – rook

cevap

2

Emin değilim, ama şimdi yanıtım SSRS raporunu açısal olarak gösteremiyoruz. Ancak SSRS raporunuzu webapi kullanarak PDF biçiminde dönüştürüp oluşturabilir ve açısal uygulamanızda gösterebilirsiniz. Iframe, popwindow ve ng2-pdf-viewer kullanarak.

tercihim popwindow ve NG2-pdf-izleyici

Here Now pdf

 

    [HttpGet] 
    [Route("ShowReport/PDF")] 
    [AllowAnonymous] 
    [ResponseType(typeof(ServerResponse))] 

    public HttpResponseMessage ShowReport(string ReponseType) 
    { 
     using (blBaseCore bl = new blBaseCore(AppConfig.DefaultConnectionString, 1, 1)) 
     { 
      List prms = new List(); 
      prms.Add(new ReportParameter("PARAM1_NAME", "PARAM1_VALUE")); 
      prms.Add(new ReportParameter("PARAM2_NAME", "PARAM2_VALUE")); 
      return this.GenrateReport("SSRS_REPORT_NAME", "PDF_FILE_NAME", ReponseType, prms); 
     } 

    } 
    /// 
    /// Genrates the report. 
    /// 
    /// Name of the report. 
    /// Name of the export file. 
    /// Type of the export file. 
    /// The PRMS. 
    /// HttpResponseMessage. 
    public HttpResponseMessage GenrateReport(string reportName, string ExportFileName, string ExportFileType, List prms) 
    { 

     var result = new HttpResponseMessage(HttpStatusCode.OK); 
     try 
     { 
      if (!(new string[] { "pdf", "excel" }).Contains(ExportFileType.ToLower())) 
       throw new Exception("Invalid file format"); 
      string ServerPath = AppConfig.AppSettings("Systemic.ReportServer.BaseUrl"); 
      string ReportFolder = AppConfig.AppSettings("Systemic.ReportServer.FolderPath"); 
      byte[] bytes = null; 
      using (var reportViewer = new ReportViewer()) 
      { 
       //reportViewer.ServerReport.ReportServerCredentials = new ReportServerCredentials("Prabakaran", "LooserNo1", "SERVER"); 
       reportViewer.ShowPrintButton = false; 
       reportViewer.ShowZoomControl = false; 
       reportViewer.PageCountMode = PageCountMode.Actual; 
       reportViewer.ProcessingMode = ProcessingMode.Remote; 
       reportViewer.ServerReport.ReportServerUrl = new System.Uri(ServerPath); 
       reportViewer.ServerReport.ReportPath = "/" + ReportFolder + "/" + reportName; 

       if (prms.Count > 0) 
       { 
        reportViewer.ServerReport.SetParameters(prms); 
       } 
       reportViewer.ServerReport.Refresh(); 


       if (reportViewer.ServerReport.IsReadyForRendering && ExportFileType.ToLower() == "pdf") 
       { 
        bytes = reportViewer.ServerReport.Render("PDF", DeviceInfo(reportViewer)); 
        //bytes = reportViewer.ServerReport.Render("PDF"); 


        if (bytes != null) 
        { 
         Stream stream = new MemoryStream(bytes); 
         result.Content = new StreamContent(stream); 
         result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf"); 
        } 
       } 
       else if (reportViewer.ServerReport.IsReadyForRendering && ExportFileType.ToLower() == "excel") 
       { 
        bytes = reportViewer.ServerReport.Render("excel"); 
        if (bytes != null) 
        { 
         Stream stream = new MemoryStream(bytes); 
         result.Content = new StreamContent(stream); 
         result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel"); 
         result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
         result.Content.Headers.ContentDisposition.FileName = $"{ExportFileName}.xls"; 
        } 
       } 
      } 
      return result; 
     } 
     catch (Exception ex) 
     { 
      var res = Request.CreateResponse(HttpStatusCode.OK, ServerResponse.Error(ex, 501)); 
      res.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); 
      AppLog.Write(ex.Message, LogName.Report, LogType.Error); 
      return res; 
     } 
    } 


    protected string DeviceInfo(ReportViewer rv) 
    { 
     ReportPageSettings rps = rv.ServerReport.GetDefaultPageSettings(); 
     //PageSettings ps = rv.GetPageSettings(); 
     PaperSize paperSize = rps.PaperSize; 
     Margins margins = rps.Margins; 

     // The device info string defines the page range to print as well as the size of the page. 
     // A start and end page of 0 means generate all pages. 
     if (!rps.IsLandscape) 
     { 
      return string.Format(
       CultureInfo.InvariantCulture, 
       "emf00{0}{1}{2}{3}{4}{5}", 
       ToInches(margins.Top), 
       ToInches(margins.Left), 
       ToInches(margins.Right), 
       ToInches(margins.Bottom), 
       ToInches(paperSize.Height), 
       ToInches(paperSize.Width)); 
     } 
     else 
     { 
      return string.Format(
       CultureInfo.InvariantCulture, 
       "emf00{0}{1}{2}{3}{4}{5}", 
       ToInches(margins.Top), 
       ToInches(margins.Left), 
       ToInches(margins.Right), 
       ToInches(margins.Bottom), 
       ToInches(paperSize.Width), 
       ToInches(paperSize.Height)); 
     } 
    } 

    protected string ToInches(int hundrethsOfInch) 
    { 
     double inches = hundrethsOfInch/100.0; 
     return inches.ToString(CultureInfo.InvariantCulture) + "in"; 
    } 

+0

Bu çalışan bir çözüm olup olmadığını herkes önerebilir. Evet ise lütfen şu sorguları açıklayın: –

+0

Can Bu bir çalışan çözüm olup olmadığını herkese önerir. Evet ise lütfen aşağıdaki sorguları açıklayın: 1) Bu değişkenin nereden geldiğini ve bunun için ne tür bir yer olduğunu ServerResponse. 2) ShowReport işlevinde ReponseType nedir.3) AppConfig.AppSettings ("Systemic.ReportServer.BaseUrl"); AppConfig.AppSettings'in amacı nedir? –

1

olarak SSRS raporu dönüştürmek için benim örnek api bcz Iframe safari vb gibi ios ve mac tarayıcılarda çalışmıyor ise Bu npm paketi yardım edebilmelidir. numunenin gereği

https://github.com/tycomo/ngx-ssrs-reportviewer 

, sadece sayfa

<div class="container"> 
     <ssrs-reportviewer 
      [reportserver]="reportServer" 
      [reporturl]="reportUrl" 
      [showparameters]="showParameters" 
      [parameters]="parameters" 
      [language]="language" 
      [width] ="width" 
      [height]="height" 
      [toolbar]="toolbar" > 
     </ssrs-reportviewer> 
    </div> 
+0

Çok teşekkürler, bir deneme yapacak –