poi填充word(poi-tl)

依赖

  
        <dependency>
            <groupId>com.deepoovegroupId>
            <artifactId>poi-tlartifactId>
            <version>1.6.0-beta1version>
        dependency>
          
        <dependency>
            <groupId>org.apache.poigroupId>
            <artifactId>poi-ooxmlartifactId>
            <version>4.1.0version>
        dependency>

代码

package com.joezj.util;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;

import javax.validation.constraints.NotNull;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;

/**
 * Word导出工具类(将查询数据填充到模板导出)
 *
 * @author: Zheng Jie
 * @version: $ WordExportUtil, V1.0 2020年12月12日 0:32 Zheng Jie Exp $
 */
public class WordExportUtil {

    /** 模板所在包 */
    private static String TEMPLATE_PACKAGE = "wordTemplate/";

    /**
     * 

* 导出模板到输出流中 *

    *
  • templateName —— 模板文件名称 *
      *
    • 模板文件名称: book.docx *
    • 入参: "book.docx" *
    *
  • dataMap —— 待填充数据 * dataMap一般与实体对应,其中key对应模板中占位符字符,如: *
      *
    • 实体类属性:String name = "张三"; *
    • 模板占位符:姓名:{{name}} *
    *
  • outStream —— 输出流,如:response.getOutputStream() *
*

* @param templateName 项目webapp/wordTemplate目录下模板文件名称 * @param dataMap 需要填充进模板的数据 * @param outStream 需要被写入的流 * @throws IOException */
public static void exportWordToStream(@NotNull String templateName, @NotNull Map dataMap, @NotNull OutputStream outStream) throws IOException { XWPFTemplate xwpfTemplate = null; try{ // 配置 Configure config = Configure.newBuilder().build(); // 1. 在tomcat环境下模板存放于webapp时,读取webapp目录路径作为起点 // String path = IOUtil.webappDirPath(); // 2. 模板存放于Rsource路径下 String path = IOUtil.classesDirPath(); path = path + TEMPLATE_PACKAGE + templateName; InputStream stream = new FileInputStream(new File(path)); // 编译模板,填充数据 xwpfTemplate = XWPFTemplate .compile(stream, config) .render(dataMap); xwpfTemplate.write(outStream); }catch (IOException e){ throw new RuntimeException("生成文件失败!"); }finally { if(xwpfTemplate != null){ xwpfTemplate.close(); } } } /** *

* 导出模板到输出指定路径 *

    *
  • templateName —— 模板文件名称 *
      *
    • 模板文件名称: book.docx *
    • 入参: "book.docx" *
    *
  • dataMap —— 待填充数据 * dataMap一般与实体对应,其中key对应模板中占位符字符,如: *
      *
    • 实体类属性:String name = "张三"; *
    • 模板占位符:姓名:{{name}} *
    *
  • destDirPath —— 目标存放目录,如:C:\Users\Joe\Desktop\ *
*

* @param templateName 项目webapp/wordTemplate目录下模板文件名称 * @param dataMap 需要填充进模板的数据 * @param destDirPath 目标存放目录 * @throws IOException */
public static void exportWordToPath(@NotNull String templateName, @NotNull Map dataMap, @NotNull String destDirPath) throws IOException { XWPFTemplate xwpfTemplate = null; try{ // 配置 Configure config = Configure.newBuilder().build(); // 1. 在tomcat环境下模板存放于webapp时,读取webapp目录路径作为起点 // String path = IOUtil.webappDirPath(); // 2. 模板存放于Rsource路径下 String path = IOUtil.classesDirPath(); path = path + TEMPLATE_PACKAGE + templateName; InputStream stream = new FileInputStream(new File(path)); // 编译模板,填充数据 xwpfTemplate = XWPFTemplate .compile(stream, config) .render(dataMap); xwpfTemplate.writeToFile(destDirPath); }catch (IOException e){ throw new RuntimeException("生成文件失败!"); }finally { if(xwpfTemplate != null){ xwpfTemplate.close(); } } } }
package com.joezj.util;

import java.io.InputStream;

/**
 * IO工具类
 *
 * @author: Zheng Jie
 * @version: $ IOUtil, V1.0 2020年12月02日 16:19 Zheng Jie Exp $
 */
public class IOUtil {

    /**
     * 获取运行时类根目录路径
     * @return 运行时类根目录路径
     */
    public static String classesDirPath(){
        Object object = new Object();
        return object.getClass().getResource("/").getPath().replaceFirst( "/" ,  "" );
    }

    /**
     * 获取运行时webapp目录路径
     * @return 运行时webapp目录路径
     */
    public static String webappDirPath(){
        return classesDirPath().replaceAll( "WEB-INF/classes/" ,  "" );
    }
}

测试

import java.io.IOException;
import java.util.HashMap;

public class ceshi {
    public static void main(String[] args) throws IOException {
        String templateName = "proposal-meeting.docx";
        HashMap<String, Object> map = new HashMap<>();
        map.put("org", "1234比好1");
        String destDirPath = "E:\\other\\jieguo.docx";
        WordExportUtil.exportWordToPath(templateName, map, destDirPath);
    }
}

poi填充word(poi-tl)_第1张图片

poi填充word(poi-tl)_第2张图片

参考

文章

你可能感兴趣的:(问题记录,apache,java,tomcat)