UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表,集成ureport2后指定项目启动任意一个端口,报表名称:xxxxxxx.ureport.xml。
报表设计地址:http://localhost:9002/ureport/designer?_u=tbl:xxxxxxx.ureport.xml
访问报表地址:http://localhost:9002/ureport/preview?_u=tbl:xxxxxxx.ureport.xml
ureport2的maven依赖
<dependency>
<groupId>com.bstek.ureport</groupId>
<artifactId>ureport2-console</artifactId>
<version>2.2.9</version>
</dependency>
要想访问的报表图标显示为英文需要找到后台代码com.bstek.ureport.console.html.HtmlPreviewServletAction
其中有一个方法找到Template template的地方,这里会根据对应的template生成报表页面
public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 省略
Template template;
template = this.ve.getTemplate("ureport-html/html-preview.html", "utf-8");
PrintWriter writer = resp.getWriter();
template.merge(context, writer);
writer.close();
}
模板位置在jar包根目录下ureport-html/html-preview.html
改造如下:
1. 在目录下增加英文模板
2. 后台代码改造
public void execute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 省略
String reqLanguage = req.getParameter("reqLanguage");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
customParameters = null;
Template template;
if (StringUtils.isNotBlank(reqLanguage) && reqLanguage.equals("1")) {
template = this.ve.getTemplate("ureport-html/html-preview-en.html", "utf-8");
} else {
template = this.ve.getTemplate("ureport-html/html-preview.html", "utf-8");
}
PrintWriter writer = resp.getWriter();
template.merge(context, writer);
writer.close();
}
访问地址http://localhost:9002/ureport/preview?_u=tbl:xxxxxxx.ureport.xml&reqLanguage=1效果如下: