使用模板生成word文档

使用poi-tl根据模板生成word文档,在porm.xml中添加poi-tl依赖,直接上代码

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.render.RenderAPI;
import com.thinkgem.jeesite.common.config.Global;

public class WordModule {

    /*public static void main(String[] args) throws Exception {
        //构造数据
        XWPFTemplate doc = XWPFTemplate
                .create("D:\\test\\2.docx");
        List<RenderData> headers = new ArrayList<RenderData>();
        headers.add(new TextRenderData("d0d0d0","number"));
        headers.add(new TextRenderData("d0d0d0", "content"));

        List<Object> data = new ArrayList<Object>();
        data.add("1;add new grammer");
        data.add("2;support insert table");
        data.add("3;support more style");

        TableRenderData tables = new TableRenderData(headers, data,"",2017);
        Map<String, Object> datas = new HashMap<String, Object>();
        datas.put("logo", new PictureRenderData(600,480,"D:\\test\\1.jpg"));
        datas.put("title", new TextRenderData("9d55b8", "Deeply in love with the things you love,\\n just deepoove."));
        datas.put("changeLog",tables);
        datas.put("website", "http://www.baidu.com");
        //读取模板,进行渲染
        RenderAPI.render(doc, datas);
        System.out.println(tables.getWidth());

        //输出渲染后的文件
        File file = new File("D:\\test\\out.docx");
        if(file.exists()){
            file.delete();
        }
        FileOutputStream out = new FileOutputStream("D:\\test\\out.docx");
        doc.write(out);
        out.flush();
        out.close();
}*/
    /**
     * data为添加文字或者图片对象
     * 文字:
     * */
    public static void Module2Word(Map<String ,Object> datas,String moduleFileName,String docSavedName) throws IOException{
        XWPFTemplate doc = XWPFTemplate
                .create(Global.getConfig("bizz.modulepath")+moduleFileName);
        RenderAPI.render(doc, datas);
        File file = new File(Global.getConfig("bizz.docpath")+docSavedName);
        if(file.exists()){
            file.delete();
        }
        FileOutputStream out = new FileOutputStream("D:\\test\\out.docx");
        doc.write(out);
        out.flush();
        out.close();
    }

}
时间: 2024-10-11 07:12:21

使用模板生成word文档的相关文章

java通过word模板生成word文档

介绍 上次公司项目需要一个生成word文档的功能,有固定的模板根据业务填充数据即可,由于从来没做过,项目也比较着急于是去网上找有没有合适的工具类,找了好几种,看到其中有freeMark模板生成比较靠谱于是采用这个,正常生成成功了还挺高兴的于是修改优化部署测试,出问题了,由于我一直使用wps可以正常打开,但是同事使用office打不开,于是各种查找原因都没好,于是只能转变思路又试了两种还是不好用,直到发现这款模板生成 poi-tl 真的做的很不错,而且是国人写的,关于学习这个东西还是看官方文档的好

velocity模板技术生成word文档

本文介绍采用velocity技术在Java中生成word文档的方法. 1.新建一个word文档,编辑内容如下: 2.将上述word文档另存为htm格式的文件 3.新建一个Java Project项目velocityTest,加入Velocity所依赖的Jar包velocity-dep-1.5-beta2.jar. 4.在src目录下新建一个velocity.vm文件,将第二步生成的velocity.htm用文本编辑器打开,复制内容到velocity.vm中.内容如下: <html xmlns:v

使用freemarker模板引擎生成word文档的开发步骤

1.准备模板文档,如果word文档中有表格,只保留表头和第一行数据:2.定义变量,将word文档中的变量用${var_name}替换:3.生成xml文件,将替换变量符后的word文档另存为xml文件:4.格式化xml文件,使用工具(XmlFormat.exe),自动生成格式化后的xml文件:5.美化xml文件,${}中的内容仅保留变量名:6.表格,将表格中的行数据用相应的变量替换,在第一行数据的收尾加标签:<#list tbl1 as tbl1></#list> ,注意:表格可嵌套

用Aspose.Words for .NET动态生成word文档中的数据表格

1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的.看到这里,您也许马上想到用模板导出!而且.NET中自带有这个组件:Microsoft.Office.Interop.Word,暂且可以满足需求吧.但这个组件也是有局限性的,例如客户端必须装 office组件,而且编码复杂度高.最麻烦的需求是后面那个-

C#简单实现动态数据生成Word文档并保存

今天正好有人问我,怎么生成一个报表式的Word文档. 就是文字的样式和位置相对固定不变,只是里面的内容从数据中读取. 我觉得类似这种的一般用第三方报表来做比较简便.但既然要求了Word,只好硬着头皮来. 网上的方法大多数都是从一个GridView或表中获得数据后向Word中添加一个表格. (图1) 我们使用Word模板来实现,方法如下: 1.首先需要向工程中的“引用”加入Word类库的引用(图2).我是Office 2003.其他版本可能略有不同.在COM里面 (图2) 2.用Word设计一个模

使用Spire.Doc组件利用模板导出Word文档

以前一直是用Office的组件实现Word文档导出,但是让客户在服务器安装Office,涉及到版权:而且Office安装,包括权限配置也是比较麻烦. 现在流行使用第三方组件来实现对Office的操作,有NPOI,Spire等第三方组件.开始考虑的是NPOI,毕竟它在操作Excel方面还是很强大的:但是不知道是它本身没有,还是我没找到,无法实现利用Word模板的标签插入内容,纯靠代码去生成Word文档,排版是个大问题.最终找到了Spire.Doc组件,轻松实现! Spire的官网地址:https:

POI加dom4j将数据库的数据按一定格式生成word文档

一:需求:将从数据库查处来的数据,生成word文档,并有固定的格式.(dom4j的jar包+poi的jar包) 二:解决:(1)先建立固定格式的word文档(2007版本以上),另存成为xml文件,作为模板.(修改xml节点,添加属性,用于标示要填固定数据的节点) (2)dom4j解析模板xml文件,将文件读入内存,并把数据库数据写入内存的xml模型中 (3)利用poi将内存中的含有数据库内容的xml模型转换成word内存模型,利用输出流输出word文档 三:DEMO [1]模板的word文档

freemarker+Jfreechart生成Word文档(含图片)

这几天再弄一个报表,要统计一些信息最终的部分展示结果如下: 基本工具freemarker,jfreechart 工程的部分结构如下 与生成Word有关的类主要有FreemarkerConfiguration和WordGenerator代码如下: import com.bqs.ares.common.utils.CommonUtils; import freemarker.template.Configuration; import java.io.File; import org.slf4j.L

Java Web项目中使用Freemarker生成Word文档

Web项目中生成Word文档的操作屡见不鲜,基于Java的解决方案也是很多的,包括使用Jacob.Apache POI.Java2Word.iText等各种方式,其实在从Office 2003开始,就可以将Office文档转换成XML文件,这样只要将需要填入的内容放上${}占位符,就可以使用像Freemarker这样的模板引擎将出现占位符的地方替换成真实数据,这种方式较之其他的方案要更为简单. 下面举一个简单的例子,比如在Web页面中填写个人简历,然后点击保存下载到本地,效果图如下所示. 打开下