最近研究了一下用freemarker导出word的例子,记录一下方便大家学习,利用模板的好处是可以控制word的样式。
1.将处理好的的word模板,另存为xml格式的文档。并在其中添加参数: ${export}
2.2.将xml文档修改完成后,保存并修改后缀名为“*.ftl”;
3.编写java类实现赋值和处理流(抱歉代码没有写注释)
public class TempltUtil {
public static final String WORD_TEMPLATE = "/test.ftl";
public static final String TEMPLATE_PATH = "/vm";
public static final String PREVIEW_DOC = "/pr.doc";
public static Template configTemplate(HttpServletRequest request, String temp) throws IOException {
Configuration config = new Configuration();
ServletContext sc = request.getSession().getServletContext();
config.setDirectoryForTemplateLoading(new File(sc.getRealPath(TEMPLATE_PATH)));
config.setObjectWrapper(new DefaultObjectWrapper());
Template template = config.getTemplate(temp, "UTF-8");
return template;
}
public static void toPreview(HttpServletRequest request, String temp, Map<?, ?> root){
try {
String previewPath = request.getSession().getServletContext().getRealPath("")+PREVIEW_DOC;
Template template = configTemplate(request, temp);
FileOutputStream fos = new FileOutputStream(previewPath);
Writer out = new OutputStreamWriter(fos, "UTF-8");
template.process(root, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.填充数据
private boolean getData(HttpServletResponse response,HttpServletRequest request,Map dataMap) {
dataMap.put("title_name", "用户信息");
dataMap.put("user_name", "张三");
dataMap.put("org_name", "xx公司");
dataMap.put("dept_name", "事业部");
TempltUtil.toPreview(request, TempltUtil.WORD_TEMPLATE, dataMap);
return true;
}
5.前台调用的导出方法
@RequestMapping(value="exportWord")
public void excWord(HttpServletResponse response,HttpServletRequest request) throws IOException{
try {
Map dataMap = new HashMap();
if (getData(response,request,dataMap)) {
File previewFile = new File(request.getSession().getServletContext().getRealPath(TempltUtil.PREVIEW_DOC));
InputStream is = new FileInputStream(previewFile);
response.reset();
response.setContentType("application/vnd.ms-word;charset=UTF-8");
response.addHeader("Content-Disposition","attachment; filename=\"" + TempltUtil.PREVIEW_DOC + "\"");
byte[] b = new byte[1024];
int len;
while ((len=is.read(b)) >0) {
response.getOutputStream().write(b,0,len);
}
is.close();
response.getOutputStream().flush();
response.getOutputStream().close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
分享到:
相关推荐
在给定的场景中,"asp.net 利用word模板导出word文件"涉及到的关键技术是OpenXML。 OpenXML是一种标准的文件格式,由Microsoft开发,用于存储Office文档,包括Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)...
在C#编程环境中,利用Aspose.Words库可以方便地实现根据预设模板导出Word文档的功能。Aspose.Words是一款强大的文档处理组件,它允许开发者在不依赖Microsoft Office的情况下,进行Word文档的创建、编辑、格式化以及...
根据word模板导出word、PDF文档,功能全,内容多,介绍详细。主要实现根据word模板及模板中的坐标($[标明.字段名])的形式进行查询出所对应的数据,然后分别生成PDF 和 WORD功能。 本功能是将各个模板的数据均查询...
在本场景中,我们将探讨如何使用Easypoi库来实现导出Word文档的功能。Easypoi是一个强大的Java办公组件,能够方便地处理Excel和Word文档,尤其适合于数据批量导入导出和模板生成。 首先,我们需要在项目的`pom.xml`...
标题"pdm导出word模板(附使用说明)"表明这是一个关于如何从PDM系统中导出Word模板的教程,并且包含了一份使用说明,帮助用户理解和操作这个过程。下面将详细解释PDM系统中导出Word模板的相关知识点: 1. **PDM...
Apifox导出Word版接口文档模板知识点 Apifox是一款功能强大且灵活的API设计和文档管理工具,支持多种格式的导出,包括Word版接口文档。在这个模板中,我们可以看到一个基本的Word版接口文档结构,包括标题、描述、...
在这个例子中,我们将探讨如何使用POI库来处理Word文档,特别是利用模板文件循环输出表格行并导出新的Word文档。这个过程在数据分析、报告生成或自动化文档制作等场景中非常有用。 首先,我们需要理解Word文档的...
就可以通过现有信息导出Word文档。基于Java语言来导出Word文档的方式也有很多种,如Jacob,Apache POI,Freemarker,PageOffice,java2word 等等。。。。 在这里将通过Freemarker这个模板引擎来实现导出 Word,项目...
总的来说,PHP导出Word文档并保持样式,虽然涉及一些复杂性,但通过使用如PHPOffice/PHPWord这样的库,可以简化这个过程。开发者需要对HTML、CSS、PHP以及可能的第三方库有深入的理解,才能有效地实现这一功能。在...
网络上的根据模板填充Word我都看过一些, 它们的功能在数据换行的时候用的是run对象的.addCarriageReturn()方法,或者是直接用\n实现换行。这些都不符合我的需求, 因为我要的是分段,而不是换行。换行的word导致另一...
"利用模板导出word"这一主题涉及到的是自动化生成Word文档的技术,主要使用了Freemarker这一强大的模板语言。Freemarker是一个开源的Java库,主要用于生成动态HTML、XML、Word文档等,尤其适合于Web应用程序中的视图...
"模板导出word文件"这个主题涉及到两种主要的技术方法:将Word模板转换为HTML文件,以及使用第三方组件Aspose.Words来操作Word模板。 首先,将Word模板转换为HTML文件是一种灵活的方法,尤其适用于网页或者在线文档...
本文将详细解析如何通过C#代码利用Word模板(具体为word.dot)来生成Word文档,并采用书签替换的方式填充文档中的特定字段。 ### 一、原理介绍 #### 1. Word模板(word.dot) Word模板是一种预设格式和样式的文档...
总之,.NET框架结合Microsoft Office Interop库,提供了强大的能力来处理Word文档的生成,使得开发者能够方便地按模板导出Word,提高了工作效率。然而,需要注意的是,Interop库依赖于本地安装的Office,因此在无...
在C# MVC框架中,根据Word模板导出Word文档是一项常见的需求,特别是在企业级应用中,用于批量生成报告、合同等。本功能的实现主要涉及三个核心部分:模板处理、数据填充以及文件导出。以下将详细介绍这些部分,并...
在C#中,模板导出Word文档是一项常见的任务,它允许开发者根据预先定义的模板生成自定义的Word报告或者文档。这个过程通常涉及到文本替换、数据绑定以及格式化等操作。下面将详细探讨这一领域的知识。 1. **模板...
通过调整.rtp文件,你可以控制最终Word文档的生成方式,比如是否包含实体关系图、表的详细信息、索引等。 使用PowerDesigner导出的Word模板,可以极大地提高工作效率,减少手动排版的工作量。对于团队协作和项目...
在本教程中,我们将探讨如何利用Freemarker模板来导出Word文档,并实现循环插入图片和表格的功能。这对于需要批量生成定制化报告或者文档的应用场景非常有用。 首先,我们需要了解Freemarker的基本语法。在...
使用C# NET Core技术,通过预设的html模板,导出Word文件,Html文件,Pdf,使用说明参考https://blog.csdn.net/qq_27337291/article/details/120676751?spm=1001.2014.3001.5501