Java生成Word
在日常工作和学习中,我们经常会遇到需要生成Word文档的需求。而Java作为一种强大的编程语言,也提供了多种方法来生成Word文档。本文将介绍几种常用的Java生成Word文档的方法,并附上相应的代码示例。
1. Apache POI
Apache POI是一个流行的Java库,它可用于创建和处理Microsoft Office格式的文件,包括Word文档。通过Apache POI,我们可以在Java中生成和编辑Word文档。
首先,我们需要在项目的pom.xml
中添加Apache POI的依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
下面是一个使用Apache POI生成Word文档的示例代码:
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
public class WordGenerator {
public static void main(String[] args) {
// 创建文档对象
XWPFDocument document = new XWPFDocument();
// 创建段落对象
XWPFParagraph paragraph = document.createParagraph();
// 创建运行对象
XWPFRun run = paragraph.createRun();
run.setText("Hello, World!");
// 保存文档
try (FileOutputStream out = new FileOutputStream("output.docx")) {
document.write(out);
System.out.println("生成Word文档成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码使用XWPFDocument
、XWPFParagraph
和XWPFRun
等类来创建Word文档,并将文档保存为output.docx
文件。
2. Docx4j
Docx4j是另一个流行的Java库,它提供了一种简单的方式来生成和处理Word文档。相比于Apache POI,Docx4j的API更加易于使用和理解。
同样地,在项目的pom.xml
中添加Docx4j的依赖:
<dependency>
<groupId>org.docx4j</groupId>
<artifactId>docx4j</artifactId>
<version>11.1.3</version>
</dependency>
下面是一个使用Docx4j生成Word文档的示例代码:
import org.docx4j.Docx4J;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.wml.*;
import javax.xml.bind.JAXBException;
import java.io.*;
public class WordGenerator {
public static void main(String[] args) {
WordprocessingMLPackage wordMLPackage;
try {
// 创建文档对象
wordMLPackage = WordprocessingMLPackage.createPackage();
// 创建段落对象
P paragraph = factory.createP();
// 创建运行对象
Text text = factory.createText();
text.setValue("Hello, World!");
R run = factory.createR();
run.getContent().add(text);
paragraph.getContent().add(run);
// 将段落添加到文档
wordMLPackage.getMainDocumentPart().getContent().add(paragraph);
// 保存文档
wordMLPackage.save(new File("output.docx"));
System.out.println("生成Word文档成功!");
} catch (JAXBException | FileNotFoundException e) {
e.printStackTrace();
}
}
}
上述代码使用WordprocessingMLPackage
、P
、R
和Text
等类来创建Word文档,并将文档保存为output.docx
文件。
3. Freemarker
Freemarker是一个模板引擎,它可以与Apache POI或Docx4j等库结合使用,根据模板生成Word文档。使用Freemarker可以更灵活地控制文档的格式和内容。
首先,我们需要在项目的pom.xml
中添加Freemarker的依赖:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
下面是一个使用Freemarker生成Word文档的示例代码:
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class WordGenerator {
public static void main(String[] args) {