java利用Freemarker模板生成格式友好的doc文档(这种方式不支持docx)
来源:互联网 发布:淘宝的追加评论在哪里 编辑:程序博客网 时间:2024/05/17 12:47
近期做项目需要生成复杂的带格式的word文档,选择过poi和itext来写文档,发现文档生成没问题,但是格式不好调,后来就想要利用freemarker模板来生成,效果还可以,今天就贴出来。
主要分为以下几步
- 整理一份排版友好的word文档
如:
- 修改word里面需要填充的文字或图片
利用$符号把要填充的内容换成具体的变量占位符
不要直接在word文档里写占位符,可以在编辑器里写完成后再复制到word里,这样不会出现占位符在文档生成ftl模板后被分隔开的问题。 - 把修改后的word文档另存为xml
- 把生成的xml文件后缀名修改为ftl
- 修改ftl模板里的变量占位符
1、修改图片的basecode64码替换成具体的变量占位符。
说明:这里要注意修改以下两个属性,如果不修改会导致图片只显示第一张图片
<w:binData w:name="${"wordml://0300000"+warn_img_index+1+".png"}" xml:space="preserve"><v:imagedata src="${"wordml://0300000"+warn_img_index+1+".png"}" o:title="svg_data_container_common_lkhs"/>
2、修改文字显示的变量站位符号
普通的List<String>循环
List<Map>循环
6. 填充数据
String file_path = "D:/export"; String file_name = System.currentTimeMillis()+"_freemarker_word.doc"; //加载freemarker模板 FreemarkerWordUtils.createWord(data_map,"wordtemplates.ftl",file_path,file_name);
/** * 把图片转换成basecode64码 * @param path * @return */ public static String getPic_base64code(String path){ String img = null; InputStream in; byte[] picdata = null; try { in = new FileInputStream(path); picdata = new byte[in.available()]; in.read(picdata); in.close(); } catch (Exception e) { e.printStackTrace(); } BASE64Encoder encoder = new BASE64Encoder(); img = encoder.encode(picdata); return img; }
最终生成的文档如下:
阅读全文
0 0
- java利用Freemarker模板生成格式友好的doc文档(这种方式不支持docx)
- java利用Freemarker模板生成格式友好的doc或者docx文档
- java freemarker模板生成复杂格式的文档
- java利用freemarker生成简单格式的word文档
- Java Web项目中利用FreeMarker模板生成的word文档,其它格式文档同理,如pdf,txt,java,xml等等
- JAVA通过模板生成DOCX文档
- JAVA通过模板生成DOC文档
- poi修改word文档doc/docx不支持图片
- JAVA通过模板生成DOCX文档(2)
- Java 中利用 Freemarker 生成 Word 文档
- 一个利用google文档快速解决docx向doc转换的问题
- java生成doc文档
- 在java 用xml模板通过freemarker生成word文档
- JAVA使用POI操作word文档实例,兼容doc,docx
- JAVA利用FreeMarker生成(导出)Word文档
- 利用Freemarker生成word的使用(java)
- 移动端无法打开FreeMarker模板生成的Word文档
- Myeclipse生成Java doc文档
- jquery 表格 数据渲染 加速
- swing设置面板背景图片
- Android内存泄露分析之-内存泄露的原因
- 关于模拟器
- 微信分享SDK接入——Java
- java利用Freemarker模板生成格式友好的doc文档(这种方式不支持docx)
- jquery实现编辑直接选中文本内容
- mac下用browser-sync 做一个webapp的手机端的测试
- Jzoj4770 闭门造车
- Android动态加载之ClassLoader详解
- 单链表
- drag 弹框
- PHP 时间戳转换成 已读文本:刚刚、几小时前、几分钟前、昨天
- Linux 常用命令