技术文章

了解最新技术文章

当前位置:首页>技术文章>技术文章
全部 146 常见问题 7 技术文章 139

如何在think cell中创建API文档

时间:2023-10-13   访问量:1064  标签: think-cell,测试自动化,API文档,think cell

think cell 允许您通过 API 以编程方式控制某些功能。在这里,您可以找到所有可用 API 函数的概述,以及有关如何设置开发环境以编写宏、加载项或访问它们的独立程序的一般说明。

F.1入门

think cell 的 API 已集成到 Office 自动化模型中,因此可以通过任何可用于对 Office 进行编程的语言进行访问,例如 Visual Basic for Applications (VBA) 或 C#。

think cell 的入口点是 think cell 加载项对象。可以通过集合访问它Application.COMAddIns对 think cell 的调用始终是后期绑定的,因此无需添加类型库或引用。请参阅 Microsoft 的知识库以获取解释:

在自动化中使用早期绑定和后期绑定


某些 API 函数是 PowerPoint 中 think cell 加载项对象的方法,以及 Excel 中某些 think cell 加载项对象的方法。我们将用于tcPpAddIn引用 PowerPoint 加载项和tcXlAddIn引用 Excel 加载项。

F.1.1Visual Basic 应用程序

要使用 Visual Basic for Applications (VBA) 编写宏,请使用集成到 Office 主机应用程序中的开发环境。Alt可以通过按+来访问它F11宏的定义通常包含在模块中,您可以通过Insert → Module添加该模块。Alt您可以通过按+查看为给定文档定义的所有宏F8

要指示对 think cell 加载项的方法调用是后期绑定的,您需要将包含对其引用的变量声明为Object

Dim tcaddin As Object Set tcaddin = Application.COMAddIns("thinkcell.addin").Object

默认情况下始终引用 Office 主机应用程序的类型库。如果需要访问另一个 Office 应用程序的对象模型,则需要添加其类型库作为引用。

例如,如果您想在更新 think cell 图表之前使用 PowerPoint 中的宏操作 Excel 工作表中的数据,则需要通过 VBA 开发中的工具 → 引用对话框手动添加Microsoft Excel 16.0对象环境。

注意:16.0是Office 2016及更高版本的版本号。对于 Office 2010 或 2013,您需要分别使用 14.0 或 15.0 对象库。如果您安装了多个版本的 Office,“引用”对话框将仅显示安装的最新版本的对象库。下面我们假设您使用的是 Office 2016 或更高版本。

使用Application.COMAddIns("thinkcell.addin").Object始终会获取当前 Office 主机应用程序的 think cell 加载项对象,即tcPpAddIntcXlAddIn,具体取决于您是在 PowerPoint 还是 Excel 中使用它。要获取对其他 Office 应用程序中的加载项对象的引用并访问它公开的 API 函数,请通过适当的应用程序实例获取它。

tcXlAddIn例如,要从 PowerPoint获取引用:

Dim xlapp As ObjectSet xlapp = New Excel.ApplicationDim tcXlAddIn As ObjectSet tcXlAddIn = xlapp.COMAddIns("thinkcell.addin").Object

请注意,这需要添加 Excel 对象库作为引用。

我们建议使用该Option Explicit语句,它强制显式声明所有变量,从而有助于避免常见的编程错误并改进 IntelliSense 提供的建议。您可以通过激活“工具” → “选项” → “代码设置” → “需要变量声明”将其自动添加到所有模块它包含在我们所有的代码示例中。

F.1.2C#

在开发在 Office 主机应用程序内运行的加载项和文档代码扩展以及开发独立应用程序时,您可以使用 C# 中的 think cell API。

下面我们假设您使用 Visual Studio 2017 或更高版本使用 C# 开发 Office 解决方案。有关插件开发的更具体设置说明,请参阅下一节。对于每个代码示例,我们将指示要使用哪个 Visual Studio 项目模板。

要对 think cell 加载项对象进行后期绑定的方法调用,请将包含对 think cell 加载项对象的引用的变量声明为dynamic这也是编译器在将引用声明为 时推断出的类型var,因此您可以简单地编写:

var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;

以下是对加载 think cell 的ppappPowerPoint 对象的引用。Application

要访问 Office 应用程序的对象模型,您需要添加其类型库或其主互操作程序集 (PIA) 作为对项目的引用。我们建议尽可能添加类型库,因为 Visual Studio 会自动添加对相应 PIA 的引用(如果可用),或者从类型库生成互操作程序集(如果没有)(请参阅此处

例如,为了能够获取对上述 think cell 加载项对象的引用,您需要添加在引用管理器对话框的COM →类型库选项卡中找到的Microsoft PowerPoint 16.0 对象库根据您的项目类型,可以通过右键单击“解决方案资源管理器”中的“引用”“依赖项”并选择“添加 (COM) 引用”来访问此对话框。

注意:16.0是Office 2016及更高版本的版本号。通过使用“嵌入互操作类型”选项(默认情况下为对 COM 类型库的引用启用该选项),使用此引用编译的应用程序将向后(和向前)兼容其他版本的 Office,只要使用的所有接口都存在于其版本中。对象模型。请参阅此处了解更多信息。

think cell 的 API 函数使用 COM 指示错误HRESULT其中一些会自动映射到相应的 .NET 异常类,请参阅如何:映射 HRESULT 和异常

F.1.2.1插件开发

要开发 Office 加载项或 Office 文档的代码扩展,您可以使用PowerPoint/ Excel VSTO 加载项Excel VSTO 模板/工作簿项目模板。它们是Visual Studio Office 开发人员工具的一部分,作为默认配置的一部分安装。如果这些工具和模板在您的 Visual Studio 安装中不可用,您可以添加它们,例如,转到“设置”  “应用程序” → “Visual Studio 2022” → “修改” → “其他工具集”,选中“Office/ SharePoint 开发”并单击“修改”另请参阅此处此处的 Microsoft 文档

默认情况下始终加载所选模板的 Office 主机应用程序的 PIA。如果您需要访问另一个 Office 应用程序的对象模型,则需要添加其类型库作为引用,如上所述。

注意:think cell 的 API 无法从 Office Web加载项使用(不幸的是,现在 Microsoft 简称为“Office 加载项”),因为它们无法直接与 Office 应用程序的对象模型交互,特别是无法与 COM 加载项交互诸如 think cell 之类的 ins。

F.2API参考

F.2.1使用 Excel 数据更新元素和演示模板

本部分中的函数可用于通过 Excel 中的数据以编程方式更新 think cell 元素(通常是演示文稿模板中的占位符)。UpdateChart使用作为参数传递的 Excel 范围中的数据更新由模板中指定的名称指定的 think cell 元素。另请参阅自动化简介以了解如何准备模板。

PresentationFromTemplate使用链接的 Excel 工作簿中的数据实例化演示文稿模板。另请参阅Excel 数据链接了解如何创建 Excel 链接。

本部分中的函数是Excel 中think cell插件的方法。

F.2.1.1更新图表

F.2.1.1.1 签名
编程语言
tcXlAddIn.UpdateChart( _ 
    target As Object, _ 
    strName As String, _ 
    rgData As Excel.Range, _ 
    bTransposed As Boolean _ )
C#
void tcXlAddIn.UpdateChart(
    object target,
    string strName,
    Excel.Range rgData,
    bool bTransposed);
F.2.1.1.2 描述

此函数使用 中包含的数据更新targetname中的所有元素为了使图表正确解释数据,范围必须符合其默认数据表布局或其转置版本,另请参阅从 Excel 创建图表调整数据布局分别通过设置为或 来指示是否使用默认版本或转置版本对于图表以外的元素(例如表格), 的值将被忽略。strNamergDatargDatabTransposedfalsetruebTransposed

target必须是一个Presentationor SlideRange,或者一个单一SlideMasteror CustomLayout

名称strName的匹配不区分大小写。之前必须已使用UpdateChart Name属性控件在 PowerPoint 中对其进行分配,如自动化简介中所述。

为了确保定位到正确的元素,请确保它们是唯一在作为 传递的对象中将其UpdateChart 名称设置为 的元素strNamepres

如果在调用此函数时目标元素链接到 Excel 数据范围,则该链接将被破坏。之后,该元素将不会链接到任何 Excel 区域。

F.2.1.1.3 示例

要使用这些示例,请按照自动化简介中所述准备演示文稿,并将其另存为C:SamplesUpdateChart emplate.pptx.

编程语言

要使用此示例,请将其添加到 Excel 工作簿中的模块中。

它需要引用Microsoft PowerPoint 16.0 对象库有关详细信息,请参阅Visual Basic for Applications )。

在工作簿中运行将使用其第一个工作表UpdateChart_Sample范围内包含的数据更新演示模板中的图表。A1:D5

Option Explicit 
 Sub UpdateChart_Sample() 
    ' Get the range containing the new data 
    Dim rng As Excel.Range 
    Set rng = ActiveWorkbook.Sheets(1).Range("A1:D5") 
    ' Get the think cell add-in object 
    Dim tcXlAddIn As Object 
    Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object 
    ' Get a PowerPoint instance. Hold on to this 
    ' object as long as you want to access the 
    ' generated presentations. There can only be a 
    ' single PowerPoint instance. If there is no 
    ' PowerPoint running, one will be started. 
    ' Otherwise the existing one is used.
    Dim ppapp As Object 
    Set ppapp = New PowerPoint.Application 
    Dim pres As PowerPoint.Presentation 
    ' PowerPoint window visible 
    ' Set pres = ppapp.Presentations.Open( _ 
    '  Filename:="C:\Samples\UpdateChart\template.pptx", _
    '  Untitled:=msoTrue) 
    ' PowerPoint window invisible 
    Set pres = ppapp.Presentations.Open( _
    Filename:="C:\Samples\UpdateChart\template.pptx", _
    Untitled:=msoTrue, _
    WithWindow:=msoFalse)
    Call tcXlAddIn.UpdateChart(pres, "Chart1", rng, False) 
    ' Save the updated presentation 
    pres.SaveAs ("C:\Samples\UpdateChart\template_updated.pptx") 
    pres.Close 
    ppapp.Quit End Sub
C#

Program.cs要使用此示例,请将C#控制台应用程序项目模板中的代码替换为它。

它需要引用Microsoft PowerPoint 16.0 对象库Microsoft Excel 16.0 对象库Microsoft Office 16.0 对象库(有关详细信息,请参阅C#)。

运行生成的应用程序将更新演示模板中的图表,以包含名为“Series 1”且值为 1、2、3 的单个系列,并将结果保存为template_updated.pptx.

using Excel = Microsoft.Office.Interop.Excel;using PowerPoint = Microsoft.Office.Interop.PowerPoint;using Office = Microsoft.Office.Core;namespace ConsoleApplication_UpdateChart{
    class Program
    {
        static void Main()
        {
            Excel.Application xlapp = new Excel.Application { Visible = true };
            Excel.Workbook workbook = xlapp.Workbooks.Add(1);
            Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1];
            worksheet.Cells[3, 1] = "Series 1";
            worksheet.Cells[3, 2] = 1;
            worksheet.Cells[3, 3] = 2;
            worksheet.Cells[3, 4] = 3;
            PowerPoint.Application ppapp = new PowerPoint.Application();
            PowerPoint.Presentation presentation = ppapp.Presentations.Open(
                    "C:\Samples\UpdateChart\template.pptx",
                    Office.MsoTriState.msoFalse,
                    Office.MsoTriState.msoTrue
            );
            var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
            tcXlAddIn.UpdateChart(
                presentation,
                "Chart1",
                worksheet.get_Range("A1", "D3"),
                false
            );
            presentation.SaveAs("C:\Samples\UpdateChart\template_updated.pptx");
            presentation.Close();
            ppapp.Quit();
            workbook.Close(false);
            xlapp.Quit();
        }
    }}

F.2.1.2模板演示

F.2.1.2.1 签名
编程语言
tcXlAddIn.PresentationFromTemplate( _ 
    wb As Excel.Workbook, _ 
    strTemplate As String, _ 
    ppapp As PowerPoint.Application _ ) As PowerPoint.Presentation
C#
PowerPoint.Presentation tcXlAddIn.PresentationFromTemplate(
    Excel.Workbook wb,
    string strTemplate,
    PowerPoint.Application ppapp);
F.2.1.2.2 描述

wb此函数使用 Excel 工作簿和带有文件名的模板之间的数据链接,strTemplate通过使用链接到的范围中的数据更新链接元素来实例化该模板。结果是 PowerPoint 实例中的一个新演示文稿ppapp

strTemplate可以是完整路径,也可以是相对路径,相对于 Excel 工作簿文件的位置wb

strTemplate其中链接到 Excel 工作簿的所有元素wb都会更新(无论它们是否设置为自动更新)。在生成的演示文稿中,它们的数据链接被破坏,以防止对这些元素进行进一步更改。

strTemplate链接到 Excel 工作簿以外的元素wb保持不变并仍然链接,因此可以通过将此函数的结果保存为新模板,然后对下一个工作簿再次调用此函数来更新多个 Excel 工作簿的链接。

如果要使用 Excel 链接控制图表段的颜色或表格单元格的格式,您可以将配色方案设置为使用数据表填充在顶部(请参阅配色方案)或使用数据表...选项(请参阅格式化表)分别。同样,要使用 Excel 链接控制数字格式,请将其设置为使用 Excel 格式(请参阅数字格式)。

在调用之前,请确保在 Excel 中设置相关的格式选项和各个单元格的数字格式PresentationFromTemplate

F.2.1.2.3 示例

要使用这些示例,请首先创建一个演示文稿,其中包含链接到G1:K4Excel 工作簿中第一个工作表范围的堆积图表,如从 Excel 创建图表中所述。将生成的演示文稿C:SamplesPresentationFromTemplate emplate.pptx和工作簿保存data.xlsx在同一目录中。

编程语言

data.xlsx要使用此示例,请将其添加到如上所述准备的Excel 工作簿中的模块中。

它需要引用Microsoft PowerPoint 16.0 对象库有关详细信息,请参阅Visual Basic for Applications )。

运行PresentationFromTemplate_Sample将更改 cell 中的值Sheet1!H3,该值链接到 中包含的图表第一个系列的第一个值template.pptx,从i=110,创建一个新的演示文稿,模板中的图表更新为包含该值,并且未链接到不再需要工作簿,并将其保存在与output_i.pptx模板相同的目录中。

Option ExplicitSub PresentationFromTemplate_Sample()
    ' Get the range to modify. It is more efficient
    ' to do this once rather than within the loop.
    Dim rng As Excel.Range
    Set rng = ActiveWorkbook.Sheets(1).Cells(3, 8)
    ' Get the think cell add-in object
    Dim tcXlAddIn As Object
    Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object
    ' Get a PowerPoint instance. Hold on to this
    ' object as long as you want to access the
    ' generated presentations. There can only be a
    ' single PowerPoint instance. If there is no
    ' PowerPoint running, one will be started.
    ' Otherwise the existing one is used.
    Dim ppapp As Object
    Set ppapp = New PowerPoint.Application
    Dim i As Integer
    For i = 1 To 10
        ' Modify the range value.
        ' Note: Avoid selecting the cell prior to
        ' changing it. It is very slow and has
        ' undesirable side-effects.
        ' BAD:
        ' rng.Select
        ' ActiveWindow.Selection.Value = 0
        ' GOOD:
        rng.Value = i
        ' Generate a new presentation based on the
        ' linked template.
        Dim pres As PowerPoint.Presentation
        Set pres = tcXlAddIn.PresentationFromTemplate( _
            Excel.ActiveWorkbook, "template.pptx", ppapp _
        )
        ' If you want to modify the new presentation
        ' before saving it this is the place to do it.
        
        ' Save the new presentation
        pres.SaveAs "C:SamplesPresentationFromTemplateoutput_" & i & ".pptx"
        
        ' Explicitly close the presentation when we
        ' are done with it to free its memory.
        ' Letting the object go out of scope is not
        ' sufficient.
        pres.Close
    NextEnd Sub
C#

Program.cs要使用此示例,请将C#控制台应用程序项目模板中的代码替换为它。

它需要引用Microsoft PowerPoint 16.0 对象库Microsoft Excel 16.0 对象库Microsoft Office 16.0 对象库(有关详细信息,请参阅C#)。

运行生成的应用程序将明显打开 Excel,加载工作簿data.xlsx,更改单元格中的值H3,该值链接到 中包含的图表第一个系列的第一个值template.pptx,从i=110,创建一个新的演示文稿,并更新模板中的图表包含该值,并且该值不再链接到工作簿,并将其保存在与output_i.pptx模板相同的目录中。

using PowerPoint = Microsoft.Office.Interop.PowerPoint;using Excel = Microsoft.Office.Interop.Excel;namespace ConsoleApplication_PresentationFromTemplate{
    class Program
    {
        static void Main()
        {
            var xlapp = new Excel.Application { Visible = true };
            var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object;
            var workbook = xlapp.Workbooks.Open("C:\Samples\PresentationFromTemplate\data.xlsx");
            var ppapp = new PowerPoint.Application();
            for (var i = 1; i <= 10; ++i)
            {
                workbook.Sheets[1].Cells[3, 8] = i;
                PowerPoint.Presentation presentation = tcXlAddIn.PresentationFromTemplate(
                    workbook,
                    "C:\Samples\PresentationFromTemplate\template.pptx",
                    ppapp
                );
                presentation.SaveAs("C:\Samples\PresentationFromTemplate\output_" + i + ".pptx");
                presentation.Close();
            }
            ppapp.Quit();
            workbook.Close(false);
            xlapp.Quit();
        }
    }}

F.2.2控制风格

本部分中的函数可用于以编程方式加载、检查和删除 think cell 样式。LoadStyle将样式从样式文件加载到母版幻灯片或单个自定义布局中。LoadStyleForRegion将样式文件中的样式加载到自定义布局的特定区域中。GetStyleName返回加载到主布局或自定义布局中的样式的名称。RemoveStyles从自定义布局中删除所有样式。

有关创建和编辑样式的详细信息,请参阅创建 think cell 样式和样式文件格式。有关加载样式文件的更多信息,请参阅加载样式文件。

本部分中的函数是PowerPoint 中think cell插件的方法。

F.2.2.1加载样式

F.2.2.1.1 签名
编程语言
tcPpAddIn.LoadStyle( _ 
    CustomLayoutOrMaster As Object, _ 
    FileName As String )
C#
void tcPpAddIn.LoadStyle(
    object CustomLayoutOrMaster,
    string FileName);
F.2.2.1.2 说明

此函数将样式文件中包含的样式加载FileName到通过参数指定的主布局或自定义布局中CustomLayoutOrMaster

CustomLayoutOrMaster必须是CustomLayoutMaster

当应用于已设置区域样式的自定义布局时(请参阅LoadStyleForRegion),区域样式将被删除。这意味着在加载仅限于某个区域的样式之前,您需要使用此函数加载应应用于幻灯片其余部分的样式。

当应用于母版时,加载到该母版中包含的自定义布局中的任何样式(区域性的和无限制的)都将被删除。这意味着,在使用此函数加载应用于特定自定义布局的样式之前,您需要将应用于没有特定样式的自定义布局的样式加载到母版中。

F.2.2.1.3 示例
编程语言

要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。

Option Explicit
 Sub LoadStyle_Sample() 
    ' Get the think cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 
    Dim master As Master
    Set master = Application.ActivePresentation.Designs(1).SlideMaster
    Dim style As String
    style = "C:somepathstylesstyle.xml"
    Call tcPpAddIn.LoadStyle(master, style)End Sub

F.2.2.2加载区域样式

F.2.2.2.1 签名
编程语言
tcPpAddIn.LoadStyleForRegion( _ 
    CustomLayout As PowerPoint.CustomLayout, _ 
    FileName As String, _
    Left as Single, _
    Top as Single, _
    Width as Single, _
    Height as Single _)
C#
void tcPpAddIn.LoadStyleForRegion(
    PowerPoint.CustomLayout CustomLayout,
    string FileName,
    float Left,
    float Top,
    float Width,
    float Height);
F.2.2.2.2 说明

此函数将样式文件加载FileName到自定义布局中,并将其限制在由,CustomLayout给定的区域在幻灯片的其余部分,将应用加载到母版中的样式或之前加载到自定义布局中的样式LeftTopWidthHeightLoadStyle

参数LeftTopWidthHeight以 PowerPoint 点给出。LeftTop分别指定该区域的左边缘和上边缘与自定义布局的左边缘和上边缘的距离。通常您会将它们设置为幻灯片总高度和宽度的分数。例如,对于覆盖自定义布局右侧三分之二的区域,您可以设置

Left = CustomLayout.Width / 3Top = 0Width = CustomLayout.Width * 2 / 3Height = CustomLayout.Height

您还可以手动将形状添加到幻灯片或自定义布局,以编程方式查询其属性LeftTopWidth,Height并使用值LoadStyleForRegion将样式限制为形状覆盖的同一区域。

think cell 每个自定义布局最多支持两种样式。一个设置为LoadStyle并涵盖不限于区域的所有内容,另一个设置为LoadStyleForRegion

F.2.2.2.3 示例
编程语言

要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。

Option Explicit
 Sub LoadStyleForRegion_Sample() 
    ' Get the think cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 
    Dim layout As CustomLayout
    Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2)
    ' Define a region covering the left half of the custom layout
    Dim left, top, width, height As Single
    left = 0
    top = 0
    width = layout.Width / 2
    height = layout.Height
    Dim style As String
    style = "C:somepathstylesstyle.xml"
    Call tcPpAddIn.LoadStyleForRegion(layout, style, left, top, width, height)End Sub

F.2.2.3获取样式名称

think cell 13 及更高版本受支持。

F.2.2.3.1 签名
编程语言
tcPpAddIn.GetStyleName( _ 
    CustomLayoutOrMaster As Object _ ) As String
C#
string tcPpAddIn.GetStyleName(
    object CustomLayoutOrMaster);
F.2.2.3.2 说明

CustomLayout此函数返回加载到或 或 中的样式的名称这与相应样式文件的元素属性中指定的名称相同(请参阅style)。Master CustomLayoutOrMastername<style>

当没有样式加载到 时,它返回一个空字符串CustomLayoutOrMaster请注意,当 think cell 处于活动状态时,母版中始终会加载样式,并且样式名称不能为空。

如果为 a 返回名称,则它是使用LoadStyleCustomLayout加载到其中的样式的名称,而不是使用LoadStyleForRegion加载的样式的名称(如果有)。

F.2.2.3.3 示例
编程语言

要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。

Option ExplicitSub GetStyleName_Sample()
    ' Get the think cell add-in object 
    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object
    
    ' Get the Master of the first slide of the current presentation
    Dim master As Master
    Set master = Application.ActivePresentation.Slides(1).Master
    
    ' Print the name of the style loaded to the debug console
    Dim name As String
    name = tcPpAddIn.GetStyleName(master)
    Debug.Print nameEnd Sub

F.2.2.4删除样式

F.2.2.4.1 签名
编程语言
tcPpAddIn.RemoveStyles( _ 
    CustomLayout As PowerPoint.CustomLayout _ )
C#
void tcPpAddIn.RemoveStyles(
    PowerPoint.CustomLayout CustomLayout);
F.2.2.4.2 说明

此函数从自定义布局中删除所有样式CustomLayout然后,应用加载到母版中的样式。可能会有一种样式加载到自定义布局中,而另一种样式则限制在自定义布局的特定区域。RemoveStyles删除所有样式时,两者都将被删除。加载到母版中的样式无法删除,因为始终需要有一个与母版关联的有效样式。它可以用不同的样式文件覆盖。

F.2.2.4.3 示例
编程语言

要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。

Option Explicit
 Sub RemoveStyles_Sample() 
    ' Get the think cell add-in object 
    Dim tcPpAddIn As Object 
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object 
    Dim layout As CustomLayout
    Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2)
    Call tcPpAddIn.RemoveStyles(layout)End Sub

F.2.3导入 Mekko Graphics 图表

本部分中的函数可用于以编程方式将使用 Mekko Graphics 创建的图表导入到 think cell 并进行检查。ImportMekkoGraphicsCharts将 Mekko Graphics 图表替换为等效的 think cell 图表。GetMekkoGraphicsXML提取 Mekko Graphics 图表的 XML 定义。

本部分中的函数是PowerPoint 中think cell插件的方法。

F.2.3.1导入Mekko图形图表

think cell 13 及更高版本受支持。

F.2.3.1.1 签名
编程语言
tcPpAddIn.ImportMekkoGraphicsCharts ( _
    ashp As PowerPoint.Shape() _) As PowerPoint.Slide
C#
PowerPoint.Slide tcPpAddIn.ImportMekkoGraphicsCharts(
    PowerPoint.Shape[] ashp);
F.2.3.1.2 说明

此函数将传递给它的 s 数组中的所有 Mekko Graphics 图表替换Shape为等效的 think cell 图表。这些形状必须全部位于同一张幻灯片上。在修改幻灯片之前,该函数将复制未修改的幻灯片并将其直接插入到修改后的版本之后。

该函数返回对此副本的引用(如果已创建)。

如果演示文稿未修改,例如因为数组不包含任何 Mekko Graphics 图表,则它返回Nothing/ 。null

F.2.3.1.3 示例
编程语言

要使用此示例,请将其添加到 PowerPoint 中的模块(有关详细信息,请参阅Visual Basic for Applications)。

运行ImportAll演示文稿时将浏览演示文稿中的幻灯片,并将所有可见的 Mekko Graphics 图表替换为等效的 think cell 图表,并在修改之前为包含一张幻灯片的每张幻灯片制作一份副本。

Option ExplicitSub ImportAll()
    ' Get reference to think cell Object
    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object
    ' Iterate over copy of original Slides to avoid
    ' iterating over copies inserted by ImportMekkoGraphicsCharts again
    Dim SlidesCopy As New Collection
    Dim Slide As PowerPoint.Slide
    For Each Slide In ActivePresentation.Slides
        SlidesCopy.Add Slide
    Next Slide
    
    For Each Slide In SlidesCopy
    
        ' Construct Array containing only visible shapes on slide
        
        Dim visibleShapes() As PowerPoint.Shape
        ReDim visibleShapes(1 To Slide.Shapes.Count)
        Dim shapeIndex As Long
        For shapeIndex = 1 To Slide.Shapes.Count
            If Slide.Shapes(shapeIndex).Visible Then
                Set visibleShapes(shapeIndex) = Slide.Shapes(shapeIndex)
            End If
        Next shapeIndex
        
        ' Pass Array to ImportMekkoGraphics and store return value
        
        Dim CopySlide As PowerPoint.Slide
        Set CopySlide = tcPpAddIn.ImportMekkoGraphicsCharts(visibleShapes)
        
        ' If Slide was modified...
        If Not CopySlide Is Nothing Then
        ' ... do things with copy of unmodified slide
        End If
    Next SlideEnd Sub
C#

要使用此示例,请将此方法添加到ThisAddInC# PowerPoint VSTO 外接程序项目模板的类中(有关详细信息,请参阅C#外接程序开发)。

private void ImportAll(PowerPoint.Presentation presentation)
    {
        var tcPpAddIn = presentation.Application.COMAddIns.Item("thinkcell.addin").Object;
        foreach (PowerPoint.Slide slide in presentation.Slides.Cast<PowerPoint.Slide>().ToList())
        {
            PowerPoint.Slide slideCopy = tcPpAddIn.ImportMekkoGraphicsCharts(
                slide.Shapes.Cast<PowerPoint.Shape>().ToArray()
            );
        }
    }

将以下行添加到要在打开的每个演示文稿上ThisAddIn_Startup运行的方法:ImportAll

Application.PresentationOpen += new PowerPoint.EApplication_PresentationOpenEventHandler(ImportAll);

F.2.3.2GetMekkoGraphicsXML

think cell 13 及更高版本受支持。

F.2.3.2.1 签名
编程语言
tcPpAddIn.GetMekkoGraphicsXML ( _
    shp As PowerPoint.Shape _) As String
C#
string tcPpAddIn.GetMekkoGraphicsXML(
    PowerPoint.Shape shp);
F.2.3.2.2 描述

shp此函数以字符串形式返回 Mekko Graphics 图表的 XML 。它不会修改传递给它的形状。

如果shp不是 Mekko Graphics 图表,E_INVALIDARG (0x80070057)则会引发错误。

F.2.3.2.3 示例
编程语言

要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。

Option ExplicitSub GetMekkoGraphicsXMLOfAllShapes()
    ' Get reference to think cell Object
    Dim tcPpAddIn As Object
    Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object
    ' Go through the slides in the presentation and
    ' output the XML of each Mekko Graphics chart on the slide
    ' to the debug console
    Dim slide As PowerPoint.slide
    For Each slide In Application.ActivePresentation.Slides
        Dim shape As PowerPoint.shape
        For Each shape In slide.Shapes
            Debug.Print tcPpAddIn.GetMekkoGraphicsXML(shape)
        Next shape
    Next slideEnd Sub
C#

要使用此示例,请将控制台应用程序Program.cs中的代码替换为它。

它需要引用Microsoft PowerPoint 16.0 对象库Microsoft Office 16.0 对象库(有关详细信息,请参阅C#)。

运行该应用程序将浏览其中的演示文稿C:SamplesGetMekkoGraphicsXMLpresentation.pptx并将其中包含的 Mekko Graphics 图表的 XML 打印到控制台。

using PowerPoint = Microsoft.Office.Interop.PowerPoint;using Office = Microsoft.Office.Core;namespace Sample{
    class Program
    {
        static void Main()
        {
            var ppapp = new PowerPoint.Application();
            var presentation = ppapp.Presentations.Open(
                "C:\Samples\GetMekkoGraphicsXML\presentation.pptx",
                /*ReadOnly*/Office.MsoTriState.msoTrue,
                /*Untitled*/Office.MsoTriState.msoTrue,
                /*WithWindow*/Office.MsoTriState.msoFalse
            );
            var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;
            foreach (PowerPoint.Slide slide in presentation.Slides)
            {
                foreach (PowerPoint.Shape shape in slide.Shapes)
                {
                    string xml = tcPpAddIn.GetMekkoGraphicsXML(shape);
                    Console.WriteLine(xml);
                }
            }
            presentation.Close();
            ppapp.Quit();
        }
    }}

F.2.4各种各样的

本部分中的函数是PowerPoint 中think cell插件的方法。

F.2.4.1开始表插入

think cell 13 及更高版本受支持。

F.2.4.1.1 签名
编程语言
tcPpAddIn.StartTableInsertion()
C#
void tcPpAddIn.StartTableInsertion();
F.2.4.1.2 说明

调用此方法与单击PowerPoint 中“元素”菜单中的“表”具有相同的效果。


上一篇:think cell中的键盘快捷键

下一篇:think cell如何在折线图中创建线性趋势线?

发表评论:

评论记录:

未查询到任何数据!

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部