spring boot freemarker 导出word 带echarts图形报表
创建word文件内容如下
将word导出为xml格式
将文件后缀名改为 .ftl
打开文件 修改图片的数据内容使用表达式代替
修改后
后查看${username}是否分家了,如果分家了将其多余部分删除 使其团聚
在springboot项目中添加freemarker依赖
- <!-- 导出word文档-->
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- <version>2.3.20</version>
- </dependency>
将生成的test.ftl放在 resources/templates文件夹下
html中添加echarts
- <div id="container" style="height: 100%;"></div>
- <a onclick="exportImage()">导出</a>
- var dom = document.getElementById("container");
- var myChart = echarts.init(dom);
- var app = {};
- option = null;
- option = {
- xAxis: {
- type: 'category',
- data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
- },
- yAxis: {
- type: 'value'
- },
- series: [{
- data: [820, 932, 901, 934, 1290, 1330, 1320],
- type: 'line'
- }]
- };
- ;
- if (option && typeof option === "object") {
- myChart.setOption(option, true);
- }
添加导出触发事件方法
- function exportImage(){
- //获取Echart图形报表生成的Base64编码格式的数据
- var imgData = myChart.getConnectedDataURL();
- $.post('/word',{'imgData':imgData},function (data) {
- alert(data);
- })
- }
controller 中的方法
- @RequestMapping("/word")
- @ResponseBody
- public String generateWord(String imgData){
- // 传递过程中 "+" 变为了 " " ,所以需要替换
- String newImageInfo = imgData.replaceAll(" ", "+");
- // 数据中:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABI4AAAEsCAYAAAClh/jbAAA ...
- // 在"base64,"之后的才是图片信息
- String[] arr = newImageInfo.split("base64,");
- //添加模板数据
- Map<String,Object> dataMap = new HashMap<>();
- dataMap.put("username","张三");
- dataMap.put("imgData",arr[1]);
- //文件生成路径
- String wordFilePath = "D:\\ftl";
- //文件生成名称(因为是2003版本的xml模板,这里使用.doc后缀,如果使用.docx后缀生成的文件有问题)
- String wordFileName = "演示文档.doc";
- //模板文件名称
- String templateFileName = "test.ftl";
- //生成word文档
- Boolean result = WordUtil.writeWordReport(wordFilePath, wordFileName, templateFileName, dataMap);
- if(result){
- return "success";
- }else {
- return "error";
- }
- }
创建WordUtil.java
其中代码如下
- private static final String FTL_FP = "/templates/"; //模板路径
- private static Configuration configuration = null;
- static{
- configuration = new Configuration();
- configuration.setDefaultEncoding("utf-8");//设置默认的编码
- //读配置文件
- // path = PropertiesUtil.get("FILE_PATH")+"/";
- }
- public static Boolean writeWordReport(String wordFilePath,String wordFileName,String templateFileName, Map<String, Object> beanParams) {
- Writer out = null;
- try {
- configuration.setClassForTemplateLoading(WordUtil.class,FTL_FP);
- Template template = configuration.getTemplate(templateFileName, "UTF-8");
- //获取文件目录,如果不存在则创建
- String filePath = "";
- int index = wordFilePath.lastIndexOf(File.separator);
- if(index != wordFilePath.length()-1){
- filePath = wordFilePath+ File.separator;
- }else {
- filePath = wordFilePath;
- }
- File file1 = new File(filePath);
- if(!file1.exists()){
- file1.mkdirs();
- }
- //输出文件
- File file = new File(filePath+wordFileName);
- FileOutputStream fos = new FileOutputStream(file);
- out = new OutputStreamWriter(fos, "UTF-8");
- template.process(beanParams, out);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }finally{
- try {
- if(out != null) {
- out.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
点击导出可生成word文件!
spring boot freemarker 导出word 带echarts图形报表的更多相关文章
- freemarker导出word带图片
导出word带图片 如果你需要在word中添加图片,那你就在第一步制作模板时,加入一张图片占位,然后打开xml文档,可以看到如下的一片base64编码后的代码: <w:binData w:nam ...
- 使用Freemarker导出Word文档(包含图片)代码实现及总结
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- freemarker导出word文档——WordXML格式解析
前不久,公司一个项目需要实现导出文档的功能,之前是一个同事在做,做了3个星期,终于完成了,但是在项目上线之后却发现导出的文档有问题,此时,这个同事已经离职,我自然成为接班者,要把导出功能实现,但是我看 ...
- freemarker导出word文档
使用freemarker导出word文档的过程 **************************************************************************** ...
- freemarker导出word档
1.word另存为xml:2.xml文件后缀名改成ftl:3.编写完整json字符串备用:4.修改ftl中动态字段为json中对应字段名:5.编写java代码自动生成word文件:(注意:换行用< ...
- spring boot+freemarker+spring security标签权限判断
spring boot+freemarker+spring security标签权限判断 SpringBoot+SpringSecurity+Freemarker项目中在页面上使用security标签 ...
- Spring boot Freemarker 获取ContextPath的方法
Spring boot Freemarker 获取ContextPath的两种方法: 1.自定义viewResolver,Spring boot中有一个viewResolver,这个和配置文件中的师徒 ...
- freemarker导出word的一些问题
首先,了解下freemarker导出word的流程: 参考https://www.cnblogs.com/llfy/p/9303208.html 异常一: freemarker.core.ParseE ...
- 关于使用freemarker导出word
java使用FreeMarker导出word 一. 先做一个word模板 二. 将该word文件另存为xml格式(注意是另存为,不是直接改扩展名) 三. 打开xml文件把要 ...
随机推荐
- WPF Path和图形
<Window x:Class="GeometryDemo.MainWindow" xmlns="http://schemas.microsoft.com/winf ...
- sql执行分页查询
declare @PageSize int,@PageIndex int;set @PageSize=5;set @PageIndex=2;WITH Pagination AS( SELECT * ...
- Android项目实战(四十):在线生成按钮Shape的网站
原文:Android项目实战(四十):在线生成按钮Shape的网站 AndroidButton Make 右侧设置按钮的属性,可以即时看到效果,并即时生成对应的.xml 代码,非常高效(当然熟练的话 ...
- 经典面试编程题--atoi()函数的实现(就是模拟手算,核心代码就一句total = 10 * total + (c - '0'); 但是要注意正负号、溢出等问题)
一.功能简介 把一个字符串转换成整数 二.linux c库函数实现 /*** *long atol(char *nptr) - Convert string to long * *Purpose: * ...
- Image Paragraph论文合辑
A Hierarchical Approach for Generating Descriptive Image Paragraphs (CPVR 2017) Li Fei-Fei. 数据集地址: h ...
- Win10《芒果TV》商店版双十一独家大礼,每日前100名用户免费领取7天VIP
为答谢大家对Win10<芒果TV>商店版一年以来一如既往的支持,2016年11月1日-11月30日期间,每天登录<芒果TV>UWP版(最新版本v3.1.3)的前100位用户可领 ...
- C# Insert批量插入
最近项目需要做一个批量导入的功能,每次导入最少的记录数都达到1万,之前写了一个通过循环Insert的方法,结果我自己都看不下了.太慢了,所以用了SqlBulkCopy,很快,100万条数据,1分钟都不 ...
- ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...
- 一小部分机器学习算法小结: 优化算法、逻辑回归、支持向量机、决策树、集成算法、Word2Vec等
优化算法 先导知识:泰勒公式 \[ f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(x_0)}{n!}(x-x_0)^n \] 一阶泰勒展开: \[ f(x)\approx ...
- Oracle 宣布 Java 7 生命周期终结
快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...