• C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形


    本文介绍通过C#和VB.NET程序代码来创建和编辑PPT文档中的SmartArt图形。文中将分两个操作示例来演示创建和编辑结果。

    使用工具Spire.Presentation for .NET hotfix 5.9.5

    Dll文件引用:

    方式1下载包。下载后,解压,打开Bin文件夹,根据自己用的.NET Framework选择相应的文件夹,如:此示例中使用的是NET4.0,即打开NET4.0文件,找到Spire.Presentation.dll文件。找到dll文件后,在vs程序中添加引用该dll。

    如下引用结果:

    方式2:通过Nuget搜索下载导入。

    注:创建SmartArt图形时,可创建80多种不同类型的图形,编辑图形是,可添加、删除节点、编辑节点内容、给节点内容设置超链接(包括链接到网页、链接到幻灯片)

    示例1. 创建PPT SmartArt图形

    using Spire.Presentation;
    using Spire.Presentation.Diagrams;
    
    
    namespace AddSmartArt
    {
        class Program
        {
            static void Main(string[] args)
            {
                //实例化Presentation对象
                Presentation ppt = new Presentation();
    
                //设置幻灯片大小
                ppt.SlideSize.Type = SlideSizeType.Screen16x9;
    
                //添加组织结构图类型的SmartArt图形,并指定位置、大小
                ISmartArt smartArt = ppt.Slides[0].Shapes.AppendSmartArt(100, 50, 450, 250, SmartArtLayoutType.OrganizationChart);
    
                //设置SmartArt的样式和颜色
                smartArt.Style = SmartArtStyleType.IntenceEffect;
                smartArt.ColorStyle = SmartArtColorType.ColorfulAccentColors3to4;
    
                //移除默认的形状(Node即代表SmartArt中的形状)
                foreach (ISmartArtNode node in smartArt.Nodes)
                {
                    smartArt.Nodes.RemoveNode(node);
                }
    
                //添加形状并在其下面添加嵌套子形状
                ISmartArtNode node1 = smartArt.Nodes.AddNode();
                ISmartArtNode node1_1 = node1.ChildNodes.AddNode();
                ISmartArtNode node1_1_1 = node1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_2 = node1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_3 = node1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_4 = node1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_5 = node1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_6 = node1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_1_1 = node1_1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_1_2 = node1_1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_1_3 = node1_1_1.ChildNodes.AddNode();
                ISmartArtNode node1_1_3_1 = node1_1_3.ChildNodes.AddNode();
                ISmartArtNode node1_1_3_2 = node1_1_3.ChildNodes.AddNode();
                ISmartArtNode node1_1_6_1 = node1_1_6.ChildNodes.AddNode();
                ISmartArtNode node1_1_6_2 = node1_1_6.ChildNodes.AddNode();
                ISmartArtNode node1_1_6_3 = node1_1_6.ChildNodes.AddNode();
                
    
                //在每一个形状上添加文字
                node1.TextFrame.Text = "董事会
    " + "Board of Directors";           
                node1_1.TextFrame.Text = "总经理
    " + "General Manager";
                node1_1_1.TextFrame.Text = "供应部
    " + "Supply Dept.";
                node1_1_2.TextFrame.Text = "营销部
    " + "Sales Dept.";
                node1_1_3.TextFrame.Text = "生产部
    " + "Productive Dept.";
                node1_1_4.TextFrame.Text = "财务部
    " + "Finance Dept.";
                node1_1_5.TextFrame.Text = "人力资源部
    " + "HR Dept.";
                node1_1_6.TextFrame.Text = "质检中心
    " + "Quality Center";
                node1_1_1_1.TextFrame.Text = "采购部
    " + "Purchase Dept.";
                node1_1_1_2.TextFrame.Text = "仓库管理
    " + "Warehouse Manager";
                node1_1_1_3.TextFrame.Text = "物流部
    " + "Logistics Dept.";
                node1_1_3_1.TextFrame.Text = "生产车间
    " + "Production Dept.";
                node1_1_3_2.TextFrame.Text = "维修部
    " + "Maintenance Dept.";
                node1_1_6_1.TextFrame.Text = "生产质量管理
    " + "Production Quality Mgt.";
                node1_1_6_2.TextFrame.Text = "生产安全管理
    " + "Production Safety Mgt.";
                node1_1_6_3.TextFrame.Text = "环境管理
    " + "Environmental Mgt.";
                
    
                //保存文档
                ppt.SaveToFile("result.pptx", FileFormat.Pptx2013);
                System.Diagnostics.Process.Start("result.pptx");
            }
        }
    }

    图形创建结果:

    VB.NET

    Imports Spire.Presentation
    Imports Spire.Presentation.Diagrams
    
    
    Namespace AddSmartArt
        Class Program
            Private Shared Sub Main(args As String())
                '实例化Presentation对象
                Dim ppt As New Presentation()
    
                '设置幻灯片大小
                ppt.SlideSize.Type = SlideSizeType.Screen16x9
    
                '添加组织结构图类型的SmartArt图形,并指定位置、大小
                Dim smartArt As ISmartArt = ppt.Slides(0).Shapes.AppendSmartArt(100, 50, 750, 450, SmartArtLayoutType.OrganizationChart)
    
                '设置SmartArt的样式和颜色
                smartArt.Style = SmartArtStyleType.IntenceEffect
                smartArt.ColorStyle = SmartArtColorType.ColorfulAccentColors3to4
    
                '移除默认的形状(Node即代表SmartArt中的形状)
                For Each node As ISmartArtNode In smartArt.Nodes
                    smartArt.Nodes.RemoveNode(node)
                Next
    
                '添加形状并在其下面添加嵌套子形状
                Dim node1 As ISmartArtNode = smartArt.Nodes.AddNode()
                Dim node1_1 As ISmartArtNode = node1.ChildNodes.AddNode()
                Dim node1_1_1 As ISmartArtNode = node1_1.ChildNodes.AddNode()
                Dim node1_1_2 As ISmartArtNode = node1_1.ChildNodes.AddNode()
                Dim node1_1_3 As ISmartArtNode = node1_1.ChildNodes.AddNode()
                Dim node1_1_4 As ISmartArtNode = node1_1.ChildNodes.AddNode()
                Dim node1_1_5 As ISmartArtNode = node1_1.ChildNodes.AddNode()
                Dim node1_1_6 As ISmartArtNode = node1_1.ChildNodes.AddNode()
                Dim node1_1_1_1 As ISmartArtNode = node1_1_1.ChildNodes.AddNode()
                Dim node1_1_1_2 As ISmartArtNode = node1_1_1.ChildNodes.AddNode()
                Dim node1_1_1_3 As ISmartArtNode = node1_1_1.ChildNodes.AddNode()
                Dim node1_1_3_1 As ISmartArtNode = node1_1_3.ChildNodes.AddNode()
                Dim node1_1_3_2 As ISmartArtNode = node1_1_3.ChildNodes.AddNode()
                Dim node1_1_6_1 As ISmartArtNode = node1_1_6.ChildNodes.AddNode()
                Dim node1_1_6_2 As ISmartArtNode = node1_1_6.ChildNodes.AddNode()
                Dim node1_1_6_3 As ISmartArtNode = node1_1_6.ChildNodes.AddNode()
    
    
                '在每一个形状上添加文字
                node1.TextFrame.Text = "董事会" & vbLf + "Board of Directors"
                node1_1.TextFrame.Text = "总经理" & vbLf + "General Manager"
                node1_1_1.TextFrame.Text = "供应部" & vbLf + "Supply Dept."
                node1_1_2.TextFrame.Text = "营销部" & vbLf + "Sales Dept."
                node1_1_3.TextFrame.Text = "生产部" & vbLf + "Productive Dept."
                node1_1_4.TextFrame.Text = "财务部" & vbLf + "Finance Dept."
                node1_1_5.TextFrame.Text = "人力资源部" & vbLf + "HR Dept."
                node1_1_6.TextFrame.Text = "质检中心" & vbLf + "Quality Center"
                node1_1_1_1.TextFrame.Text = "采购部" & vbLf + "Purchase Dept."
                node1_1_1_2.TextFrame.Text = "仓库管理" & vbLf + "Warehouse Manager"
                node1_1_1_3.TextFrame.Text = "物流部" & vbLf + "Logistics Dept."
                node1_1_3_1.TextFrame.Text = "生产车间" & vbLf + "Production Dept."
                node1_1_3_2.TextFrame.Text = "维修部" & vbLf + "Maintenance Dept."
                node1_1_6_1.TextFrame.Text = "生产质量管理" & vbLf + "Production Quality Mgt."
                node1_1_6_2.TextFrame.Text = "生产安全管理" & vbLf + "Production Safety Mgt."
                node1_1_6_3.TextFrame.Text = "环境管理" & vbLf + "Environmental Mgt."
    
    
                '保存文档
                ppt.SaveToFile("result.pptx", FileFormat.Pptx2013)
                System.Diagnostics.Process.Start("result.pptx")
            End Sub
        End Class
    End Namespace

    示例2. 编辑PPT SmartArt图形

    using Spire.Presentation;
    using Spire.Presentation.Diagrams;
    
    
    namespace ModifySmartArt
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载PPT幻灯片文档
                Presentation ppt = new Presentation();
                ppt.LoadFromFile("test.pptx");
    
                //获取SmartArt图形的节点集合
                ISmartArt smartart = ppt.Slides[0].Shapes[0] as ISmartArt;
                ISmartArtNodeCollection nodes = smartart.Nodes;
    
                //更改节点内容
                nodes[1].TextFrame.Text = "新修改的节点内容";
    
                //添加超链接到节点
                nodes[2].Click = new ClickHyperlink("https://baike.baidu.com/");//添加指向网页的超链接
                nodes[3].Click = new ClickHyperlink(ppt.Slides[1]);//添加指向指定幻灯片的超链接
    
                //添加节点
                ISmartArtNode newnode = nodes[5].ChildNodes.AddNode();
                newnode.TextFrame.Text = "新添加的节点内容";
    
                //删除节点
                //nodes[0].ChildNodes[3].ChildNodes.RemoveNodeByPosition(0); 
    
                //保存到本地并打开
                ppt.SaveToFile("output.pptx", FileFormat.Pptx2010);
                System.Diagnostics.Process.Start("output.pptx");
            }
        }
    }

    添加超链接后,注意要在幻灯片播放下才可见超链接添加效果:

    VB.NET

    Imports Spire.Presentation
    Imports Spire.Presentation.Diagrams
    
    
    Namespace ModifySmartArt
        Class Program
            Private Shared Sub Main(args As String())
                '加载PPT幻灯片文档
                Dim ppt As New Presentation()
                ppt.LoadFromFile("test.pptx")
    
                '获取SmartArt图形的节点集合
                Dim smartart As ISmartArt = TryCast(ppt.Slides(0).Shapes(0), ISmartArt)
                Dim nodes As ISmartArtNodeCollection = smartart.Nodes
    
                '更改节点内容
                nodes(1).TextFrame.Text = "新修改的节点内容"
    
                '添加超链接到节点
                nodes(2).Click = New ClickHyperlink("https://baike.baidu.com/")
                '添加指向网页的超链接
                nodes(3).Click = New ClickHyperlink(ppt.Slides(1))
                '添加指向指定幻灯片的超链接
                '添加节点
                Dim newnode As ISmartArtNode = nodes(5).ChildNodes.AddNode()
                newnode.TextFrame.Text = "新添加的节点内容"
    
                '删除节点
                'nodes[0].ChildNodes[3].ChildNodes.RemoveNodeByPosition(0); 
    
                '保存到本地并打开
                ppt.SaveToFile("output.pptx", FileFormat.Pptx2010)
                System.Diagnostics.Process.Start("output.pptx")
            End Sub
        End Class
    End Namespace
  • 相关阅读:
    同一部电脑配两个git账号
    在span中,让里面的span垂直居中用这个
    三张图搞懂JavaScript的原型对象与原型链
    vue2.0 生命周期
    js中__proto__和prototype的区别和关系?
    【转】css 包含块
    【转】BFC(block formating context)块级格式化上下文
    javascript中函数的5个高级技巧
    toString() 和 valueOf()
    桌面图标列表排列小工具
  • 原文地址:https://www.cnblogs.com/Yesi/p/13847786.html
Copyright © 2020-2023  润新知