一、详情可查看官网
一、简单测试beetl
生成word
文件
1、在springboot
项目中添加beetl
的依赖
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl-framework-starter</artifactId>
<version>1.2.38.RELEASE</version>
</dependency>
2、根据需求制作.btl
模板文件
(1)打开word
制作一个测试模板,需要动态获取数据的值使用${}
格式获取
(2)将文件另存为.xml
文件,使用notepad++
或其他软件,打开test.xml
文件,检查${}中是否有其他字符,如有请删除,确保格式一致
(3)修改完成后,将其后缀名修改为.btl
(4)将该文件拷贝到项目下 resource/templates/
目录下,如若没有该目录,可新建。
3、在项目中新建utils
包,新建一个BeetlUtil
工具类
(1)Beetlutil.java
import org.beetl.core.Configuration;
import org.beetl.core.GroupTemplate;
import org.beetl.core.Template;
import org.beetl.core.resource.ClasspathResourceLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
public class BeetlUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(BeetlUtil.class);
private static final String TEMPLATE_PATH = "templates/";
private static GroupTemplate gt;
public static Template getTemplate(String templateName) throws Exception {
if (gt == null) {
ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader(TEMPLATE_PATH);
Configuration cfg = Configuration.defaultConfiguration();
gt = new GroupTemplate(resourceLoader, cfg);
}
return gt.getTemplate(templateName + ".btl");
}
public static void exportWord(String fileName, Map<String, Object> data, Template template, HttpServletResponse response) {
setFileDownloadHeader(response, fileName);
template.binding(data);
try {
template.renderTo(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public static void setFileDownloadHeader(HttpServletResponse response, String fileName) {
try {
String encodedFileName = URLEncoder.encode(fileName, "UTF-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName);
} catch (UnsupportedEncodingException e) {
LOGGER.error(e.getLocalizedMessage(), e);
}
}
}
(2)IndexController.java
@GetMapping("/export")
public void export(HttpServletResponse response) {
Map<String, Object> data = new HashMap<>();
data.put("area", record.getArea());
data.put("remark", record.getRemark());
data.put("status", status);
try {
Template template = BeetlUtil.getTemplate("test");
BeetlUtil.exportWord("test.doc", data, template, response);
} catch (Exception e) {
e.printStackTrace();
}
}
(4)打开下载后的文件,效果如下图所示