springboot向word文档插入内容和图片
最近参加了一个比赛,需要生成一份word报告,查找了很多篇相关博客,都不太便于理解,最终还是非常坎坷的给整了出来,今天就详细的梳理下流程。
- 主要分四个部分
- ==1-首先创建一个word模板==
- 1-1另存为.xml格式
- 1-2把test.xml文件保存在idea的templates目录下,改后缀为.ftl
- 1-3分析test.ftl文件
- ==2-示例代码==
- 2-1导入依赖
- 2-2controller层
- 2-3service层
- ==3-编辑test.ftl模板==
- ==4-测试结果==
主要分四个部分
1-首先创建一个word模板
.doc/.docx都行,我建的是test.doc
word模板的部分截图(记住这个景气指数),最后我们会更改这个图片和文字,而格式和其他设置会跟原模板一模一样
1-1另存为.xml格式
1-2把test.xml文件保存在idea的templates目录下,改后缀为.ftl
1-3分析test.ftl文件
首先:test.ftl的内容是压缩的,我们使用Ctrl+Alt+F来格式化代码,接着看下图
有错字=-=,总之就是Ctrl+F 查找 pkg:binaryData,这里存放着图片的字节码,然后点击左边的小标记,隐藏他(太多了),最后我们更换图片就是修改字节码,这里有十几张图片如何辨别我们想要修改的那个呢? 我们继续往下看:
隐藏完后的样子:
然后往上捣:
现在捣到了这个位置:
rid9在这个地方被引用了,那么我就可以认为,我检索的那张图片,就是被放到了这个位置(事实也正是这样)
这里截图错了,应该截到image2.jpeg(意思到了就行)
2-示例代码
2-1导入依赖
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.30</version></dependency>
2-2controller层
@GetMapping ("/getWord")public void exportSellPlan(HttpServletRequest request, HttpServletResponse response) {System.out.println("节点");service.exportSellPlan(request, response);}
2-3service层
map里的键值对可以插入到test.ftl中,以做替换使用
public void exportSellPlan(HttpServletRequest request, HttpServletResponse response){String imagePath ="src/main/resources/images/11.png";String imagePath2="src/main/resources/images/面码.jpg";String imagePath3="src/main/resources/images/favicon.ico";//获得数据Map<String, Object> map = new HashMap<>();map.put("title", "浅喜的果园");map.put("context", "users");map.put("context1",this.getImageBase(imagePath));//获取图片的字节码map.put("mm", this.getImageBase(imagePath2));map.put("favicon", this.getImageBase(imagePath3));try {WordUtil.exportMillCertificateWord(request, response, map, "test", "test.ftl");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();
// return new CommonResult<>(404,"failure");}
// return new CommonResult<>(200,"success");}//获得图片的base64码@SuppressWarnings("deprecation")public String getImageBase(String src) {if(src==null||src==""){return "";}File file = new File(src);if(!file.exists()) {return "";}InputStream in = null;byte[] data = null;try {in = new FileInputStream(file);} catch (FileNotFoundException e1) {e1.printStackTrace();}try {assert in != null;data = new byte[in.available()];in.read(data);in.close();} catch (IOException e) {e.printStackTrace();}BASE64Encoder encoder = new BASE64Encoder();return encoder.encode(data);}
3-编辑test.ftl模板
这是我们service层中的map:
map.put(“title”, “浅喜的果园”);
map.put(“context”, “users”);
map.put(“context1”,this.getImageBase(imagePath));//获取图片的字节码
map.put(“mm”, this.getImageBase(imagePath2));
map.put(“favicon”, this.getImageBase(imagePath3));
同时把“景气指数”也替换掉
4-测试结果
启动我们的项目
在浏览器访问http://localhost:8082/getWord
保存这个word文档到本地
查看:
虽然中间有点小差错,不过没啥答问题。
springboot向word文档插入内容和图片相关推荐
- python 给word添加背景图片_Python如何使用word文档插入图片和表格
Python如何使用word文档插入图片和表格 发布时间:2020-10-26 13:49:29 来源:亿速云 阅读:101 作者:挣扎的蓝藻 这篇文章运用简单易懂的例子给大家介绍Python如何使用 ...
- 用python将word文档导入数据库_python读取word文档,插入mysql数据库的示例代码
表格内容如下: 1.实现批量导入word文档,取文档标题中的数字作为编号 2.除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng # -*- coding: ...
- python打开word并插入图片_Python操作word文档插入图片和表格的实例演示
前言 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多说了,来一起看看详细的代码 实例代码: # -*- coding: U ...
- (一)JAVA基于OPENXML的word文档插入、合并、替换操作系列之基础篇
(一)JAVA基于OPENXML的word文档插入.合并.替换操作系列之基础篇 前言 什么是Open Xml? Open XML SDK 这系列笔记要做点什么? 涉及技术点 关于word.openxm ...
- (五)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之word文件合并[支持多文件]
(五).JAVA基于OPENXML的word文档插入.合并.替换操作系列之word文件合并[支持多文件] 二.word合并的多种方案简单比较 三.基于Open Xml WordprocessingML ...
- word文档找不到smartart_图文详解Word文档插入SmartArt图形的方法
这篇文章主要以图文结合的方式详细介绍了Word文档插入SmartArt图形的方法,具体内容如下 win7系统下Word文档插入SmartArt图形的方法分享给大家,我们经常使用Word文档编辑或保存资 ...
- java openxml 操作 word,(三)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之html转word...
(三).JAVA基于OPENXML的word文档插入.合并.替换操作系列之html转word 系列笔记传送门 富文本转word文档 准备待转换内容 内容清理与格式化 转换成word文档 输出结果展示 ...
- 可以将Word文档插入到CAD中吗?怎么操作?
有工作中,我们经常会需要使用到Excel.Word等办公软件,像一些从事建筑.设计等行业的小伙伴们呢而言,有时候也会需要将CAD图纸中插入Word等内容,那么如何操作才能将Word插入到CAD图纸中呢 ...
- php怎么在表格里插图片,Python操作word文档插入图片和表格的实例演示
今天带来Python操作word文档插入图片和表格的实例演示教程详解 前言 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多 ...
最新文章
- AI 创业周报第4期:AI芯片创企重磅发力,左手医生完成亿元 B 轮融资
- linux进程--写时拷贝技术copy-on-write(七)
- html 图片使用scale,CSS scale()用法及代码示例
- unix linux 安装mono,关于mono在linux连接unixodbc的问题
- CERC 2017 H:Hidden Hierarchy (模拟)
- 互斥量+条件变量实现 信号量
- 排查 java 程序CPU飙升问题
- txt文件内容导入mysql数据库中_将txt文件导入mysql数据库
- JS放大镜小功能功能之原理详细解析
- PID控制器的输入量和输出量的物理关系解释
- 半同步/半反应堆模型以及简单实现(一)
- C++书本综合实例(一)个人银行账户管理
- C++——m个月饼分给n个人
- Window操作系统基本知识
- 《ASP.NET AJAX程序设计 第I卷 服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit》目录(最终定稿)...
- CentOS6实验模板机搭建
- 魔兽世界---熊猫人之谜
- 星起航:抖音小店体验分低怎么办,如何提高店铺体验评分?
- 画质超高的仙侠java游戏_画质超高的游戏有哪些?顶级画质大型游戏盘点
- Workrave怎么用 Workrave使用方法, Workrave 健康计时器,预防电脑长期操作的职业病伤害...
热门文章
- JS基础之数组--概述、创建数组的几种方式、数组的特点、数组的常用方法、数组的解构赋值、数组高级API
- C# 操作Excel加水印
- 【转载】用Python计算身份证校验码
- 疑惑!AI中台到底为什么火了?道翰天琼认知智能机器人平台API接口为您揭秘。
- 西瓜视频运营策略分析:借助平台优势实现内容升级
- python实现对输入日期计算日期为当年第几天
- centos7部署calamari
- 在CentOS 7 安装Calamari
- kotterKnife+dagger2+otto+okhttp+picasso+retrofit+rxjava示例项目,使用kotlin编写。
- 监控工具普罗米修斯(Prometheus)的介绍与安装