poi-tl中使用正则和错误处理

316 阅读2分钟

poi-tl

poi-tl 导出的时候,模板写法中标签使用默认情况下是可以使用数字、下划线、字母、中文汉字的组合,但是一般情况下我们不会使用汉字作为参数名进行传递,那么这个时候想稍微做个限制,比如我们不允许标签中使用任何汉字,其它的都允许,那么可以通过正则表达式和 poi-tl 的方法进行限制。

限制标签只允许使用中文

比如这里限制标签中只允许使用中文,不允许出现任何汉字,大致导出的代码如下:

// 限制不允许出现任何中文
ConfigureBuilder configureBuilder = Configure.builder()
                                            .buildGrammerRegex("[\\w]+(\\.[\\w]+)*");
XWPFTemplate template = XWPFTemplate.compile("D:\template.docx").render(dataMap);
try {
    template.writeAndClose(new FileOutputStream("D:\out.docx"));
}catch (Exception e){
    e.printStackTrace();
}

最重要的一句就是 .buildGrammerRegex("[\w]+(\.[\w]+)*"); ,不只是可以限制使用中文也可以限制其它,写好对应的正则表达就可以了,这样限制之后我们标签中就不允许出现汉字,如果再导出的时候出现汉字的话就会在导出之前进行提示,更改掉对应的写法即可。

错误处理

默认情况下 poi-tl 在导出的时候除了一些模板问题会进行报错,其它情况下并不会进行报错,当然在开发过程中遇到过最多的报错信息就是文件被占用,打开测试导出的文档老是忘记关闭,然后由于占用的问题无法重新写入模板数据进行导出。
默认情况下当我们后台组装好的参数传输到模板中的占位符时,加入当前的列表、字符、表格为空时,并不会像Java 那样拿的时候进行报错,因为 poi-tl 默认情况下是对于这些数据显示就会为空,并不会展示到文档当中,默认会认为标签值为 null,避免了频繁为空造成的报错情况。