我看公司之前做电子合同,使用TIBCO jaspersoft
做的报表模板,如果是给自己公司开发或者给客户做项目,这个也没有什么,因为反正模板是固定的,一次性开发,不用担心后续的问题。即使后期有调整,改一下报表,重新打包就好了。
但是如果做像岁月会计云这样的多用户平台,这种办法就显得笨了。总不能搞一个开发,都是按照单租户的模式。所以考虑通用性,在网上找到了poi-tl,这个大神的大作。我使用的版本是1.10.6
,因为poi-tl
对poi
的版本有要求。而easyexcel
当前版本到3.3.3
,使用的poi
版本是4,1,2
,因此poi-tl
不能使用最新的版本。
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.10.6</version>
</dependency>
模板中按照官网参数来配置,这里就不说了,现在的问题是图片如何处理。如下面,怎么在乙方的位置,将公司的公章盖上去。
官方介绍的是微软office的说明,但我的电脑上用的wps,怎么办呢?
当模板采用下面{{@var}}
Map<String, Object> datas = new HashMap<String, Object>() {
{
put("qdrq_n", "2024");
put("qdrq_y", "3");
put("qdrq_r", "8");
put("var", Pictures.ofLocal("src/test/resources/lu.png").size(120, 120).create());
}
};
XWPFTemplate.compile("src/test/resources/certificate/销售一部合同模板.docx").render(datas)
.writeToFile("target/销售一部合同模板.docx");
运行可以看到的效果如下图,这个效果并不好,最好还是图片在文字上面,因为那样操作,图片占了位置。
通过office打开模板,确实可以看到,office中选中图片,有一个“替换文字功能”,然后在“替换文字”中写上变量即可。
wps word怎么都没看到这个功能在哪里?气人。