使用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文件。

相关文章
|
1天前
|
安全 算法 Java
Java一分钟:线程同步:synchronized关键字
【5月更文挑战第11天】Java中的`synchronized`关键字用于线程同步,防止竞态条件,确保数据一致性。本文介绍了其工作原理、常见问题及避免策略。同步方法和同步代码块是两种使用形式,需注意避免死锁、过度使用导致的性能影响以及理解锁的可重入性和升级降级机制。示例展示了同步方法和代码块的运用,以及如何避免死锁。正确使用`synchronized`是编写多线程安全代码的核心。
12 2
|
1天前
|
Java
java导出word
java导出word
|
2天前
|
小程序 Java 容器
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
03|Java基础语法:讲解标识符、关键字、变量、数据类型、运算符、控制语句(条件分支、循环)
7 0
|
2天前
|
Java
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
深入浅出Java基础语法:标识符、关键字、变量、数据类型、运算符与控制语句
5 0
|
12天前
|
存储 安全 Java
【亮剑】Java并发编程涉及`ThreadLocal`、`Volatile`、`Synchronized`和`Atomic`四个关键机制
【4月更文挑战第30天】Java并发编程涉及`ThreadLocal`、`Volatile`、`Synchronized`和`Atomic`四个关键机制。`ThreadLocal`为每个线程提供独立变量副本;`Volatile`确保变量可见性,但不保证原子性;`Synchronized`实现同步锁,保证单线程执行;`Atomic`类利用CAS实现无锁并发控制。理解其原理有助于编写高效线程安全代码。根据业务场景选择合适机制至关重要。
|
13天前
|
Java 编译器
【Java探索之旅】this 关键字 解决你的成员变量困惑
【Java探索之旅】this 关键字 解决你的成员变量困惑
18 0
|
13天前
|
Java
【Java探索之旅】我与Java的初相识(完):注释,标识符,关键字
【Java探索之旅】我与Java的初相识(完):注释,标识符,关键字
5 0
|
13天前
|
Java
Java里的关键字 __final
Java里的关键字 __final
|
15天前
|
Java 编译器
【JAVA】volatile 关键字的作用
【JAVA】volatile 关键字的作用
|
16天前
|
Java
【JAVA面试题】final关键字的作用有哪些
【JAVA面试题】final关键字的作用有哪些