freemaker导出word,带图片,list标签循环

我也是偶然遇到这样的任务,查了一些资料,可以导出word的技术很多,今天就介绍一下freemaker,闲话少说,进入正题。
1、首先你需要先做一个模板。
Java中,freemaker导出word,带图片,list循环添加
这样一个按需求制作的模板就做好了!
2、把模板转换成ftl文件。
当模板做好后,另存为xml文件,然后把xml文件后缀名换成ftl,就可以了。
Java中,freemaker导出word,带图片,list循环添加

Java中,freemaker导出word,带图片,list循环添加
3、把ftl模板放到项目里。并书写代码。
Java中,freemaker导出word,带图片,list循环添加

把模板放进去后,你需要打开把里面的数据给替换掉。比如说:模板里开始时间:2016年09月09日,你只需要把日期     2016年09月09日  替换成 ${startTime}  这样的字段就可以了,字段是自己起的名字,如图所示: Java中,freemaker导出word,带图片,list循环添加
ftl文件模板里,很多标签,千万不好弄错了,格式化一下,比较好找一点。
4、完成之后,就只有后台代码了

Java中,freemaker导出word,带图片,list循环添加

Java中,freemaker导出word,带图片,list循环添加

Java中,freemaker导出word,带图片,list循环添加

Java中,freemaker导出word,带图片,list循环添加
其中的User类就不粘贴了,就是需要的那些数据,封装一下就可以了
5、想要循环添加信息的可以用list标签。
比如说:模板里有    (姓名:张三    年龄:20   )这一信息,需要重复添加,或许有N个,那么你可以在ftl文件里找到这一信息所在的      < w:tr>      在外面一层加上list 标签 就可以了,如图:
Java中,freemaker导出word,带图片,list循环添加

这样被框起来的部分,就会循环出来,有多少数据就出来多少条
6、插入图片。
插入图片也和之前一样,首先在模板里放上一个图片,然后在ftl文件里,找到图片所在的位置,注意:图片在ftl文件里会变成一大段的乱码,这是图片解析后的编码,你把这段代码删掉,换成你代替的图片字段${img} 样子就可以了,后台代码里要有解析图片的代码,我前面代码里有这部分,大家注意看,多张照片也是一样的原理,只是重复一下操作而已,但是注意一点,模板要有流程,不要乱改,乱换位置,或者插入的位置顺序什么的,都有可能对后面生成的ftl文件有影响,所以最好一步步来,ftl文件的字段也千万不要乱删。
好了这就是今天的全部内容了,感谢大家观看,希望对大家有帮助!

(这是我第一次,第一篇博文。感觉好激动啊!!!! Java中,freemaker导出word,带图片,list循环添加
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Freemarker可以通过使用Apache POI库来导出图片Word文档。首先,需要在模板定义一个图片占位符,然后在Java代码图片插入到占位符。具体步骤如下: 1. 在Word模板定义一个图片占位符,例如:${image}。 2. 在Java代码,使用Apache POI库加载模板文件,并获取到模板图片占位符。 3. 使用POI的XWPFRun类创建一个新的段落,并将图片插入到段落。 4. 将段落插入到模板图片占位符位置。 5. 保存生成的Word文档。 示例代码如下: ``` // 加载模板文件 FileInputStream fis = new FileInputStream("template.docx"); XWPFDocument doc = new XWPFDocument(fis); // 获取图片占位符 XWPFParagraph imagePlaceholder = doc.getParagraphs().stream() .filter(p -> p.getText().contains("${image}")) .findFirst().orElse(null); // 创建新的段落 XWPFParagraph newParagraph = doc.createParagraph(); // 插入图片到段落 XWPFRun newRun = newParagraph.createRun(); newRun.addPicture(new FileInputStream("image.jpg"), XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(200), Units.toEMU(200)); // 将段落插入到图片占位符位置 int index = doc.getPosOfParagraph(imagePlaceholder); doc.removeBodyElement(index); doc.setParagraph(newParagraph, index); // 保存生成的Word文档 FileOutputStream fos = new FileOutputStream("output.docx"); doc.write(fos); fos.close(); ``` 注意:在使用POI插入图片时,需要指定图片的类型和大小。示例代码使用的图片类型为JPEG,大小为200x200像素。 ### 回答2: Freemarker是一种模板引擎,可以将数据模板结合生成静态文本,并且常见在Spring框架使用。而导出Word图片,一般需要通过POI或者Apache POI来实现,具体步骤如下: 1.首先需要引入POI和Freemarker的jar包。 2.在模板添加图片的占位符,例如${logo}。 3.通过Java代码将图片读入到输出流,然后在模板替换${logo}的内容为图片字节数组的Base64编码。 4.通过Freemarker将数据模板结合,生成Word文件。 5.最后需要使用POI将Word文件的后缀名由.ftl改为.doc或.docx,并且编写下载逻辑进行下载。 需要注意的是,在将图片插入Word文档时,可能出现图片比例失调或者无法插入图片的情况,这时需要调整插入图片的方式,可以将图片插入一个模板,然后将模板插入到Word文档,以保证插入的图片比例正确。 ### 回答3: FreeMarker是一种Java模板引擎,它允许使用模板生成文本输出,其包括MS Word文档。在导出word图片时,需要使用FreeMarker的JDBC模式来检索数据图片,然后将它们插入Word文档。以下是导出Word图片的步骤: 1.准备Word模板:首先需要创建一个Word模板,包含需要添加文本的区域和占位符来插入图片。这可以通过在Word创建一个新文档,添加文本和占位符,然后保存为docx文件来完成。 2.准备模板数据:使用Java代码从数据检索需要导出数据图片,并将它们作为数据模型引入FreeMarker模板引擎。 3.将数据模型应用于模板:使用FreeMarker模板引擎将数据模型应用于Word模板,并生成将要输出的Word文档。 4.插入图片:通过在FreeMarker模板使用图片占位符,将图片插入到生成的Word文档。这可以通过将图片数据检索出来并使用二进制方式插入模板来完成。 5.保存Word文档:完成所有文本和图片的插入后,将生成的Word文档保存到文件系统或输出流即可。 在使用FreeMarker导出Word图片时,需要注意以下几点: 1.在Word模板应该包含正确的占位符并设置样式和布局。 2.从数据检索图片时应该压缩和缩放图片以确保它们适合文档的区域。 3.在插入图片时,正确处理可能出现的图片格式和分辨率问题。 4.应对可能出现的异常情况进行处理,以确保生成的Word文档具有良好的稳定性和可靠性。 总之,使用FreeMarker导出Word图片是一项需要谨慎处理的复杂任务。通过遵循以上步骤和注意事项,可以生成具有高质量和稳健性的Word文档并满足客户的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值