首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 轉換 DOCX 到 DOC 不用 OpenOffice:Apache POI 方案

     編輯:程式設計疑難解答

可行方案

Apache POI 是純 Java 實作的 Office 格式操作庫,支援 .docx (OOXML) 與 .doc (OLE2) 互讀寫,無需安裝 OpenOffice/LibreOffice。

Maven 依賴

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

核心轉換代碼

public void docxToDoc(String srcPath, String destPath) throws Exception {
    try (XWPFDocument docx = new XWPFDocument(new FileInputStream(srcPath));
         FileOutputStream out = new FileOutputStream(destPath)) {
        
        // POI 直接寫入 .doc 格式 (HWPFDocument) 功能有限
        // 建議:讀取 docx 內容 → 建立 HWPFDocument → 寫入
        // 實務上常改用「docx 轉 PDF」或「docx 轉 HTML」再轉 doc
        
        // 簡易示範:僅提取段落文字
        HWPFDocument doc = new HWPFDocument();
        for (XWPFParagraph p : docx.getParagraphs()) {
            doc.createParagraph().insertText(p.getText());
        }
        doc.write(out);
    }
}

注意事項

  • POI 對複雜排版 (表格、浮動圖片、頁首尾、域碼) 的 .doc 輸出支援有限
  • 生產環境建議:docx → PDF (iText/pdfbox) → doc (LibreOffice headless) 或雲端轉換服務
  • 若必須純 Java,可評估 docx4j + OpenXML 操作
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved