首先要在报表中添加 image控件 source选择database mimetype 我这里选择的是 image/bmp
value 值选择数据集中定义好的 字段,我这里定义名称为:Image value对应的表达式为:=Fields!Image.Value
这里的value 解释如下:
对于 Value,键入或选择一个计算结果为图像来源的表达式。
如果 Source 属性设置为 External,则表达式的计算结果必须是图像的有效路径。此路径可以是驻留在报表服务器上的图像的静态路径,也可以是基于某个字段的路径。如果图像存储在项目中,则键入该图像在项目中显示的名称。
如果 Source 属性设置为 Embedded,则表达式的计算结果必须是嵌入到报表中的图像的名称。如果 Source 属性设置为 Database,则表达式的计算结果必须是包含二进制图像数据的字段。
将动态的图片转换成对应的二进制数组
private byte[] BitmapToBytes(Bitmap Bitmap)
{
MemoryStream ms = null;
try
{
ms = new MemoryStream();
Bitmap.Save(ms, ImageFormat.Gif);
byte[] byteImage = new Byte[ms.Length];
byteImage = ms.ToArray();
return byteImage;
}
catch (ArgumentNullException ex)
{
throw ex;
}
finally
{
ms.Close();
}
}
//把图片转换成二进制数组
bytes[] imgBytes = BitmapToBytes(bmp);
DataTable dt = new DataTable();
dt.Columns.Add("Number",typeof(string));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Age", typeof(string));
//这里要在报表中显示员工头像,在列中定义的类型应为string 类型 在通过Convert.ToBase64String(byteImages)
//把图片转换成二进制后显示到报表中
dt.Columns.Add("Image", typeof(string));
DataRow row = dt.NewRow();
row["Number"] = txtNo.Text;
row["Name"] = txtName.Text;
row["Age"] = txtAge.Text;
//这里的Image应和数据集中定义的列值一致否则不加载图片
//这句代码很关键
row["Image"] = Convert.ToBase64String(imgBytes );
dt.Rows.Add(row);
reportViewer1.LocalReport.EnableExternalImages = true;
reportViewer1.LocalReport.ReportPath = @"d:\my documents\visual studio 2012\Projects\LYHR\LyWinForm\humenfile\Report1.rdlc";
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));
reportViewer1.RefreshReport();
在打印预览的时候图片就显示到报表中了
附:https://blog.csdn.net/giepy/article/details/79760047