生成されたセクションレポートをシリアライズする方法は?

文書番号 : 37771     文書種別 : 使用方法     登録日 : 2015/09/18     最終更新日 : 2015/09/18
文書を印刷する
対象製品
ActiveReports for .NET 9.0J
詳細
生成されたセクションレポートをシリアライズするには、以下のような方法が考えられます。

  1. Contentプロパティを使用する方法
    Document.Contentプロパティから生成されたレポートをシリアライズしたものが取得できます。

    ◆サンプルコード(VB.NET)
    Imports System.IO
    ----------
    ' レポートを生成します。

    Dim sectionReport As New SectionReport1
    sectionReport.Run(False)

    ' 生成したレポートをファイルに保存します。
    Dim s As Stream = File.Open("DocCt.bin", FileMode.Create, FileAccess.ReadWrite)
    s.Write(sectionReport.Document.Content, 0, sectionReport.Document.Content.Length)
    s.Close()

    ' 保存したファイルを読み込み、プレビュー表示します。
    Dim r As Stream = File.Open("DocCt.bin", FileMode.Open, FileAccess.Read)
    Dim bs(r.Length - 1) As Byte
    r.Read(bs, 0, bs.Length)
    r.Close()
    Me.Viewer1.Document.Content = bs

    ◆サンプルコード(C#)
    using System.IO;
    ----------
    // レポートを生成します。

    SectionReport1 sectionReport = new SectionReport1();
    sectionReport.Run(false);

    // 生成したレポートをファイルに保存します。
    using (FileStream s = new FileStream("DocCt.bin", FileMode.Create, FileAccess.ReadWrite))
    {
      s.Write(sectionReport.Document.Content, 0, sectionReport.Document.Content.Length);
    }

    // 保存したファイルを読み込み、プレビュー表示します。
    using (FileStream r = new FileStream("DocCt.bin", FileMode.Open, FileAccess.Read))
    {
      byte[] bs = new byte[r.Length];
      r.Read(bs, 0, bs.Length);
      this.viewer1.Document.Content = bs;
    }

  2. XmlSerializerクラスを使用する方法
    XmlSerializerクラスを使用して、レポートの Documentクラスをシリアライズする方法です。

    ◆サンプルコード(VB.NET)
    Imports System.IO
    Imports System.Xml.Serialization
    Imports GrapeCity.ActiveReports.Document
    ----------
    ' レポートを生成します。

    Dim sectionReport As New SectionReport1
    sectionReport.Run()

    ' 生成したレポートをシリアライズし、ファイルに保存します。
    Dim s As Stream = File.Open("XMLSer.bin", FileMode.Create, FileAccess.ReadWrite)
    Dim xmlsr1 As XmlSerializer = New XmlSerializer(GetType(SectionDocument))
    xmlsr1.Serialize(s, sectionReport.Document)
    s.Close()

    ' 保存したファイルをデシリアライズし、プレビュー表示します。
    Dim r As Stream = File.Open("XMLSer.bin", FileMode.Open, FileAccess.Read)
    Dim xmlsr2 As XmlSerializer = New XmlSerializer(GetType(SectionDocument))
    Dim myDocument As SectionDocument = CType(xmlsr2.Deserialize(r), SectionDocument)
    r.Close()

    Me.Viewer1.Document = myDocument

    ◆サンプルコード(C#)
    using System.IO;
    using System.Xml.Serialization;
    using GrapeCity.ActiveReports.Document;
    ----------
    // レポートを生成します。

    SectionReport1 sectionReport = new SectionReport1();
    sectionReport.Run(false);

    // 生成したレポートをシリアライズし、ファイルに保存します。
    using (FileStream s = new FileStream("DocCt.bin", FileMode.Create, FileAccess.ReadWrite))
    {
      XmlSerializer xmlsr1 = new XmlSerializer(typeof(SectionDocument));
      xmlsr1.Serialize(s, sectionReport.Document);
    }

    // 保存したファイルをデシリアライズし、プレビュー表示します。
    using (FileStream r = new FileStream("DocCt.bin", FileMode.Open, FileAccess.Read))
    {
      XmlSerializer xmlsr2 = new XmlSerializer(typeof(SectionDocument));
      SectionDocument myDocument = (SectionDocument)xmlsr2.Deserialize(r);
      this.viewer1.Document = myDocument;
    }

なお、シリアライズするデータには、プリンタの設定情報は含まれません。したがいまして、デシリアライズしたレポートデータをそのまま印刷しようとした場合、印刷先プリンタのデフォルト設定で印刷することになります。

また、ページレポート/RDLレポートには、生成されたレポートをシリアライズする機能・方法は用意されておりません。
キーワード
HowTo セクションレポート