当前位置:主页 > java教程 > Java spire对word文档替换

Java如何使用spire进行word文档的替换详解

发布:2023-03-04 08:30:01 59


给网友朋友们带来一篇相关的编程文章,网友段代芹根据主题投稿了本篇教程内容,涉及到java、word文档替换方案、java、word替换、java、spire、Java spire对word文档替换相关内容,已被666网友关注,内容中涉及的知识点可以在下方直接下载获取。

Java spire对word文档替换

前言

今天遇到一个需求,需要对word模板进行替换制定的变量

在网上找了很多方案,做了很多的demo,下面就把我觉得比较简单的一种分享给大家

本次的主角是:spire.doc

spire.doc是专门实现对word的操作(包括文字,表格,图片)

spire.doc介绍

Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET类库。这款控件的主要功能在于帮助开发人员轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。作为一款独立的 Word .NET 控件,Spire.Doc for .NET 的运行系统(服务器端或客户端)均无需安装 Microsoft Word,但是它却可以将 Microsoft Word 文档的操作功能集成到任何开发人员的 .NET 应用程序中。

Spire.Doc for .NET 能执行多种 Microsoft Word 文档处理任务的 .NET API。支持 Word97-2003,Word2007,Word2010 以及 Word2013。能在 Word 97/2003/2007/2010/2013 和 XML、RTF、TXT、XPS、EPUB、EMF、HTML、ODT 等格式文件之间进行双向转换,还能将 Word 文件高质量地转换为 PDF 和 SVG 文件格式。

具体使用可以参考文档: Spire.Doc for .NET 中文教程

前提准备

准备word模板

准备一个word文件,里面简单写点模板:

引入spire.do依赖

spire.doc比较小众,因此需要在pom.xml中导入spire.doc的仓库,导入之后直接导包,如果不配置仓库直接下载依赖是不行的!

	  <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc.free</artifactId>
            <version>3.9.0</version>
        </dependency>
        
		 <repositories>
		        <repository>
		            <id>com.e-iceblue</id>
		            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
		        </repository>
		    </repositories>

案例演示

前提工作准备好之后,就可以开始编写demo了

单个内容替换

短短的三行代码,就完成了读取,替换,保存的功能:

package com.test;

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

/**
 * @description: 替换word文档中的变量
 * @author: 魏一鹤
 * @createDate: 2023-01-08 10:51
 **/

public class FileTest3 {
    public static void main(String[] args) {
        //加载Word文档
        Document document = new Document("C:\\Users\\PC\\Desktop\\test.docx");
        //使用新文本替换文档中的指定文本
        document.replace("${name}", "张三丰", false, true);
        //保存文档
        document.saveToFile("C:\\Users\\PC\\Desktop\\test2.docx", FileFormat.Docx_2013);
    }
}

这时候打开桌面生成的文件查看,${name}的变量以及被替换掉了

但是这只是单独替换一个变量,一般一个模板里面是会有很多的变量的,这事我们需要支持批量替换变量

批量内容替换

想要实现批量内容替换,其实也很简单,还是拿上面举例的模板进行操作:

方式1

笨点的方式:既然我们使用的是document.replace进行替换,那么模板里面有多少个变量,我们就写多少个document.replac即可:

package com.test;

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

/**
 * @description: 替换word文档中的变量
 * @author: 魏一鹤
 * @createDate: 2023-01-08 10:51
 **/

public class FileTest3 {
    public static void main(String[] args) {
        //加载Word文档
        Document document = new Document("C:\\Users\\PC\\Desktop\\test.docx");
        //使用新文本替换文档中的指定文本
        document.replace("${name}", "张三丰", false, true);
        document.replace("${age}", "18", false, true);
        document.replace("${sex}", "男", false, true);
        //保存文档
        document.saveToFile("C:\\Users\\PC\\Desktop\\test2.docx", FileFormat.Docx_2013);
    }
}

虽然笨,但是可行:

方式2

虽然上面的方式可行,但是维护起来比较麻烦,这时候我们可以采取这种方式:

声明一个map,把一组组的key和value进行保存,key就是变量, value就是模板值,然后循环map进行替换,这样不管多少个变量,我们都只需要在map里配置即可

package com.test;

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

import java.util.HashMap;
import java.util.Set;

/**
 * @description: 替换word文档中的变量
 * @author: 魏一鹤
 * @createDate: 2023-01-08 10:51
 **/

public class FileTest3 {
    public static void main(String[] args) {
        //加载Word文档
        Document document = new Document("C:\\Users\\PC\\Desktop\\test.docx");
        //模板变量map
        HashMap<String, Object> paramsMap = new HashMap<>();
        // 填充key和vaulue key=模板变量,value=替换后的值
        paramsMap.put("${name}","张三丰");
        paramsMap.put("${age}","18");
        paramsMap.put("${sex}","男");
        // 循环key
        for(String key:paramsMap.keySet()){
            // 根据key得到value
            String value = paramsMap.get(key).toString();
            //使用新文本替换文档中的指定文本 也就是value替换key
            document.replace(key, value, false, true);
        }
        //保存文档
        document.saveToFile("C:\\Users\\PC\\Desktop\\test3.docx", FileFormat.Docx_2013);
    }
}

再次运行代码,文档里面的变量以及全部完成了替换。

总结

能够实现这样的例子很多,我个人也花了两天试了很多的demo,包括Apache下的poi的XWPFDocument,Java File文件流等,经过大量的常识,我个人更倾向于这种方式,不仅代码量少,而且spire本身就是支持对于word文档操作的,功能更多且强大。所以在次推荐给大家

到此这篇关于Java如何使用spire进行word文档的替换详解的文章就介绍到这了,更多相关Java spire对word文档替换内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • Java Lambda表达式与引用类浅析

    发布:2023-04-20

    Lambda表达式是Java SE8中一个重要的新特性,允许通过表达式来代替功能接口。本文将通过一些简单的示例和大家讲讲Lamda表达式的使用,感兴趣的可以了解一下


  • Java的ThreadContext类加载器的知识点总结

    发布:2020-02-06

    这篇文章主要介绍了Java的ThreadContext类加载器的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • java实现生成二维码实例总结

    发布:2019-05-31

    本文主要介绍java二维码的生成与解析,这里提供示例代码以便大家参考和理解,希望能帮助开发Java 二维码的朋友


  • java开发接口吞吐量提升10多倍技巧

    发布:2023-03-05

    这篇文章主要为大家介绍了java开发技巧之接口吞吐量提升10多倍的方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Java面向对象编程中类的继承用法总结

    发布:2019-06-10

    这篇文章主要介绍了Java面向对象编程之类的继承,结合实例形式较为详细的分析了Java面向对象编程类的概念、功能、使用方法及相关注意事项,需要的朋友可以参考下


  • 掌握JavaScript中面向对象编程之概论

    发布:2020-03-11

    这篇文章主要介绍了深入理解JavaScript系列(17):面向对象编程之概论详细介绍,本文讲解了概论、范式与思想、基于类特性和基于原型、基于静态类、层次继承等内容,需要的朋友可以参考下


  • java实现多线程交替打印两个数

    发布:2022-09-23

    给网友们整理关于java 多线程的教程,这篇文章主要为大家详细介绍了java实现多线程交替打印两个数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Java利用Selenium操作浏览器的示例详解

    发布:2023-03-03

    本文主要介绍如何使用java代码利用Selenium操作浏览器,某些网页元素加载慢,如何操作元素就会把找不到元素的异常,此时需要设置元素等待,等待元素加载完,再操作,感兴趣的可以了解一下


网友讨论