1.首先将word里面需要改的数据写成这种形式
2.另存为xml格式
3.方法如下
/**
* 导出word
* @param ddid
* @return
* @throws Exception
*/
@RequestMapping("/cbTongjiDuty/do_export.htm")
public void doexport(HttpServletRequest request, HttpServletResponse response, ModelMap map, Long id) throws Exception {
FreemarkerExecutor exe = new FreemarkerExecutor();
exe.setClassForTemplateLoading("/config/template"); //文件路径
exe.setTemplate("秦皇岛海事局VTS值班业务工作统计表.xml"); //文件名称
CbTongjiDuty cbTongjiDuty=cbTongjiBaobiaoManager.doGet(CbTongjiDuty.class, id);
String fname = "VTS值班业务工作统计表"+".doc"; //导出后的文件名称
map.put("duty", cbTongjiDuty); //传值
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename="
+ new String(fname.getBytes("gb2312"), "ISO8859-1"));
Writer out = new BufferedWriter(new OutputStreamWriter(response.getOutputStream(), "UTF-8")); //Writer继承java.io包
exe.process(map, out);
}
4. FreemarkerExecutor 类如下
package com.util;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreemarkerExecutor {
private Configuration config;
private Template template;
public FreemarkerExecutor(){
config = new Configuration();
config.setDefaultEncoding("utf-8");
config.setClassicCompatible(true);
}
/**
* 设置模板存放目录
* @param path
*/
public void setClassForTemplateLoading(String path) {
config.setClassForTemplateLoading(this.getClass(), path);
}
/**
* 设置模板文件
* @param fileName
* @throws IOException
*/
public void setTemplate(String fileName) throws IOException {
template = config.getTemplate(fileName,"UTF-8");
template.setOutputEncoding("UTF-8");
}
/**
* 合并输出
* @param data
* @param out
* @throws TemplateException
* @throws IOException
*/
public void process(Map<String, Object> data, Writer out) throws TemplateException, IOException {
if (template == null) {
throw new RuntimeException("please set the template");
}
template.process(data, out);
out.flush();
out.close();
}
}
相关推荐
Java利用FreeMarker导出Word是一项常见的技术需求,尤其在企业级应用中,常常需要将动态数据生成为Word文档,例如报告、合同等。FreeMarker是一个模板引擎,它能将Java对象的数据绑定到模板上,生成HTML、XML或者如...
5. **生成Word文档** 使用Apache POI创建一个新的Word文档,并在其中添加FreeMarker模板。在模型中设置图片对象,然后使用FreeMarker的`Template`类将模板和模型合并,生成最终的Word文档内容。 6. **嵌入图片** ...
在本示例中,Freemarker被用于生成Word文档,实现数据与模板的结合,使得动态生成Word文档变得更加简单。 首先,让我们深入了解Freemarker的工作原理。Freemarker模板由纯文本组成,其中包含特定的控制结构,如`...
总结,FreeMarker导出Word表格的核心在于理解XML结构,创建FreeMarker模板,以及正确地绑定数据。这个方法的好处是可以将格式设计与数据分离,使得数据的更新和格式的维护变得更加灵活和高效。在处理大量数据的导出...
SpringBoot_Freemarker生成Word_多个表格+两层嵌套循环; 步骤说明: 1.用Microsoft Office Word打开word原件;将文档中需要动态生成的内容,替换为属性名 ${name} 2.另存为,选择保存类型Word 2003 XML 文档(*....
在Java中利用FreeMarker导出Word文档,可以极大地提高代码的可维护性和灵活性。 首先,我们需要了解FreeMarker的基础知识。FreeMarker是一个基于模板的视图技术,它将数据模型和视图模板分离,使得开发者可以专注于...
以下是关于如何使用FreeMarker生成Word文件的一些关键知识点: 1. **FreeMarker模板语言**:FreeMarker使用一种简单的模板语言,允许开发者通过定义变量和控制结构(如循环和条件语句)来动态地插入数据。在模板中...
以上就是使用Java FreeMarker导出Word文档的基本流程。实际应用中,你可能需要处理更复杂的模板,包括表格、列表、图片等,以及更丰富的数据模型。FreeMarker的强大之处在于它的灵活性,可以根据具体需求定制模板,...
在Java开发中,利用FreeMarker生成Word文件可以极大地提高效率,尤其在需要批量生成或者自定义模板的情况下。以下是对这个主题的详细阐述: ### FreeMarker简介 FreeMarker是一个开源的、基于模板的Java库,它将...
### 使用Freemarker生成Word文档的关键技术点解析 #### 一、引言 在实际工作中,经常需要批量生成带有特定格式或数据填充的Word文档,如报表、合同、通知等。传统的手工创建方法效率低下且易出错。利用Java语言...
我代码里面的ftl文件
java web+freemarker 导出word 单个字符串${name}, 列表<#list tail as item> ${item.id} ,附有源码,导出word的word模板 以及另存为的xml文件和 ftl模板,只需要改下里面的查询数据库即可
本示例主要探讨了使用FreeMarker导出Word的两种方法:通过生成XML模板和通过HTML模板直接导出。 1. **生成XML方式模板并附带图片导出** 在这种方法中,首先我们需要创建一个XML模板,该模板定义了Word文档的结构和...
Java 利用 Freemarker 生成 Word.pdf,这个标题告诉我们,我们将使用 Java 语言和 Freemarker 库来生成 Word 文档,并将其导出为 PDF 文件。 描述解释 在描述中,我们可以看到,整个过程可以分为三步:首先,我们...
本项目“生成WORD freemarker导出WORD”正是这样一个解决方案,它允许开发者使用FreeMarker模板来创建和导出Microsoft Word文件。 首先,我们要理解FreeMarker的工作原理。FreeMarker是一个基于Java的模板语言,它...
Java结合Freemarker生成Word文档是一项常见的技术应用,主要用于动态生成具有复杂格式的报告或文档。在企业级应用中,这种技术尤其有用,因为它允许开发者根据数据库或其他数据源中的信息自动生成Word文档,无需手动...
`Java用freemarker导出word文档`这个主题涉及到的技术点主要包括Java的Freemarker模板引擎和处理Word文档的相关库。Freemarker是一个强大的、基于模板的生成器,广泛用于Web应用中的动态HTML生成。在这里,它被用来...
以上就是使用FreeMarker导出Word文档的关键步骤和涉及的技术点。在实际项目中,还需要考虑性能优化、错误处理、模板的复用和管理等方面的问题。通过熟练掌握这些知识点,你可以轻松地构建一个高效且灵活的Word文档...
在使用FreeMarker生成Word之前,需要准备一个数据模型,包含要插入到文档中的文本和图片。图片可以作为`byte[]`数组存储,例如: ```java Map, Object> dataModel = new HashMap(); dataModel.put("title", ...