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

Java Word 嵌入 Excel:POI/iText 不直接支援,用 PageOffice 數據區域或 POI 修改嵌入模板

     編輯:程式設計綜合問答

現狀

Apache POI (Word)、**不支援在 Word 中建立/插入 OLE 嵌入物件 (Embedded Excel)**。iText 同樣不支援。`XWPFDocument` 僅能建立表格、圖片、文字,無法建立 `application/vnd.ms-excel` 類型的 `PackagePart` 並正確關聯渲染。

可行方案

1. PageOffice 企業版 (商業、最省事)

  • 其「數據區域」功能可在 Word 模板中預留區域,執行時**將 Excel 檔案作為 OLE 物件插入**。
  • 適合「導出報表含可編輯 Excel 區塊」的商業專案,但需購買授權。

2. POI 修改預置嵌入物件的模板 (開源、免費)

  1. **手動在 Word 中建立模板**:`插入` → `物件` → `從檔案建立` → 選 Excel 檔 → 顯示為圖示/連結 → 另存為 `template.docx`。模板現已包含正確的 OLE `PackagePart` 及關聯關係。
  2. **POI 讀取模板,修改其他內容(書籤/表格/文字)**,**不動嵌入物件部分**:
    
    XWPFDocument doc = new XWPFDocument(new FileInputStream("template.docx"));
    // 修改書籤/表格...
    // 關鍵:不要嘗試用 POI 新增/修改 OLE 部分,保持原樣
    FileOutputStream out = new FileOutputStream("output.docx");
    doc.write(out);
    
  3. **產出的 `output.docx` 保留原模板的嵌入 Excel**,雙擊可在 Word 內編輯(需客戶端裝 Office)。

3. 替代方案:Word 表格模擬 / HTML 導出 / 連結跳轉