如何通過Java應用程式在PPT中建立SmartArt圖形

2023-04-17 12:01:18

SmartArt其實就是一個文字的視覺化工具,使用者可在PowerPoint,Word,Excel中使用該特性建立各種圖形圖表。SmartArt 圖形是資訊和觀點的視覺表示形式。可以通過從多種不同佈局中進行選擇來建立 SmartArt 圖形,從而快速、輕鬆、有效地傳達資訊。簡單的來說SmartArt就是PPT內建的邏輯圖表,主要用於表達文字之間的邏輯關係,可幫助你快速、輕鬆、有效的傳達資訊。本文就將為您介紹如何通過Java應用程式在PPT中建立SmartArt圖形。下面是我整理的具體步驟及方法,並附上Java程式碼供大家參考。

程式碼編譯環境:

IntelliJ IDEA 2019(jdk 1.8.0)

Presentation Jar包:Free Spire.Presentation for Java 5.1.0

引入jar

匯入方法1:

手動引入。將Free Spire. Presentation for Java下載到本地,解壓,找到lib資料夾下的Spire. Presentation.jar檔案。在IDEA中開啟如下介面,將本地路徑中的jar檔案引入Java程式:

匯入方法2:如果您想通過 Maven安裝,則可以在 pom.xml 檔案中新增以下程式碼匯入 JAR 檔案。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>

建立 SmartArt 圖形

  • 建立 SmartArt 圖形時,可根據建立的圖形,在預設的節點中新增內容;也可以根據設計需要自行新增節點或者刪除節點。下面,是本次建立 SmartArt 圖形的主要步驟:
  • 建立 Presentation 類的物件。
  • 通過 Presentation.getSlides().get(int index) 方法獲取指定幻燈片。
  • 使用 ISlide.getShapes().appendSmartArt(float x, float y, float width, float height, SmartArtLayoutType layoutType) 方法新增 SmartArt 圖形到幻燈片。
  • 使用 IsmartArt.setColorStyle(SmartArtColorType smartArtColorType)方法和IsmartArt.setStyle(SmartArtStyleType smartArtStyleType) 方法設定圖形顏色和樣式。
  • 通過 IsmartArtNode.getNodes().get(int index)方法獲取指定節點,然後使用ISmartArtNode.getTextFrame().setText(String string) 方法向節點新增內容。
  • 如需自定義節點內容,可在新增圖形後,通過 ISmartArt.getNodes().removeNode(IsmartArtNode iSmartArtNode) 方法刪除原有節點後,以 ISmartArt.getNodes().addNode() 方法新增節點和 IsmartArtNode.getChildNodes().addNode() 方法新增子節點,然後採用上一步驟的方法新增內容到自定義的節點。
  • 最後,使用 Presentation.saveToFile(String file, FileFormat fileFormat) 方法儲存幻燈片檔案到指定路徑。

完整程式碼

Java

import com.spire.presentation.*;
import com.spire.presentation.diagrams.*;

public class SmartArt {
    public static void main(String[] args) throws Exception{
        //建立PPT檔案,獲取一張幻燈片(建立的空白PPT檔案,預設包含一張幻燈片)
        Presentation ppt = new Presentation();
        ISlide slide = ppt.getSlides().get(0);

        //建立SmartArt圖形1
        ISmartArt smartArt1 = slide.getShapes().appendSmartArt(50,50,200,200, SmartArtLayoutType.BASIC_CYCLE);//在幻燈片指定位置新增指定大小和佈局型別的SmartArt圖形
        smartArt1.setColorStyle(SmartArtColorType.COLORFUL_ACCENT_COLORS_4_TO_5);//設定SmartArt圖形顏色型別
        smartArt1.setStyle(SmartArtStyleType.INTENCE_EFFECT);//設定SmartArt圖形樣式
        ISmartArtNode smartArtNode1 = smartArt1.getNodes().get(0);//獲取節點
        smartArtNode1.getTextFrame().setText("設計");//新增內容
        smartArt1.getNodes().get(1).getTextFrame().setText("求實");
        smartArt1.getNodes().get(2).getTextFrame().setText("練習");
        smartArt1.getNodes().get(3).getTextFrame().setText("實踐");
        smartArt1.getNodes().get(4).getTextFrame().setText("創新");


        //建立SmartArt圖形2,自定義節點內容
        ISmartArt smartArt2 = slide.getShapes().appendSmartArt(400,200,200,200,SmartArtLayoutType.BASIC_RADIAL);
        smartArt2.setColorStyle(SmartArtColorType.DARK_2_OUTLINE);
        smartArt2.setStyle(SmartArtStyleType.MODERATE_EFFECT);
        //刪除預設的節點(SmartArt中的圖形)
        for (Object a : smartArt2.getNodes())
        {
            smartArt2.getNodes().removeNode((ISmartArtNode) a);
        }
        //新增一個母節點
        ISmartArtNode node2 = smartArt2.getNodes().addNode();
        //在母節點下新增三個子節點
        ISmartArtNode node2_1 = node2.getChildNodes().addNode();
        ISmartArtNode node2_2 = node2.getChildNodes().addNode();
        ISmartArtNode node2_3 = node2.getChildNodes().addNode();
        //在節點上設定文字及文字大小
        node2.getTextFrame().setText("裝置");
        node2.getTextFrame().getTextRange().setFontHeight(14f);
        node2_1.getTextFrame().setText("機械");
        node2_1.getTextFrame().getTextRange().setFontHeight(12f);
        node2_2.getTextFrame().setText("電氣");
        node2_2.getTextFrame().getTextRange().setFontHeight(12f);
        node2_3.getTextFrame().setText("自動化");
        node2_3.getTextFrame().getTextRange().setFontHeight(12f);

        //儲存檔案
        ppt.saveToFile("AddSmartArt.pptx",FileFormat.PPTX_2013);
        ppt.dispose();
    }
}

效果圖

—本文完—