標籤:java com ppt powerpoint
一、 背景說明
在Eclipse環境下,開發JAVA代碼操作PPT,支援對PPT模板的修改。包括修改文字標籤、圖表、表格。滿足大多數軟體產生PPT報告的要求,即先收工建立好模板,在程式中修改模板資料。
二、 開發環境搭建
下載jacob開源組件,解壓後把jacob.jar添加到項目中。拷貝對應的dll檔案到Path路徑下。32位系統採用X86的dll, 64位系統採用X64的dll。
三、 實現合并PPT函數1.1 合并PPT
/** * 合并多個PPT檔案。要求輸出檔案和合并檔案均已存在,不建立新檔案。 * @param outPutPPTPath 合并後輸出的檔案路徑。 * @param mergePPTPathList 依次追加合并的檔案。 */ public synchronized static void merge(String outPutPPTPath, List<String> mergePPTPathList) { // 啟動 office PowerPoint程式 ActiveXComponent pptApp = new ActiveXComponent("PowerPoint.Application"); Dispatch.put(pptApp, "Visible", new Variant(true)); Dispatch presentations = pptApp.getProperty("Presentations").toDispatch(); // 開啟輸出檔案 Dispatch outputPresentation = Dispatch.call(presentations, "Open", outPutPPTPath, false, false, true).toDispatch(); // 迴圈添加合并檔案 for (String mergeFile : mergePPTPathList) { Dispatch mergePresentation = Dispatch.call(presentations, "Open", mergeFile, false, false, true).toDispatch(); Dispatch mergeSildes = Dispatch.get(mergePresentation, "Slides").toDispatch(); int mergePageNum = Dispatch.get(mergeSildes, "Count").toInt(); // 關閉合并檔案 Dispatch.call(mergePresentation, "Close"); Dispatch outputSlides = Dispatch.call(outputPresentation, "Slides").toDispatch(); int outputPageNum = Dispatch.get(outputSlides, "Count").toInt(); // 追加待合并檔案內容到輸出檔案末尾 Dispatch.call(outputSlides, "InsertFromFile", mergeFile, outputPageNum, 1, mergePageNum); } // 儲存輸出檔案,關閉退出PowerPonit. Dispatch.call(outputPresentation, "Save"); Dispatch.call(outputPresentation, "Close"); Dispatch.call(pptApp, "Quit"); }
1.2 調用測試代碼
public static void main(String[] args) throws OpenXML4JException, IOException, XmlException { String outPutPPTPath = "D:\\TEMP\\template\\1.pptx"; List<String> mergePPTPathList = new ArrayList<String>(); mergePPTPathList.add("D:\\TEMP\\template\\2.pptx"); mergePPTPathList.add("D:\\TEMP\\template\\3.pptx"); MergePPT.merge(outPutPPTPath, mergePPTPathList);; }
JAVA通過COM介面操作PPT