最近用到java生成word,一想到要用poi各种逻辑各种写超级麻烦,去百度到某个插件poi-ti(操作word)
着实超级简单,有需要的朋友看过来了
上代码
[Java] 纯文本查看 复制代码
package com.jeeplus.modules.fact.util;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.NumbericRenderData;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.data.RenderData;
import com.deepoove.poi.data.TableRenderData;
import com.deepoove.poi.data.TextRenderData;
import cn.yygzs.common.config.Global;
import cn.yygzs.common.utils.DateUtils;
/**
* doc操作工具
* poi-ti
* [url=home.php?mod=space&uid=686208]@AuThor[/url] 遥大叔
* @projectName yygzs
* @packageName cn.yygzs.modules.fact.util
* [url=home.php?mod=space&uid=120849]@jdk[/url] 1.8.0_121
* [url=home.php?mod=space&uid=686237]@date[/url] 2018年5月26日下午10:34:09
* @version V1.0
* @describe
*/
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("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.docx";
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";
/*
* 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文档
* @param docName 文件名:xx合同书
* @param templatePath 模板路径 例如:"d:/test.docx"
* @param map 写入的模板信息数据
* 案例:
* XWPFTemplate template = XWPFTemplate.compile("d:/test.docx").render(new HashMap<String, Object>(){{
put("title", "我爱遥遥科技");
}});
* @param response 下载请求
*/
public static void exmDoc(String docName,String templatePath,Map<String, Object> map,HttpServletResponse response) {
//生成文件名 例如:d:/out_template.docx
String fileName = Global.getConfig("linuxUploadDownLoad")+"/"+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();
}
}
public static void main(String[] args) {
Map<String, Object> datas = new HashMap<String, Object>();
map.put("temp1","测试word模板1");
HttpServletResponse response=null;
exmDoc("测试生成word", template1, map, response);
}
}
所有的语法结构都是以 {{ 开始,以 }} 结束。
{{template}} 普通文本
{{@template}} 图片
{{#template}} 表格
{{*template}} 列表
{{+template}} 文档 |