java一键生成word操作,比poi简单。poi-tl

  • 内容
  • 相关

最近用到java生成word,一想到要用poi各种逻辑各种写超级麻烦,去百度到某个插件poi-tl(操作word)

着实超级简单,有需要的朋友看过来了

 

package com.bd.modules.pmp.util;
 

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import java.util.HashMap;
import java.util.Map;
 
import javax.servlet.http.HttpServletResponse;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.bd.common.config.Global;
import com.deepoove.poi.XWPFTemplate;


 
/**
 * DOC生成工具类
 * @author lzy
 * @date Jul 24, 2019  9:39:28 AM
 * @packageName com.bd.modules.pmp.util
 * @jdk_version 1.8.121
 */
public class DocUtil {
    public static Logger logger = LoggerFactory.getLogger(DocUtil.class);
    //存储模板路径common/css/yygzs.css
//  public static final String template1="d:/testWord.docx";
    /*
     * win的路径
     */ 
    public static final String template1=Global.getConfig("winUploadWord")+"/01_供应链ABS项目_付款确认书(共同债务人)20180426.docx";
    public static final String template2=Global.getConfig("winUploadWord")+"/02_应收账款转让合同(适用于公开型无追索应收账款转让业务)20180426.docx";
    public static final String template3=Global.getConfig("winUploadWord")+"/03供应链ABS项目_买方确认函(债务人确认债务)20180426.docx";
    public static final String template4=Global.getConfig("winUploadWord")+"/04_供应链ABS项目_应收账款转让通知书(适用于供应商通知债务人)20180426.docx";
    public static final String template5=Global.getConfig("winUploadWord")+"/05_供应链ABS项目_应收账款转让通知书(适用于保理商通知债务人)20180426.docx";
    public static final String template6=Global.getConfig("winUploadWord")+"/06_应收账款转让登记协议.docx";
    /*
     * linux
     */
//  public static final String template1=Global.getConfig("linuxUploadWord")+"/01_供应链ABS项目_付款确认书(共同债务人)20180426.docx";
//  public static final String template2=Global.getConfig("linuxUploadWord")+"/02_应收账款转让合同(适用于公开型无追索应收账款转让业务)20180426.docx";
//  public static final String template3=Global.getConfig("linuxUploadWord")+"/03供应链ABS项目_买方确认函(债务人确认债务)20180426.doc";
//  public static final String template4=Global.getConfig("linuxUploadWord")+"/04_供应链ABS项目_应收账款转让通知书(适用于供应商通知债务人)20180426.docx";
//  public static final String template5=Global.getConfig("linuxUploadWord")+"/05_供应链ABS项目_应收账款转让通知书(适用于保理商通知债务人)20180426.docx";
//  public static final String template6=Global.getConfig("linuxUploadWord")+"/06_应收账款转让登记协议.docx";
    
    /**
     * 生成word文档
     * @author lzy
     * @date Jul 24, 2019  9:48:18 AM
     * @packageName com.bd.modules.pmp.util
     * @jdk_version 1.8.121
     * @param docName 文件名:xx合同书
     * @param templatePath templatePath 模板路径  例如:"d:/test.docx"
     * @param map 写入的模板信息数据
     * @param response 下载请求
     *  * 案例:
     * XWPFTemplate template = XWPFTemplate.compile("d:/test.docx").render(new HashMap<String, Object>(){{
                put("title", "我爱中国");
       }});
     */
    public static void exmDoc(String docName,String templatePath,Map<String, Object> map,HttpServletResponse response) {
        //生成文件名    例如:d:/out_template.docx 
        String fileName = Global.getConfig("winUploadWord")+"/"+docName+".docx"; //win下面的路径
        //String fileName = Global.getConfig("linuxUploadDownLoad")+"/"+docName+DateUtils.getDate("yyyyMMdd")+".docx"; //linux
        //取出word模板
        XWPFTemplate template = XWPFTemplate.compile(templatePath).render(map);
        try {
            //输出生成好的文件
            FileOutputStream out = new FileOutputStream(fileName);
            template.write(out);
            logger.debug("生成成功");
            //如果需要下载执行下一条代码
            logger.debug("进入下载start");
//          DocUtil.download(fileName, response);
            logger.debug("进入下载end");
            System.out.println();
            out.flush();
            out.close();
            template.close();
            logger.debug("关闭导出流成功");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            logger.error("出现异常:"+e);
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            logger.error("出现异常:"+e);
            e.printStackTrace();
        }
    }
    /**
     * 测试
     * @author lzy
     * @date Jul 24, 2019  9:40:48 AM
     * @packageName com.bd.modules.pmp.util
     * @jdk_version 1.8.121
     * @param args
     */
     public static void main(String[] args) {
            Map<String, Object> datas = new HashMap<String, Object>();
            datas.put("temp1","测试word模板1");
            HttpServletResponse response=null;
            exmDoc("测试生成word", template1, datas, response);
    }
     
 
     
 
}

本文标签:

版权声明:若无特殊注明,本文皆为《遥大叔》原创,转载请保留文章出处。

本文链接:java一键生成word操作,比poi简单。poi-tl - https://yygzs.org/?post=18

发表评论

电子邮件地址不会被公开。 必填项已用*标注

未显示?请点击刷新

Sitemap