Java 在Word中创建邮件合并模板并合并文本和图片
概述
Word里面的邮件合并功能是一种可以快速批量操作同类型数据的方式,常见的如数据填充、打印等。其中必不可少的步骤包括用于填充的模板文档、填充的数据源以及实现邮件合并的功能。下面,通过Java程序展示如何来实现创建模板,并通过邮件合并功能来合并文本数据和图片数据的方法,分别以2个示例来展示,即:
1. 创建Word填充模板
2. 邮件合并文本和图片
运行环境
本次程序运行环境如下:
- 代码编译工具:IDEA
- Jdk版本:1.8.0
- Word测试文档:.docx 2013
- Word jar包工具:free spire.doc.jar 3.9.0
关于jar导入:
下载Free Spire.Doc for Java 到本地后,解压。然后执行如下步骤手动导入jar到Java程序:Project Structure(Shift+Ctrl+Alt+S)打开的界面中选择【Modules】—【Dependencies】,点击“+”,【JARs or directories…】,选择本地路径中的jar包,添加后,勾选,点击“OK”。
Java代码示例
1. 创建Word邮件合并模板
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;public class CreateTemplate {public static void main(String[] args) {//创建Document实例Document document = new Document();document.loadFromFile("test.docx");//获取第一节Section section = document.getSections().get(0);//添加4个段落Paragraph para1 = section.addParagraph();Paragraph para2 = section.addParagraph();Paragraph para3 = section.addParagraph();Paragraph para4 = section.addParagraph();//添加合并域,包括文字域、图片域para1.setText("姓名 : ");para1.appendField("Name", FieldType.Field_Merge_Field);para2.setText("邮件地址: ");para2.appendField("Email Address", FieldType.Field_Merge_Field);para3.setText("日期 : ");para3.appendField("Date", FieldType.Field_Merge_Field);para4.setText("图片:");para4.appendField("Image:image",FieldType.Field_Merge_Field);//保存模板文档document.saveToFile("template.docx", FileFormat.Docx);document.dispose();}
}
模板效果:
2. 邮件合并文本和图片数据
以上面创建模板为例,填充文本数据及图片数据
import com.spire.doc.*;
import com.spire.doc.reporting.MergeImageFieldEventArgs;
import com.spire.doc.reporting.MergeImageFieldEventHandler;import java.text.SimpleDateFormat;
import java.util.Date;public class MailMerge {public static void main(String[] args) throws Exception{//创建Document实例,并加载邮件合并模板文档Document document = new Document();document.loadFromFile("template.docx");//按文本合并域名称,设置合并域的文本值Date currentTime = new Date();SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString = formatter.format(currentTime);String[] textFieldNames = new String[]{"Name", "Email Address", "Date"};String[] textFieldValues = new String[]{"亚当斯密", "123456@163.com", dateString};//合并文本到模板document.getMailMerge().execute(textFieldNames,textFieldValues );//按图片合并域名称,设置图片路径值String[] imageFieldNames = new String[]{"image"};String[] imageFieldValues = new String[]{"logo.jpg"};//调用邮件合并事件加载图片document.getMailMerge().MergeImageField = new MergeImageFieldEventHandler(){public void invoke(Object sender, MergeImageFieldEventArgs args){mailMerge_MergeImageField(sender, args);}};//执行邮件合并document.getMailMerge().execute(imageFieldNames, imageFieldValues);//保存文档document.saveToFile("result.docx", FileFormat.Docx);}//创建邮件合并事件用于加载图片private static void mailMerge_MergeImageField(Object sender, MergeImageFieldEventArgs field) {String filePath = (String) field.getFieldValue();if (!filePath.isEmpty()){field.setImage(filePath);}}
}
合并效果:
—End—
Java 在Word中创建邮件合并模板并合并文本和图片相关推荐
- 如何通过Java代码在Word中创建可填充表单
有时候,我们需要制作一个Word模板文档,然后发给用户填写,但我们希望用户只能在指定位置填写内容,其他内容不允许编辑和修改.这时候我们就可以通过表单控件来轻松实现这一功能.本文将为您介绍如何通过Jav ...
- Java学习笔记:Word中创建图表如此简单
用法 Word中创建图表的方式是一样的. XWPFChart chart = WordHelpers.createChart(doc,500,300); XWPFChart和XSSFChart一样都是 ...
- Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行
本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...
- Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...
点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Destiny decides who enters your lif ...
- c# 获取word表格中的内容_Java 在Word中创建嵌套表格
嵌套表格,即在一个大的表格单元格中再嵌进去一个或几个小的表格,使表格内容布局合理.本文将通过java程序来演示如何在Word中创建嵌套表格. 使用工具:Free Spire.Doc for Java ...
- Microsoft Word教程:如何在 Word 中创建文档、添加和编辑文本?
欢迎观看 Microsoft Word 教程,小编带大家学习 Microsoft Word 的使用技巧,了解如何在 Word 中创建文档.添加和编辑文本. 创建文档,打开 Word,选择「空白文档」. ...
- Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本
一.概述及环境准备 SmartArt 图形通过将文字.图形从多种不同布局.组合来表现内容和观点的逻辑关系,能够快速.有效地传达设计者的意图和信息.这种图文表达的视觉表示形式常用于PPT,Word,Ex ...
- Java在Word中插入上标和下标
前言 在某些情况下,你可能需要在Microsoft Word中插入上标和下标.例如,当你正在创建一个涉及科学公式的学术文件时.在这篇文章中,你将学习如何使用Spire.Doc for Java库在Wo ...
- 微软word开机自启动_如何在Microsoft Word中创建自定义封面
微软word开机自启动 A great cover page draws in readers. If you use Microsoft Word, you're in luck, because ...
最新文章
- HMM -GMM 理清不错
- C#设计模式系列:享元模式(Flyweight)
- Fully decentralized NFT system towards Metaverse: Next generation Seatlab business model
- docker run 原理
- 转贴:Hyper-V的几款免费管理工具
- android分辨率比例成像,像素不是唯一 决定成像效果你必知的真相
- 基于CefSharp构建基于Chromium的应用程序
- zoj 1006 Do the Untwist 簡單字符串
- 机器学习与计算机视觉(被忽视的isp图像处理)
- linux音频设备节点,Linux音频驱动之三:PCM设备的创建
- 华为研发项目管理方法(HRDPM)核心五法则
- 将element-china-area-data获取的地区编码转为文字存储
- Go语言使用RabbitMQ
- 市场竞争力法则:以小博大,虽败犹荣
- 计算机使用的dns错误,dns错误,教您dns错误怎么修复
- 数十年军旅,钢铁意志成就他的技术颠峰
- GET请求里的body问题
- matlab我方指挥,【单选题】机场指挥塔位置:北纬30度35.343分,东经104度2.441分,在MATLAB中用变量...
- Excel数据行高参差不齐,如何一键设置固定行高
- 模拟键盘鼠标事件有两种方法