报表ReportViewer显示图片--rdlc
在做项目中。我们可能会经常遇到需要在报表中显示图片的需求。如果说这个图片是个固定的,只是作为一个报表的标题或者logo之类的。那么就很简单,可是对于那些保存在数据库中或者通过程序生成的一个内存中的图片又该如何显示呢?我们大家来共同讨论一下。在讨论之前先说明一下我的问题,我的图片刚好是通过程序生成的一个条码图像。他返回的是一个Bitmap类型的缩略图。就是要把这图像显示在报表中.
阅读之前大家可以先参考一下MSDN上面所描述的方法。
http://msdn.microsoft.com/zh-cn/library/ms251715(VS.80).aspx
其内容描述如下:
图像是一种包含对存储在报表服务器上、嵌入在报表中或存储在数据库中的图像的引用的报表项。图像可以是报表中显示一次的徽标或图片,也可以是数据行中重复显示的图片。还可以将图像用作某些报表项的背景。您可以从以下来源获取图像:
数据库
外部文件共享区或网站
在本地嵌入到报表中的图像
无法使用已经添加到项目的图像文件。
数据绑定的图像可以由数据库中存储的二进制数据来显示。例如,在产品列表中产品名称旁边显示的图片就属于数据库图像。
外部图像是由指向图像文件的 URL 指定的。外部图像适用于在多个报表或网页间共享的徽标和静态图片。
本地报表图像先嵌入在报表中,然后再被引用。图像数据存储在报表定义中,不作为单独的文件存在。嵌入图像可确保图像始终可用于报表,但嵌入图像不能共享。嵌入图像会增大报表定义文件的大小。嵌入图像时,报表设计器会对该图像进行 MIME 编码,然后以文本形式将其存储在报表定义中。
如何向报表添加嵌入图像
在图形设计模式下打开客户端报表定义 (.rdlc) 文件。
从“报表”菜单中,选择“嵌入图像”,然后添加要在报表中使用的所有图像。如果“报表”菜单不可用,请在报表设计区内单击。
将图像控件从工具箱拖到报表布局。必须使用用于 ReportViewer 报表的图像控件。
在 Visual Studio 中选择图像,然后打开“属性”窗口。
将 Source 设置为 Embedded。
将 Value 设置为嵌入在报表定义中的某个图像。可以从下拉列表中选择要使用的图像。
在报表中使用外部图像或数据库图像
默认情况下,不支持在 ReportViewer 报表中使用外部图像。若要使用外部图像,必须在代码中设置 EnableExternalImages 属性。若要查看如何指定外部图像的示例,请参见示例:在 ReportViewer 中使用 RSS 源。
若要使用数据库图像,在 MIME 类型为 JPG、PNG 或 BMP 时,可以指定包含图像的数据库字段。如果图像是以二进制对象形式存储的,则必须编写一个表达式,将图像转换为支持的类型。
背景图像
您可以将图像用作表体或矩形、文本框、列表、矩阵或表的背景图像。背景图像与图像具有相同的属性。您还可以指定如何重复图像来填充项的背景。
注意 |
---|
某些呈现扩展插件(例如,HTML 呈现扩展插件)可以在表体、页眉和页脚中呈现表体的背景图像。可以为页眉和页脚定义单独的背景图像,但如果没有定义图像,报表将使用表体的背景图像。其他呈现扩展插件(例如,图像呈现扩展插件)在页眉和页脚中不呈现表体背景图像。 |
若要添加背景图像,请执行以下操作:
在图形设计模式下打开客户端报表定义 (.rdlc) 文件。
选择要为其添加背景图像的报表项。
注意 背景图像仅适用于矩形、文本框、表、矩阵、列表或表体等项。
在“属性”窗口中,展开 BackgroundImage,然后执行以下操作:
对于 Source,选择 External、Embedded 或 Database。
注意 若要使用项目中的图像,请选择 External。
对于 Value,键入或选择一个计算结果为图像来源的表达式。
如果 Source 属性设置为 External,则表达式的计算结果必须是图像的有效路径。此路径可以是驻留在报表服务器上的图像的静态路径,也可以是基于某个字段的路径。如果图像存储在项目中,则键入该图像在项目中显示的名称。
如果 Source 属性设置为 Embedded,则表达式的计算结果必须是嵌入到报表中的图像的名称。如果 Source 属性设置为 Database,则表达式的计算结果必须是包含二进制图像数据的字段。
对于 MIMEType,为图像选择适当的 MIME 类型。
注意 只有将 Source 属性设置为 Database 时,MIMEType 才适用。如果 Source 属性设置为 External 或 Embedded,则忽略 MIMEType 的值。
对于 BackgroundRepeat,选择 Repeat、NoRepeat、RepeatX 或 RepeatY。
看完之后,我们就继续来说我之前提到得问题, 首先我把生成的条码图像转化为二进制字节数组,方法如下:
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();
}
}
然后把得到这个二进制字节数组要转码成 Base64 类型的字符串。转化后放入到报表的数据集中。代码如下:
bytes[] imgBytes = BitmapToBytes(bmp);
DataTable dt = new DSHgz.DT_HgzDataTable(); //自定义的数据集
DataRow dtRow = dt.NewRow();
dtRow["ProID"] = "BD11-12/800-16D";
dtRow["barCode"] = Convert.ToBase64String(imgBytes); //存放前先转码。关键之处。
dtRow["date"] = "2009年06月26日";
dt.Rows.Add(dtRow);
在表报rdlc中。在报表主体中拖放一个image控件。设置其Source为database,value=System.Convert.FromBase64String(Fields!barCode.Value) // 关键之处。
然后设置MIMEType 属性。这样,你的图片就可以动态的显示到报表中了。
在MSDN中还介绍了一个方法,它所说的是图片存放在Access数据库中的。我尝试了一下,没有成功。不知道为什么,用我的方法是绝对没有问题的。大家可以参考下madn上所说的
http://msdn.microsoft.com/zh-cn/library/ms156482(SQL.90).aspx
http://msdn.microsoft.com/zh-cn/library/ms156342(SQL.90).aspx
报表ReportViewer显示图片--rdlc相关推荐
- 润乾报表,显示图片并导出的两种方法
方法1: 1.选择数据类型,如图所示: 2.选择html,@path是前端js带过来的参数(绝对路径,如:http://cs.testtest.com:8888),wom_image_path为图片的 ...
- ReportViewer报表模版中显示图片
在做项目中.我们可能会经常遇到需要在报表中显示图片的需求.如果说这个图片是个固定的,只是作为一个报表的标题或者logo之类的.那么就很简单,可是对于那些保存在数据库中或者通过程序生成的一个内存中的图片 ...
- 水晶报表中显示动态图片
href="file:///C:/WINDOWS/TEMP/msoclip1/01/clip_filelist.xml" rel="File-List" /&g ...
- Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...
在Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据一)中,解释了如何把Crystal Report整合到Sharepoint ...
- fastreport打印指定路径图片显示不出来_报表工具中图片文件怎么展示---本地图片--网络图片--数据库图片...
用于报表展示的图片来源有多种,如:数据库的图片字段.服务器本地图片.网络图片等,因此,报表工具也针对多种图片来源提供了多种多样的处理方式. 下面从不同的图片来源角度,举例介绍报表工具如何设置呈现. 图 ...
- 帆软报表导出Word不显示图片问题解决
帆软报表导出Word不显示图片问题解决 问题:从网页端导出Word版 有的图片不显示 原因:帆软报表悬浮元素不支持Word导出 解决办法:把悬浮元素的图片保存在本地,选中单元格,设置单元格元素为插入图 ...
- 自定义水晶报表的显示
自定义水晶报表的显示,比如隐藏工具栏,让报表左对齐,去除水晶报表的公司LOGO等---(新作:海波.NET) -------------------------------------- ...
- 在DataGrid中显示图片
兼谈 DadaGrid 模板列的创建 DadaGrid 是 ASP.NET 编程中一个很重要的控件,其优良的可定制功能为提高它的表现力提供了极大的方便.除了与数据源直接绑定以外,我们还可以通过列绑定模 ...
- python运行完不能显示图_【已解决】Python中通过Image的open之后,去show结果打不开bmp图片,无法正常显示图片...
[问题] 在windows的cmd命令行下,使用Python的PIL库打开并显示一个jpg图片:openedImg = Image.open(saveToFile); print "open ...
最新文章
- 建立asp.net应用程序提示:无法与服务器建立连接
- Linux内核的namespace机制分析
- mysql时间变成季度_Mysql 时间操作(当天, 昨天,7 天,30 天, 半年, 全年, 季度)
- Lesson 16.6Lesson 16.6 复现经典架构:LeNet5 复现经典架构 (2):AlexNet
- 市电中断时,数据中心机房如何保证持续供电?
- OS之内存管理 ---基本的内存管理策略(二)
- bigdecimal 加法_巧用加法的运算律,简化有理数的加法运算
- 测试的第三重境界:挑战零缺陷
- js 实现图片上传
- ssis sql oracle,[SQL][SSIS]透過 SSIS 連接 Oracle 的資料庫
- SAP现金管理(Cash Management)的常见问题
- 03 注册Gitee账号及设置公钥
- 计算机桌面显示如何关闭,几个小方法教你如何关闭笔记本电脑的屏幕但保持电脑运行!...
- 转载:关于 PHP 5.4 你所需要知道的
- Qt QMenuBar QMenu和QAction
- (转)探讨12306两地三中心混合云架构
- 变速自行车的变速、省力原理与窍门
- 2022.12.22 c词汇背诵
- Maven的配置、安装及测试可用
- java三层架构实例