使用Java替换word模板中关键字-简易版

简介: 使用Java替换word模板中关键字-简易版
1 效果演示


网络异常,图片无法展示
|


效果演示截图


2 实现过程


2.1 导入jar包

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>3.17</version>
</dependency>


2.2 实现代码


不啰嗦,直接上代码。

package WordTest;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class WordDemoUtils {
    public static void main(String[] args) {
        replaceWordKeyWord();
    }
    public static void replaceWordKeyWord() {
        try {
            String serverPath = "E:\\TEST\\tmpl2.doc";
            InputStream is = new FileInputStream(serverPath);
            HWPFDocument doc = new HWPFDocument(is);
            Range range = doc.getRange();
            range.replaceText("${year}", "2020");
            range.replaceText("${morning}", "早上");
            OutputStream os = new FileOutputStream("E:\\TEST\\target.doc");
            //把doc输出到输出流中
            doc.write(os);
            is.close();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


自测过程中发现的小问题及解决方法:


原本最初我使用的模板后缀为.docx,可自测过程中报了如下错误:


java.lang.IllegalArgumentException: The document is really a OOXML file


解决方法:我将docx的文件另存为低版本的doc文件,即解决上述了问题。


所以这里做个小总结,模板和输出文件都要是doc文件。

相关文章
|
5天前
|
存储 安全 Java
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
Java面试题:深入探索Java内存模型,Java内存模型中的主内存与工作内存的概念,Java内存模型中的happens-before关系,volatile关键字在Java内存模型中的作用
11 1
|
6天前
|
Java 开发者
Java中的并发编程:深入理解synchronized关键字
在Java并发编程的领域中,synchronized关键字是实现线程同步的基础工具之一。本文将深入剖析synchronized的作用机制,探讨其在多线程环境下确保数据一致性的重要性,并通过实际案例展示其应用。同时,文章还将比较synchronized与Lock接口的不同之处,以助于开发者更好地选择适合自己场景的同步策略。
|
5天前
|
缓存 安全 算法
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
8 0
|
4天前
|
缓存 安全 Java
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
19 4
|
4天前
|
安全 Java
Java面试题:解释synchronized关键字在Java内存模型中的语义
Java面试题:解释synchronized关键字在Java内存模型中的语义
9 1
|
5天前
|
设计模式 缓存 安全
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
Java面试题:工厂模式与内存泄漏防范?线程安全与volatile关键字的适用性?并发集合与线程池管理问题
11 1
|
14天前
|
存储 Java 数据库
Static关键字在Java中的多种用途解析
Static关键字在Java中的多种用途解析
|
15天前
|
Java
static关键字在Java中的作用
static关键字在Java中的作用
|
14天前
|
Java
Java面向对象 ( 多态 | final关键字 | 接口 )
Java面向对象 ( 多态 | final关键字 | 接口 )
|
16天前
|
Java
static关键字在Java中的应用场景与示例
static关键字在Java中的应用场景与示例