当前位置:首页 > Java

java如何生成word文档

2026-03-04 02:01:55Java

使用Apache POI库生成Word文档

Apache POI是Apache软件基金会的开源库,提供对Microsoft Office格式文件的读写支持。XWPF组件专门用于操作Word文档(.docx格式)。

添加Maven依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

基础示例代码:

import org.apache.poi.xwpf.usermodel.*;

public class WordGenerator {
    public static void createSimpleDocument() throws Exception {
        XWPFDocument document = new XWPFDocument();

        // 添加标题
        XWPFParagraph title = document.createParagraph();
        title.setAlignment(ParagraphAlignment.CENTER);
        XWPFRun titleRun = title.createRun();
        titleRun.setText("文档标题");
        titleRun.setBold(true);
        titleRun.setFontSize(16);

        // 添加正文
        XWPFParagraph para = document.createParagraph();
        XWPFRun run = para.createRun();
        run.setText("这是一段示例文本。");

        // 保存文件
        FileOutputStream out = new FileOutputStream("output.docx");
        document.write(out);
        out.close();
        document.close();
    }
}

使用docx4j库生成Word文档

docx4j是另一个专门处理Office Open XML格式的Java库,更适合复杂文档操作。

Maven依赖:

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
    <version>11.4.5</version>
</dependency>

示例代码:

import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;

public class Docx4jExample {
    public static void main(String[] args) throws Exception {
        WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();
        MainDocumentPart documentPart = wordPackage.getMainDocumentPart();

        documentPart.addStyledParagraphOfText("Title", "文档标题");
        documentPart.addParagraphOfText("正文内容");

        wordPackage.save(new File("output.docx"));
    }
}

使用模板引擎生成Word文档

对于需要动态内容的场景,可以考虑使用模板引擎:

FreeMarker模板示例(需要将Word文档另存为XML格式作为模板):

Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
cfg.setDirectoryForTemplateLoading(new File("templates"));
Template template = cfg.getTemplate("word_template.ftl");

Map<String, Object> data = new HashMap<>();
data.put("title", "动态标题");
data.put("content", "动态内容");

Writer out = new FileWriter("output.xml");
template.process(data, out);
out.close();

高级功能实现

表格创建示例(使用Apache POI):

XWPFTable table = document.createTable(3, 4);
table.getRow(0).getCell(0).setText("Header1");
table.getRow(0).getCell(1).setText("Header2");

for(int row=1; row<3; row++) {
    for(int col=0; col<4; col++) {
        table.getRow(row).getCell(col).setText("Data " + row + col);
    }
}

图片插入示例:

java如何生成word文档

XWPFRun run = paragraph.createRun();
FileInputStream is = new FileInputStream("image.jpg");
run.addPicture(is, Document.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(200), Units.toEMU(150));
is.close();

注意事项

所有示例都需要处理IOException,实际使用时应添加异常处理逻辑。对于大型文档生成,注意及时关闭资源防止内存泄漏。较新版本的Word文档应使用.docx格式(OOXML),而非旧的.doc格式(二进制格式)。

标签: 文档java
分享给朋友:

相关文章

java如何

java如何

Java 基础语法 Java 是一种面向对象的编程语言,语法相对严谨。每个 Java 程序必须包含一个 main 方法作为程序入口。以下是一个简单的 Java 程序示例: public class…

java如何创建对象

java如何创建对象

创建对象的基本方法 在Java中,创建对象主要通过new关键字调用构造函数完成。基本语法为: ClassName objectName = new ClassName(); 例如创建String对象…

java如何调试

java如何调试

调试Java程序的基本方法 使用IDE内置的调试工具(如IntelliJ IDEA或Eclipse)是最常见的方式。在代码行号旁点击设置断点,启动调试模式后,程序会在断点处暂停,允许查看变量值、调用栈…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

vue实现文档预览

vue实现文档预览

Vue 实现文档预览的方法 使用 iframe 嵌入预览 在 Vue 中可以通过 iframe 直接嵌入文档链接实现预览。这种方式适用于 PDF、Word 等浏览器支持直接打开的文档类型。 <…

java下载功能vue实现

java下载功能vue实现

Java 后端文件下载功能实现 后端需提供文件下载的接口,通常使用 HttpServletResponse 实现。以下是一个简单的 Java Spring Boot 示例: @GetMapping(…