生成されたセクションレポートをシリアライズする方法は?
対象製品
ActiveReports for .NET 9.0J
詳細
生成されたセクションレポートをシリアライズするには、以下のような方法が考えられます。
なお、シリアライズするデータには、プリンタの設定情報は含まれません。したがいまして、デシリアライズしたレポートデータをそのまま印刷しようとした場合、印刷先プリンタのデフォルト設定で印刷することになります。
また、ページレポート/RDLレポートには、生成されたレポートをシリアライズする機能・方法は用意されておりません。
- 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;
} - 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 セクションレポート