ai 画像をデータベースに保存して ReportViewer 2008 に表示する方法を知っている人はいますか?
ありがとう!!
ai 画像をデータベースに保存して ReportViewer 2008 に表示する方法を知っている人はいますか?
ありがとう!!
私は現在これを行っていますが、達成するのは簡単ではありませんでした。
MemoryStream で RDLC ファイルを生成するクラスを作成しました。RDLC メモリ ストリームが reportViewer コントロールに送信され、レポートが表示されます。
RDLC ファイルの生成中に、埋め込みイメージを作成できます。これを行うには、画像を Byte 配列に取得してから、Byte 配列を Base64 Encoding に変換します。RDLC ファイルでは、画像を正しく表示するために Base64 エンコードが必要です。
繰り返しますが、達成するのは簡単ではありませんでした. この方法で続行する場合は、詳細をお知らせします。
編集(詳細)
GotReportViewer で、 RDLCファイルを動的に作成する方法に関するサンプル コードを入手できます。VB.NETおよびC#のコードへの直接リンク。
そのコードがどのように機能するかを理解できれば、RDLC ファイルを生成することができ、ファイルを自分で手動で作成する必要はありません。繰り返しますが、これを使いたいと思う場所にたどり着くには、多くのことをいじる必要があるという事実を強調する必要があります。
次に、画像を生成するために、データベースから画像を取得します。データベースから取得すると (私は BLOB を使用します)、Byte 配列を取得します。Byte 配列は画像のデータを保持していますが、I は現在の状態では使用できません。変換するには、次のようにします。
Dim output As String = ""
output = Convert.ToBase64String(imgByteArray)
結果の出力文字列は ReportViewer と互換性があります。この文字列を ReportViewer の RDLC ファイル (XML ファイル) に動的に追加できるようになりました。GotReportViewer のコード例を使用すると、次のことができます。
'Inserts embedded images into the report
Overridable Function CreateEmbeddedImages() As Rdl.EmbeddedImagesType
Dim bgCell As New Rdl.EmbeddedImageType
Dim images As New Rdl.EmbeddedImagesType
bgCell.Name = "bgTableHeader"
bgCell.Items = New Object() {"image/jpeg", output}
bgCell.ItemsElementName = New Rdl.ItemsChoiceType35() {Rdl.ItemsChoiceType35.MIMEType, Rdl.ItemsChoiceType35.ImageData}
images.EmbeddedImage = New Rdl.EmbeddedImageType() {bgCell}
Return images
End Function
RDL タイプはレポート定義言語クラス ファイルです。基本的に、リバース エンジニアリングされた RDLC XSD スキーマです。これには、レポート用の有効な XML ファイルを生成するために使用されるクラスが含まれています。これは、GotReportViewer リンクの上部に含まれていますが、Visual Studio に付属の XSD.EXE ツールを使用して自分で生成できます。