フッターコンテンツにスキップ
移行ガイド

C#でSSRSからIronPDFに移行する方法

SQL Server Reporting Services (SSRS)からIronPDFに移行することで、PDF生成のワークフローが、重量のあるサーバーベースのインフラストラクチャから、.NETアプリケーションに直接埋め込むことができる軽量のインプロセスライブラリに変わります。 このガイドでは、SQL Serverへの依存、レポートサーバーのオーバーヘッド、Microsoftエコシステムのロックインを排除する、完全で段階的な移行パスを提供します。

なぜSSRSからIronPDFに移行するのか

SSRSについて

SQL Server Reporting Services(SSRS)は、Microsoftのエンタープライズレポーティングプラットフォームで、多額のインフラ投資が必要です。 SSRSは、レポートの作成、展開、管理のための完全なスイートを提供するMicrosoftの包括的なレポートプラットフォームであり、豊富な機能とインタラクティブなレポート機能の両方を提供します。 SQL Serverエコシステムの一部として開発されたSSRSは、マイクロソフトのデータベースソリューションと緊密に統合されています。

しかし、多くのPDF生成シナリオでは、SSRSインフラストラクチャは過剰です。移行する主な理由は以下の通りです:

1.高度なインフラストラクチャ: SQL Server、レポート サーバー、IIS の構成が必要です

  1. Microsoftエコシステムのロックイン: SQL ServerライセンスとWindows Serverに結びついている 3.複雑な展開:レポートの展開、セキュリティ構成、サブスクリプション管理 4.高価なライセンス: SQL Server ライセンス、特にエンタープライズ機能向け
  2. Webサポートが限られている:最新のSPAフレームワークとの統合が難しい 6.メンテナンスオーバーヘッド:サーバーのパッチ適用、データベースのメンテナンス、レポート管理 7.クラウドネイティブオプションなし:オンプレミス向けに設計されているため、クラウドサポートが不便

SSRSが過剰な場合

ニーズ SSRSオーバーヘッド
請求書の作成 フルレポートサーバー
データテーブルのエクスポート SQL Serverライセンス
データからPDFを作成 Windowsサーバー
シンプルなドキュメント生成 レポート購読

IronPdfはサーバーのインフラなしでインプロセスでPDFを生成します。

SSRSとIronPDFの比較

フィーチャー SSRS IronPDF
依存性について SQL Serverが必要です。 データベースへの依存なし
デプロイメント サーバーベース ライブラリ(アプリケーションへの組み込み)
統合 マイクロソフトとの緊密な統合 あらゆるデータソースに対応
データビジュアライゼーション 豊富なネイティブオプション PDFを中心としたビジュアライゼーション
複雑さ 高(サーバー設定が必要) 中~低レベル(ライブラリのセットアップ)
費用 SQL Serverのライセンス費用 開発者1人あたりのライセンス費用
HTMLからPDFへ なし 完全なChromium
URLからPDFへ なし はい
CSSサポート 制限的 完全なCSS3
JavaScript(JavaScript なし フルES2024

IronPdfはSSRSとは異なり、特定のデータベースやサーバーエコシステムに縛られることはありません。 C#で直接PDF文書を動的に作成、編集、操作するための柔軟なライブラリを開発者に提供します。 サーバーベースのインフラストラクチャから切り離されることで、顕著な利点が得られます。

2025年と2026年まで.NET 10とC# 14の採用を計画しているチームに対して、IronPDFはSSRSのインフラストラクチャの複雑さを解消する最新のChromiumレンダリングエンジンを提供します。


始める前に

前提条件

  1. .NET環境: .NET Framework 4.6.2+ または.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGetアクセス: NuGetパッケージをインストールする機能
  3. IronPDFライセンス: IronPDFからライセンスキーを取得します。

NuGetパッケージの変更

#SSRShas no direct NuGet - it's server-based
# Remove any ReportViewer controls

dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WinForms

# Install IronPDF
dotnet add package IronPdf
#SSRShas no direct NuGet - it's server-based
# Remove any ReportViewer controls

dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WinForms

# Install IronPDF
dotnet add package IronPdf
SHELL

ライセンス構成

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

完全な API リファレンス

名前空間の変更

// Before: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports Microsoft.Reporting.WebForms
Imports Microsoft.Reporting.WinForms

' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

コア API マッピング

SSRSのコンセプト IronPDF 同等物 ノート
LocalReport ChromePdfRenderer コアレンダリング
ServerReport RenderUrlAsPdf() URLベースのレンダリング
.rdlc ファイル HTML/CSSテンプレート テンプレート形式
ReportParameter 文字列の補間 パラメータ
ReportDataSource C#データ + HTML データバインディング
LocalReport.Render("PDF") RenderHtmlAsPdf() PDF出力
SubReport マージされたPDF ネストされたレポート
Report Server URL 不要 サーバー不要
ReportViewer コントロール 不要 直接PDF生成
エクスポート形式 PDFはネイティブ フォーカスされたアウトプット

コード移行の例

例1: HTMLからPDFへの変換

ビフォア (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSHtmlToPdf
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;

        // Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc";

        // Add HTML content as a parameter or dataset
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var param = new ReportParameter("HtmlContent", htmlContent);
        reportViewer.LocalReport.SetParameters(param);

        // Render the report to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF",
            null,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);

        File.WriteAllBytes("output.pdf", bytes);
    }
}
//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSHtmlToPdf
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;

        // Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc";

        // Add HTML content as a parameter or dataset
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var param = new ReportParameter("HtmlContent", htmlContent);
        reportViewer.LocalReport.SetParameters(param);

        // Render the report to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF",
            null,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);

        File.WriteAllBytes("output.pdf", bytes);
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WebForms
Imports System.IO

Class SSRSHtmlToPdf
    Shared Sub Main()
        ' Create a ReportViewer instance
        Dim reportViewer As New ReportViewer()
        reportViewer.ProcessingMode = ProcessingMode.Local

        ' Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc"

        ' Add HTML content as a parameter or dataset
        Dim htmlContent As String = "<h1>Hello World</h1><p>This is HTML content.</p>"
        Dim param As New ReportParameter("HtmlContent", htmlContent)
        reportViewer.LocalReport.SetParameters(param)

        ' Render the report to PDF
        Dim mimeType As String, encoding As String, fileNameExtension As String
        Dim streams As String()
        Dim warnings As Warning()

        Dim bytes As Byte() = reportViewer.LocalReport.Render( _
            "PDF", _
            Nothing, _
            mimeType, _
            encoding, _
            fileNameExtension, _
            streams, _
            warnings)

        File.WriteAllBytes("output.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfHtmlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Save the PDF file
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfHtmlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Save the PDF file
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class IronPdfHtmlToPdf
    Shared Sub Main()
        ' Create a ChromePdfRenderer instance
        Dim renderer = New ChromePdfRenderer()

        ' Convert HTML string to PDF
        Dim htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

        ' Save the PDF file
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

この例は、基本的なアーキテクチャの違いを示しています。SSRSでは、インスタンスを作成し、レポート定義ファイルを読み込み、パラメータを設定してから、メタデータの複数のパラメータを使用してを呼び出す必要があります。

IronPDF は、わずか 3 行のコード内で ChromePdfRendererRenderHtmlAsPdf() を使用します。 レポート定義ファイル、パラメータオブジェクト、メタデータの処理は不要です。 包括的な例については、HTML to PDF documentationを参照してください。

例2: ヘッダーとフッター付きのURLからPDFへ

ビフォア (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.IO;
using System.Net;
using Microsoft.Reporting.WebForms;

class SSRSUrlToPdf
{
    static void Main()
    {
        // Download HTML content from URL
        string url = "https://example.com";
        string htmlContent;

        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString(url);
        }

        // Create RDLC report with header/footer configuration
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc";

        // Set parameters for header and footer
        var parameters = new ReportParameter[]
        {
            new ReportParameter("HeaderText", "Company Report"),
            new ReportParameter("FooterText", "Page " + DateTime.Now.ToString()),
            new ReportParameter("HtmlContent", htmlContent)
        };
        reportViewer.LocalReport.SetParameters(parameters);

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("webpage.pdf", bytes);
    }
}
//SSRS- SQL Server Reporting Services
using System;
using System.IO;
using System.Net;
using Microsoft.Reporting.WebForms;

class SSRSUrlToPdf
{
    static void Main()
    {
        // Download HTML content from URL
        string url = "https://example.com";
        string htmlContent;

        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString(url);
        }

        // Create RDLC report with header/footer configuration
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc";

        // Set parameters for header and footer
        var parameters = new ReportParameter[]
        {
            new ReportParameter("HeaderText", "Company Report"),
            new ReportParameter("FooterText", "Page " + DateTime.Now.ToString()),
            new ReportParameter("HtmlContent", htmlContent)
        };
        reportViewer.LocalReport.SetParameters(parameters);

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("webpage.pdf", bytes);
    }
}
Imports System
Imports System.IO
Imports System.Net
Imports Microsoft.Reporting.WebForms

Class SSRSUrlToPdf
    Shared Sub Main()
        ' Download HTML content from URL
        Dim url As String = "https://example.com"
        Dim htmlContent As String

        Using client As New WebClient()
            htmlContent = client.DownloadString(url)
        End Using

        ' Create RDLC report with header/footer configuration
        Dim reportViewer As New ReportViewer()
        reportViewer.ProcessingMode = ProcessingMode.Local
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc"

        ' Set parameters for header and footer
        Dim parameters As ReportParameter() = {
            New ReportParameter("HeaderText", "Company Report"),
            New ReportParameter("FooterText", "Page " & DateTime.Now.ToString()),
            New ReportParameter("HtmlContent", htmlContent)
        }
        reportViewer.LocalReport.SetParameters(parameters)

        ' Render to PDF
        Dim mimeType As String, encoding As String, fileNameExtension As String
        Dim streams As String()
        Dim warnings As Warning()

        Dim bytes As Byte() = reportViewer.LocalReport.Render(
            "PDF", Nothing, mimeType, encoding,
            fileNameExtension, streams, warnings)

        File.WriteAllBytes("webpage.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfUrlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " + DateTime.Now.ToString("MM/dd/yyyy") + "</div>"
        };

        // Convert URL to PDF
        string url = "https://example.com";
        var pdf = renderer.RenderUrlAsPdf(url);

        // Save the PDF file
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfUrlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " + DateTime.Now.ToString("MM/dd/yyyy") + "</div>"
        };

        // Convert URL to PDF
        string url = "https://example.com";
        var pdf = renderer.RenderUrlAsPdf(url);

        // Save the PDF file
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Class IronPdfUrlToPdf
    Shared Sub Main()
        ' Create a ChromePdfRenderer instance
        Dim renderer As New ChromePdfRenderer()

        ' Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        }

        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " & DateTime.Now.ToString("MM/dd/yyyy") & "</div>"
        }

        ' Convert URL to PDF
        Dim url As String = "https://example.com"
        Dim pdf = renderer.RenderUrlAsPdf(url)

        ' Save the PDF file
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

SSRSはURLを直接PDFに変換することはできません。 WebClient.DownloadString() を使用して HTML コンテンツを手動でダウンロードし、別の .rdlc レポート ファイルを作成し、HTML およびヘッダー/フッター テキストを ReportParameter 配列として渡し、複雑な Render() メソッド シグネチャを使用してレンダリングする必要があります。

IronPDF の RenderUrlAsPdf() は、1 回の呼び出しでプロセス全体を処理します。 ヘッダーとフッターは、完全な HTML/CSS と、{page}{total-pages} などのプレースホルダーをサポートする HtmlHeaderFooter オブジェクトで構成されます。 詳しくは、チュートリアルをご覧ください。

例3: データベース駆動型レポート

ビフォア (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSDatabaseReport
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc";

        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            var dataSet = new DataSet();
            adapter.Fill(dataSet, "Sales");

            // Bind data to report
            var dataSource = new ReportDataSource("SalesDataSet", dataSet.Tables[0]);
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.DataSources.Add(dataSource);
        }

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("sales-report.pdf", bytes);
    }
}
//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSDatabaseReport
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc";

        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            var dataSet = new DataSet();
            adapter.Fill(dataSet, "Sales");

            // Bind data to report
            var dataSource = new ReportDataSource("SalesDataSet", dataSet.Tables[0]);
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.DataSources.Add(dataSource);
        }

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("sales-report.pdf", bytes);
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WebForms
Imports System.IO

Class SSRSDatabaseReport
    Shared Sub Main()
        ' Create a ReportViewer instance
        Dim reportViewer As New ReportViewer()
        reportViewer.ProcessingMode = ProcessingMode.Local
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc"

        ' Create database connection and fetch data
        Dim connString As String = "Server=localhost;Database=SalesDB;Integrated Security=true;"
        Using connection As New SqlConnection(connString)
            Dim adapter As New SqlDataAdapter("SELECT * FROM Sales", connection)
            Dim dataSet As New DataSet()
            adapter.Fill(dataSet, "Sales")

            ' Bind data to report
            Dim dataSource As New ReportDataSource("SalesDataSet", dataSet.Tables(0))
            reportViewer.LocalReport.DataSources.Clear()
            reportViewer.LocalReport.DataSources.Add(dataSource)
        End Using

        ' Render to PDF
        Dim mimeType As String
        Dim encoding As String
        Dim fileNameExtension As String
        Dim streams As String()
        Dim warnings As Warning()

        Dim bytes As Byte() = reportViewer.LocalReport.Render("PDF", Nothing, mimeType, encoding, fileNameExtension, streams, warnings)

        File.WriteAllBytes("sales-report.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

class IronPdfDatabaseReport
{
    static void Main()
    {
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        var dataTable = new DataTable();

        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            adapter.Fill(dataTable);
        }

        // Build HTML table from data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>");

        foreach (DataColumn column in dataTable.Columns)
            htmlBuilder.Append($"<th>{column.ColumnName}</th>");
        htmlBuilder.Append("</tr>");

        foreach (DataRow row in dataTable.Rows)
        {
            htmlBuilder.Append("<tr>");
            foreach (var item in row.ItemArray)
                htmlBuilder.Append($"<td>{item}</td>");
            htmlBuilder.Append("</tr>");
        }
        htmlBuilder.Append("</table>");

        // Convert to PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
        pdf.SaveAs("sales-report.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

class IronPdfDatabaseReport
{
    static void Main()
    {
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        var dataTable = new DataTable();

        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            adapter.Fill(dataTable);
        }

        // Build HTML table from data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>");

        foreach (DataColumn column in dataTable.Columns)
            htmlBuilder.Append($"<th>{column.ColumnName}</th>");
        htmlBuilder.Append("</tr>");

        foreach (DataRow row in dataTable.Rows)
        {
            htmlBuilder.Append("<tr>");
            foreach (var item in row.ItemArray)
                htmlBuilder.Append($"<td>{item}</td>");
            htmlBuilder.Append("</tr>");
        }
        htmlBuilder.Append("</table>");

        // Convert to PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
        pdf.SaveAs("sales-report.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Text

Class IronPdfDatabaseReport
    Shared Sub Main()
        ' Create database connection and fetch data
        Dim connString As String = "Server=localhost;Database=SalesDB;Integrated Security=true;"
        Dim dataTable As New DataTable()

        Using connection As New SqlConnection(connString)
            Dim adapter As New SqlDataAdapter("SELECT * FROM Sales", connection)
            adapter.Fill(dataTable)
        End Using

        ' Build HTML table from data
        Dim htmlBuilder As New StringBuilder()
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>")

        For Each column As DataColumn In dataTable.Columns
            htmlBuilder.Append($"<th>{column.ColumnName}</th>")
        Next
        htmlBuilder.Append("</tr>")

        For Each row As DataRow In dataTable.Rows
            htmlBuilder.Append("<tr>")
            For Each item In row.ItemArray
                htmlBuilder.Append($"<td>{item}</td>")
            Next
            htmlBuilder.Append("</tr>")
        Next
        htmlBuilder.Append("</table>")

        ' Convert to PDF
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
        pdf.SaveAs("sales-report.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

SSRS では、事前に設計された .rdlc レポート ファイル ("SalesReport.rdlc")、DataSet の入力、レポート定義に一致する必要がある特定の名前 ("SalesDataSet") を持つ ReportDataSource の作成、既存のデータ ソースのクリア、新しいデータ ソースの追加、レンダリングが必要です。

IronPDF は既存のデータ アクセス コード (同じ SqlDataAdapter パターン) を使用し、StringBuilder を使用して HTML を動的に構築します。 標準的なHTML/CSSを使用してレイアウトを完全に制御できます。


機能比較

フィーチャー SSRS IronPDF
インフラストラクチャー 必要なサーバー はい(レポートサーバー) なし
SQL Serverライセンス 必須 不要
Windowsサーバー 必須 プラットフォーム
データベース必須 はい(ReportServer DB) なし
発達 ビジュアルデザイナー はい (.rdlc) HTMLエディタ
テンプレート形式 RDLC/RDL HTML/CSS/Razor
データソース 組み込みDSN あらゆるC#データ
:レンダリング: HTMLからPDFへ なし 完全なChromium
URLからPDFへ なし はい
CSSサポート 制限的 完全なCSS3
JavaScript なし フルES2024
チャート 内蔵 JSライブラリ経由
:展開: レポートの展開 サーバーへ アプリ
構成 複雑 単純
メンテナンス 高い 低レベル

よくある移行の問題

課題1: RDLCレポートの定義

SSRS:独自の.rdlc XMLフォーマットを使用します。

ソリューション: HTMLテンプレートに変換する: 1.Visual Studioで.rdlcを開く 2.レイアウト構造の文書化 3.HTML/CSSで再作成 4.データバインディングにRazorを使用する

課題2:共有データソース

SSRS:レポートサーバーの接続文字列。

ソリューション: アプリケーションのデータアクセスレイヤーを使用してください:

var data = await _dbContext.Sales.ToListAsync();
// Then bind to HTML template
var data = await _dbContext.Sales.ToListAsync();
// Then bind to HTML template
Dim data = Await _dbContext.Sales.ToListAsync()
' Then bind to HTML template
$vbLabelText   $csharpLabel

課題3:レポートパラメータUI

SSRS:組み込みパラメータプロンプト。

ソリューション: アプリケーションでパラメータUIを構築する:

// Your own parameter form, then:
var pdf = GenerateReport(startDate, endDate, region);
// Your own parameter form, then:
var pdf = GenerateReport(startDate, endDate, region);
' Your own parameter form, then:
Dim pdf = GenerateReport(startDate, endDate, region)
$vbLabelText   $csharpLabel

課題4:定期購読/定期レポート

SSRS:組み込みのサブスクリプションエンジン。

解決策:バックグラウンド・ジョブ・フレームワークを使用する:

// Using Hangfire or similar
RecurringJob.AddOrUpdate("weekly-report",
    () => GenerateAndEmailReport(), Cron.Weekly);
// Using Hangfire or similar
RecurringJob.AddOrUpdate("weekly-report",
    () => GenerateAndEmailReport(), Cron.Weekly);
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • すべてのSSRSレポートをインベントリします (.rdlc ファイル)
  • データソースと接続を文書化する
  • 視覚的な参照のためのスクリーンショットレポートレイアウト
  • 各レポートのレポートパラメータを一覧表示する
  • サブスクリプションスケジュールをメモする
  • IronPDFからIronPDFライセンスキーを取得します

コードの更新

  • ReportViewer パッケージを削除する
  • IronPdf NuGetパッケージをインストールします
  • .rdlc ファイルを HTML テンプレートに変換する
  • LocalReportChromePdfRenderer に置き換えます
  • ReportDataSource を C# データ + HTML テンプレートに置き換えます
  • ReportParameter を文字列補間に置き換えます
  • LocalReport.Render("PDF")RenderHtmlAsPdf() に置き換えます
  • HtmlHeaderFooter を使用してヘッダー/フッターを実装します
  • アプリケーションの起動時にライセンスの初期化を追加

インフラ

  • レポートサーバーの廃止を計画する
  • サブスクリプションをジョブ スケジューラ (Hangfire など) に移行する
  • デプロイメントスクリプトを更新する

テスティング

  • PDF出力を視覚的に比較する
  • データの正確性を確認する
  • テストページネーション
  • すべてのパラメータを確認する
  • パフォーマンステスト

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね