在做j2ee系统的时候,经常会遇到按照模板生成word文件,那么,我下面将详细的方法记录下来,以便于大家查看
- 首先,我们要想将包导入我们的项目
freemarker.jar
- 对于一个模板我们需要两个很重要的文件(.doc文件与.ftl文件)
.doc文件就是我们模板的一个样例文件
.ftl文件生成方法是这样:将.doc文件里面想要被自动填入的位置写上相对应的字段名称(也就是key)然后将这个.doc文件另存为.xml文件,之后对这个字段进行处理,处理方法是用${}把这个字段名包裹起来比如说${xm!},这里就会把你传过来的key为xm的值放到里面(后面的!是判断是后传过来的为空,如果是空就放空字符串)例子如下
<w:p w:rsidR="00CA42DD" w:rsidRPr="008E29E5" w:rsidRDefault="00500E61" w:rsidP="00DB4832"> <w:pPr> <w:spacing w:line="360" w:lineRule="auto" /> <w:rPr> <w:rFonts w:ascii="仿宋_GB2312" w:eastAsia="仿宋_GB2312" w:hAnsi="宋体" /> <w:sz w:val="28" /> </w:rPr> </w:pPr> <w:r w:rsidRPr="00500E61"> <w:rPr> <w:rFonts w:ascii="仿宋_GB2312" w:eastAsia="仿宋_GB2312" w:hAnsi="宋体" /> <w:color w:val="FF0000" /> <w:sz w:val="28" /> </w:rPr> <w:t>${organization!}</w:t> </w:r> <w:r w:rsidR="00CA42DD" w:rsidRPr="008E29E5"> <w:rPr> <w:rFonts w:ascii="仿宋_GB2312" w:eastAsia="仿宋_GB2312" w:hAnsi="宋体" w:hint="eastAsia" /> <w:sz w:val="28" /> </w:rPr> <w:t>:</w:t> </w:r> </w:p>
<!--列表数据--> <#list ryList as ry> ${ry.xm!} </#list>
最后将这个.xml文件的后缀名改成.ftl即可
- 然后我们调用freemarker的方法实现填充模板信息,下面我将我我们的实现方法给大家展示出来,大家根据自己的需求可进行相对应的更改
public void outputFile(ServletContext servletContext ,String templateFileDirectoryPath,String templateFileName,String outputFilePath,HashMap<String, Object> templateDatas){ Configuration configuration = new Configuration(); configuration.setDefaultEncoding("UTF-8"); configuration.setServletContextForTemplateLoading(servletContext, templateFileDirectoryPath); try { Template template = configuration.getTemplate(templateFileName); template.setEncoding("UTF-8"); File outFlie = new File(outputFilePath); try { FileOutputStream fileOutputStream = new FileOutputStream(outFlie); OutputStreamWriter outputStream; try { outputStream = new OutputStreamWriter(fileOutputStream, "UTF-8"); Writer out = new BufferedWriter(outputStream); try { template.process(templateDatas, out); } catch (TemplateException e) { e.getMessage(); log.error("模板数据绑定异常!"); } out.flush(); } catch (UnsupportedEncodingException e) { log.error("未找到指定编码格式"); } } catch (FileNotFoundException e) { e.getMessage(); log.error("未找到输出文件:"+outputFilePath); } } catch (IOException e) { e.getMessage(); log.error("模板文件:"+templateFileDirectoryPath+templateFileName+"读取异常!"); } }
下面我对这五个参数获取方式进行一下解释:
1.servletContext:request.getSession().getServletContext();
2.templateFileDirectoryPath:存放模板的路径(一般情况下,.doc与.ftl存在同一个路径里面,这样比较方便找到,如:[res/files/foreignaffairs/goabroad/template/freemarker/])
3.templateFileName:模板文件名称(即.ftl的文件名称)
4.outputFilePath:新生成文件的路径
5.templateDatas:数据:通常情况下是Map<String,Object>类型
这样就大功告成了,炒鸡简单,附件中会给大家一个xml格式化软件,用起来就方便极了!! :)
相关推荐
### Java生成Word文档技术解析与实现 在现代企业级应用中,动态生成Word文档的需求日益增多,尤其是在报表生成、文档自动生成等领域。Java作为一种广泛使用的编程语言,提供了多种方法来根据Word模板生成Word文档,...
Java 添加 Word 目录的 2 种方法示例代码详解 在本文中,我们将探讨 Java 中添加 Word 目录的两种方法。目录是一种能够快速、有效地帮助读者了解文档或书籍主要内容的方式。在 Word 中,插入目录首先需要设置相应...
这个库的设计理念是基于模板的报告生成,即你可以创建一个包含占位符的Word模板文件,然后用Java代码替换这些占位符为实际数据。这极大地提高了生成复杂文档的效率,同时也让文档的格式保持一致。 以下是使用POI-TL...
在IT行业中,有时我们需要集成不同的技术来实现特定功能,比如在这个场景中,"People Code调用Java生成Word简历文档"涉及到的是Oracle PeopleSoft应用中的编程技术和Microsoft Word文档生成。下面是详细的知识点解释...
【Java POI 设置 Word 图片为上下型环绕及位置实现详解】 在使用 Java POI 库生成 Word 文档时,有时我们需要对插入的图片进行格式调整,比如设置为上下型环绕,使其在文本中占据独立空间,同时可以调整图片的位置...
### Java生成Word文档:利用Freemarker框架 #### 一、引言 在现代企业级应用开发中,经常需要将数据库中的数据导出为Word文档,以满足业务报告、统计报表等多种需求。Java作为一种广泛使用的编程语言,在处理这类...
【Word模板替换方案详解】 在IT领域,尤其是在文档自动化处理中,Word模板替换是一个非常实用的功能,它能够高效地批量生成个性化文档。Apache POI是一个流行的Java库,用于读写Microsoft Office格式的文件,而poi-...
5. **生成Word文档**:运行Java程序,Freemarker引擎将数据解析并填充到模板中,最终输出符合原始设计要求的Word文档。 ### 3. 实际案例分析 假设我们需要生成一份报告,该报告包含多个章节,每个章节又有各自的...
### Eclipse/MyEclipse Java代码模板使用详解 #### 引言 在进行Java开发时,我们经常会遇到一些频繁使用的代码片段。为了提高编码效率、减少重复劳动,Eclipse 和 MyEclipse 提供了代码模板的功能,允许用户自定义...
在Java代码中,你需要加载XML模板,创建数据模型(通常是一个Map或自定义对象集合),然后使用FreeMarker的`Template`类将数据模型合并到模板中,最终生成Word文档。这个过程通常涉及以下步骤: - 加载XML模板文件...
《使用Java生成带数据图表的Word文档——easypoi-jfree详解》 在现代办公环境中,生成带有数据图表的报告文档是一项常见的任务。在Java领域,easypoi-jfree是一个强大的工具,它允许开发者方便地在Word文档中插入...
无论是直接编程生成还是利用模板填充,iText都能满足不同场景下的需求,成为Java开发者实现报表打印的理想选择。通过本文的探讨,相信读者对如何在Web应用中实现报表打印有了更深入的理解和实践指南。
### Java API 使用详解 #### 一、Java 面向对象基本概念 Java是一种完全的面向对象编程语言,除了原始数据类型(如int、double等),几乎所有事物都被视为对象。对象是类的实例,拥有状态(属性)和行为(方法)。...
swagger2Word 提供了多种方式生成 word 文档,可以通过 swagger json 的资源地址,例如: ;可以通过上传 json 文件;甚至可以直接输入 json 字符串。 生成的 WORD 示例: --------------版本迭代历程,感谢各位小...
【Java导出格式文档】与【PageOffice实现动态生成Word】技术详解 在Java开发中,经常需要将数据导出成各种格式的文档,以便进行更直观的数据分析和报告展示。PageOffice是一款强大的Web办公组件,它允许开发者通过...