Word里面的邮件合并功能是一种可以快速批量操作同类型数据的方式,常见的如数据填充、打印等。其中必不可少的步骤包括用于填充的模板文档、填充的数据源以及实现邮件合并的功能。下面,通过Java程序展示如何来实现创建模板,并通过邮件合并功能来合并文本数据和图片数据的方法,分别以2个示例来展示,即:

1. 创建Word填充模板

2. 邮件合并文本和图片

本次程序运行环境如下:

  • 代码编译工具:IDEA
  • Jdk版本:1.8.0
  • Word测试文档:.docx 2013
  • Word jar包工具:Free Spire.Doc for Java

关于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中创建邮件合并模板并合并文本和图片的更多相关文章

  1. Java 在Word中创建多级项目符号列表和编号列表

    本文分享通过Java程序代码在Word中创建多级项目符号列表和编号列表的方法.程序运行环境如下: IntelliJ IDEA 2018(JDK 1.8.0) Word 2013 Word Jar包:F ...

  2. C# 创建邮件合并模板并合并文本、图片

    对于Word中的邮件合并功能,用户可以将邮件合并后的结果文档保存并打印,也可以通过邮件的形式发送,在很多场合需要使用到此功能.那对于编程人员,我们也可以在C#语言环境中通过代码的形式来实现.根据需要先 ...

  3. Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  4. Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本

    一.概述及环境准备 SmartArt 图形通过将文字.图形从多种不同布局.组合来表现内容和观点的逻辑关系,能够快速.有效地传达设计者的意图和信息.这种图文表达的视觉表示形式常用于PPT,Word,Ex ...

  5. word中创建文本框

    word中创建文本框         在插入中点击"文本框"选项卡,例如以下图所看到的:        手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...

  6. Java读取word中表格

    因为要新建一个站,公司要把word表格的部分行列存到数据库中.之前用java操作过excel,本来打算用java从word表格中读取数据,再存到数据库中,结果因为权限不够,无法访问公司要写的那个数据库 ...

  7. IAR模板--怎样在IARproject中创建和使用模板

    怎样在IARproject中创建和使用模板 1.编辑和使用模板的方式: 路径为:Edit -> Code Templates -> Edit Templates  例如以下图: water ...

  8. Java 实现word 中写入文字图片的解决方案

    JAVA生成WORD文件的方法目前有以下两种方式: 一种是jacob 但是局限于windows平台 往往许多JAVA程序运行于其他操作系统 在此不讨论该方案; 一种是poi但是他的excel处理很程序 ...

  9. java解析邮箱中的邮件信息

    import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import ...

随机推荐

  1. 06.ElementUI 2.X 源码学习:源码剖析之工程化(一)

    0x.00 前言 在用了5章篇幅 ElementUI源码学习:从零开始搭建Vue组件库汇总 讲解了如何编写一个组件.发布npm以及生成展示文档之后.接下来将分析Element项目的代码结构,学习其工程 ...

  2. 十一、.net core(.NET 6)搭建ElasticSearch(ES)系列之ElasticSearch、head-master、Kibana环境搭建

    搭建ElasticSearch+Kibana环境 前提条件:已经配置好JDK环境以及Nodejs环境.如果还未配置,请查看我的上一篇博客内容,有详细配置教程. 先下载ElasticSearch(以下文 ...

  3. Go基础结构与类型06---房贷计算器

    package main import ( "fmt" "math" "strconv" ) /* 输入的金额.年化利息(0.05代表5%) ...

  4. 全卷积网络Fully Convolutional Networks (FCN)实战

    全卷积网络Fully Convolutional Networks (FCN)实战 使用图像中的每个像素进行类别预测的语义分割.全卷积网络(FCN)使用卷积神经网络将图像像素转换为像素类别.与之前介绍 ...

  5. 5, java数据结构和算法: 栈 , 入栈, 出栈, 正序遍历,,逆序遍历

    直接上代码: class ArrayStack{ //用数组模拟栈 int maxSize; int[] stack; int top = -1;//表示栈顶 public ArrayStack(in ...

  6. oracle审计表迁移

    ============ oracle审计表迁移到新的表空间 ============ 前言 oracle数据库开启审计功能后会占用大量的SYSTEM系统表空间,要么定时对审计表进行清理,要么对系统表 ...

  7. 反汇编EXE添加一个启动时的消息框

    反汇编EXE添加一个启动时的消息框 最近有一个要修改PE文件的需求,就先从EXE文件下手吧,我也是初学一个小时而已,不过之前接触过一点汇编罢了,这篇文章算是个DEMO,主要的思路是将其反汇编得到汇编代 ...

  8. 菜鸟刷题路(随缘刷题):leetcode88

    lc88 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i = m - 1, j = ...

  9. POI导出Excel时下拉列表值超过255的问题(String literals in formulas can't be bigger than 255 characters ASCII)

    //创建Excel工作薄对象 Workbook workbook = new HSSFWorkbook(); //生成一个表格 设置:页签 Sheet sheet = workbook.createS ...

  10. VNC 相关

    vncserver启动报错root A VNC server is already running as :1 [root@42 ~]# service vncserver startStarting ...