报表不同页导出不同图片探讨

有时用户希望能够在报表的不同页中显示不同图片,并能够正常导出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单元格中的数据就未得到正确的设定,那么也就不能显示图片了。所以正确的选择是使用分页导出。