IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java 用poi-tl向word中插入数据,图片 -> 正文阅读

[Java知识库]java 用poi-tl向word中插入数据,图片

最近写点东西练练手,就是页面中表格输入的数据要存入word的模板当中,记录一下
看了几种办法大概就是:

  1. poi-tl,word模板引擎,可以根据模板来创建word文档,很简单也方便上手。
  2. Jacob,调用微软Office的COM接口,生成的word文件格式规范。
  3. Apache POI包括一系列的API,通过这些API在Java中读写Excel、Word等文件。
  4. FreeMarker生成word文档,是由XML+FreeMarker来实现的。先把word文件另存为xml,在xml文件中插入特殊的字符串占位符,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板,编码调用FreeMarker实现文本替换并输出Doc。
  5. PageOffice,封装了微软Office繁琐的vba接口,支持生成word文件,也可以在线编辑word文档和读取word文档内容。

我最后是用的poi-tl实现的,poi-tl官方文档在这里,下边举个我测试时候的例子:

提交用的表单:

word模板:

在这里插入图片描述

把表单的内容填好提交按照已有的word模板生成word文档,随便提交了点数据,最后生成的结果:

在这里插入图片描述

首先需要引入依赖:

    <!--文件上传的工具,不上传文件就不用了-->
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!--poi-tl 导出word的依赖-->
    <dependency>
      <groupId>com.deepoove</groupId>
      <artifactId>poi-tl</artifactId>
      <version>1.10.0</version>
    </dependency>

生成word文档的工具类:

    public static void word(Map<String,Object> map) {
        String filepath = "d:/"+map.get("name")+"-"+map.get("sign")+".docx";//最终导出word的路径
        try {
            XWPFTemplate template = XWPFTemplate.compile("d:/menzhen.docx").render(map);//这个就是word模板文档
            FileOutputStream out = new FileOutputStream(filepath);
            template.write(out);
            out.flush();
            out.close();
            template.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

后台处理的servlet(这里是把要上传的数据存在hashmap里,图片的话是把上传的图片存在本地再new一个PictureRenderData对象存到hashmap里):

public class exportWord extends HttpServlet {

    private Map<String,Object> BingLiMap= new HashMap<String, Object>();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            //磁盘文件项工厂
            DiskFileItemFactory diskFileItemFactory =new DiskFileItemFactory();
            //核心解析类
            ServletFileUpload servletFileUpload =new ServletFileUpload(diskFileItemFactory);
            //解析request,返回list集合
            List<FileItem> fileItems = servletFileUpload.parseRequest(request);
            //遍历集合得到请求每个部分的文件项对象
            for (FileItem fileItem : fileItems) {
                if(fileItem.isFormField()){
                    //普通项
                    String name=fileItem.getFieldName();
                    BingLiMap.put(name,fileItem.getString("UTF-8"));

                } else {
                    //文件上传项
                    String LuJing="d:/"+BingLiMap.get("sign")+".png";
                    InputStream inputStream = fileItem.getInputStream();
                    OutputStream outputStream = new FileOutputStream(LuJing);
                    //流对接
                    int len=0;
                    byte[] bytes=new byte[1024];
                    while ((len=inputStream.read(bytes))!=-1){
                        outputStream.write(bytes,0,len);
                    }
                    inputStream.close();
                    outputStream.close();
                    BingLiMap.put("file",new PictureRenderData(120, 110, LuJing));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        wordUtil.word(BingLiMap);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

走完servlet word文档就会创建在工具类的输出路径中,随便写写,水平有限哈~

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 14:57:12  更:2021-08-20 14:59:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 3:29:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码