身份证一类读卡器读取的照片信息,保存在
Access
数据库中一般为
OLE
型字段,图片为
BMP
格式,因为是用其读卡器写入的,其数据类型为常二进制数据。
再用报表或
EXCEL
读取这些图片时,如果将该图片字段拖入单元格后,预览就看不到图片了。
EXCEL
如何读取这类图片网上有教程,这里不多说。如果你要用报表软件
FineReport
来展现这类图片该如何做呢?
思路是采用
FineReport
的自定义函数,使用
java
的
jna
调用本地的
WltRS.dll
,将数据库
OLE
字段中的长二进制数据转为
.wlt
文件,再调用本地方法将
.wlt
文件转为
.bmp
图片,最终自定义函数返回图片在
FineReport
中显示。
1、
前提准备
本地库文件
WltRS.dll
保存在
E:\bmp\WltRS.dll
(位置可变,但
ixu
保证以自定义函数中的路径一致);
eclipse
项目中导入
FINEREPORT
的
jar
包。
2、
实现自定义函数
自定义一个函数类
BinaryImage.java
,该类继承
AbstractFunction
,在
run()
方法中使用
java
的
jna
调用本地库文件
WltRS.dll
,最终返回图片。代码如下:
Java代码
将编译后的
BinaryImage.class
、
WltRS.class
根据包名拷贝至报表工程如报表安装目录下的
WebReport\WEB-INF\classes\com\FineReport\function\
文件夹下。
3
、使用自定义函数
将
OLE
类型字段的值显示为图片。启动设计器,点击服务器
>
函数管理器,新增自定义函数
BINARYIMAGE
,选择
com.FineReport.function.BinaryImage
类:
将身份证读卡器写入
Access
数据库
OLE
型字段的照片信息拖入单元格,双击,在
数据列
>
高级
>
自定义
显示中使用自定义函数转换成图片:
本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1840187,如需转载请自行联系原作者
OLE,Object Linking and Embedding,即对象连接与嵌入。我们在设计程序时,OLE可以用来创建复合文档,把文字、声音、图像、表格、应用程序等类型的信息组合在一起,在Word中,我们可以通过OLE来实现以上要素信息的组合。
用户自定义结构数据与VARIANT转换
将用户自定义的C结构数据存储成VARIANT类型,需要时再将VARIANT类型转为用户自定义的结构数据,有十分现实的意义,既然我们不想为这样的结构数据写一个COM包装类。虽然有很多方法和手段生成这样的VARIANT,但是,多数时候可能需要一个更加简单的,灵活的方法。