水晶报表中加载本地图片

来源:互联网 发布:淘宝搬家到另一个店铺 编辑:程序博客网 时间:2024/04/30 20:18

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '查看CrystalReport1的定义可以查看对应的报表类
        Dim crReportDocument As New CrystalReport1
        Dim myDataSet As New DataSet
        Dim PicPath As String
        Dim myColume As System.Data.DataColumn
        Dim myRow As DataRow

        '---------------------------------------------------------------------
        '构造一个表,对应xsd文件
        myDataSet.Tables.Add("雇员")
        '构造表结构,可以只构造部分字段
        myDataSet.Tables(0).Columns.Add("姓", System.Type.GetType("System.String"))
        myDataSet.Tables(0).Columns.Add("名", System.Type.GetType("System.String"))
        myDataSet.Tables(0).Columns.Add("雇员照片", System.Type.GetType("System.Byte[]"))

        '---------------------------------------------------------------------
        '写入数据
        '注意此处没有进行校验
        PicPath = TextBox1.Text & "/"
        '写数据行(分别用了3种图片格式)
        '提示:
        '   在这里你就可以使用你的数据库中保存的文件路径了
        '   用你的DataSet来填充这个将推给报表的DataSet
        '   如:
        AddOneRow(myDataSet.Tables(0), "Babyt", "JPG文件", PicPath & "BBT_042105_04.jpg")
        AddOneRow(myDataSet.Tables(0), "FaceSun", "Gif文件", PicPath & "Image49.gif")
        AddOneRow(myDataSet.Tables(0), "张", "Gif文件", PicPath & "Image5.gif")
        AddOneRow(myDataSet.Tables(0), "王", "JPG文件", PicPath & "1.jpg")
        AddOneRow(myDataSet.Tables(0), "燕子", "JPG文件", PicPath & "2.jpg")
        AddOneRow(myDataSet.Tables(0), "Cnblogs.com/babyt", "BMP文件", PicPath & "Coup30.bmp")

        '将这个DataSet推给报表
        crReportDocument.SetDataSource(myDataSet)

        ''将报表传递给浏览器
        CrystalReportViewer1.ReportSource = crReportDocument
    End Sub
    '*************************************************************************
    '**函 数 名:AddOneRow
    '**输    入:
    '        ByRef tbl As DataTable 要操作的表,注意是Byref
    '        ByVal c1 As String  第一个字段的值
    '        ByVal c1 As String  第二个字段的值
    '        ByVal c1 As String  第三个字段的值,注意传入的是完整的图片文件名
    '**输    出:无
    '**功能描述: 在DataTable中增加一个数据行
    '               该过程的主要是封装根据文件名提取本地文件写入到DataSet中
    '**全局变量:
    '**调用模块:
    '**作    者:Babyt(阿泰)
    '**日    期:2005-04-21
    '**修 改 人:
    '**日    期:
    '**版    本:V2.0.0
    '*************************************************************************
    Public Sub AddOneRow(ByRef tbl As DataTable, ByVal c1 As String, ByVal c2 As String, ByVal c3 As String)
        Dim fs As New FileStream(c3, FileMode.Open)   ' 获取文本流
        Dim br As New BinaryReader(fs)                ' 创建Binary Reader
        Dim row As DataRow

        '创建一个新行
        row = tbl.NewRow()

        '赋值
        row(0) = c1
        row(1) = c2
        '注意此处的写入方式
        row(2) = br.ReadBytes(br.BaseStream.Length)

        '将该行增加到目标表
        tbl.Rows.Add(row)

        ' 释放
        br = Nothing
        fs = Nothing
    End Sub

原创粉丝点击