报表不同页导出不同图片探讨
有时用户希望能够在报表的不同页中显示不同图片,并能够正常导出excel。本文将针对这个小问题进行深入的探讨。
分析
报表提供的分页后计算函数pno(),可以判断当前页为第几页,再根据这个页码判断显示哪张图片。
本文将着重探讨体内通过图片文件、富文本 和 HTML 三种类型的单元格来实现上述需求。
本文以分两页报表显示两张图片为例,将图片所在行设置为报表头。
图片文件
在图片文件类型的单元格内写入:=if(pno()==1,”pic1.jpg”,”pic2.jpg”),发布后发现图片部分空白,即图片没有显示。
测试中我们发现,pno()在图片文件类型单元格中不起作用,对此的深层分析如下:
由于图片这样的单元格有可能会对单元格尺寸产生影响,而尺寸的调整是必须在分页前完成的,因此图片单元格的计算必须在分页前完成。想在分页完成后,再回过头来改变单元格中的图片是不允许的。
所以图片文件类型单元格不能使用pno()函数。
富文本
润乾报表提供的富文本单元格类型为报表设计者提供了极大的便利,但其只支持部分类html标签。
本文提到的需求,由于富文本中无法使用img标签而不能实现需求。
HTML
对于HTML类型的单元格,支持全html语法,我们可以在该类型的单元格中嵌套任何html元素和标签。并且,可以结合报表函数联合使用。
在该单元格内写入:“<img src=’http://127.0.0.1:6001/demo/reportFiles/pic”+pno()+”.jpg’>”
发布后可以看到第一页和第二页分别显示了不同的图片,如下图:
关于导出
使用html类型的单元格,导出时需选择分页,图片才可以正常导出。如导出excel:
对于此的深层分析:
使用Html单元格时,由于单元格尺寸不会受单元格内容影响,所以在分页后改变html单元格的内容是没有问题的。若在导出时选择不分页,那么html单元格中的数据就未得到正确的设定,那么也就不能显示图片了。所以正确的选择是使用分页导出。