使用互操作在PowerPoint中的句子中间添加文本

时间:2017-01-18 10:00:35

标签: c# interop office-interop office-addins

我写了一些简单的代码,添加了一个文本框,一些文本和样式。我添加的texbox说"这是我的新文字"。在这个文本框中间的某个地方,我想添加另一段文字说"更多文字",例如"这是我的更多文字新文字"。我不知道如何才能实现这一目标,因为我在使用互操作方面相当陌生,而且我甚至不确定是否可能。

我的代码如下:

Application pptApplication = new Application();

Microsoft.Office.Interop.PowerPoint.Slides slides;
Microsoft.Office.Interop.PowerPoint.Slide slide;
Microsoft.Office.Interop.PowerPoint.Shape shp;
Font2 font2;
Microsoft.Office.Interop.PowerPoint.TextRange objText;

TextRange2 objText2;

// Create the Presentation File
Presentation pptPresentation = pptApplication.Presentations.Open(@"C:\Users\Craig\Documents\AddText.pptx");

Microsoft.Office.Interop.PowerPoint.CustomLayout customLayout = pptPresentation.SlideMaster.CustomLayouts[Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText];

// Create new Slide
slides = pptPresentation.Slides;
Microsoft.Office.Interop.PowerPoint.Slide firstSlide = Globals.ThisAddIn
    .Application.ActivePresentation.Slides[1];
shp= firstSlide.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, Left: 30, Top: 30, Width:340, Height: 340);

shp.TextFrame.TextRange.Text = "This is my new text";
shp.TextEffect.FontName = "Arial";
shp.TextEffect.FontSize = 32;

pptPresentation.Save();

1 个答案:

答案 0 :(得分:0)

以下内容应该有效。我没有具体测试过这段代码,但我最近在PowerPoint互操作中做了其他事情,这对我有用。

<?php

require_once '../dbConnect.php';


function getUserRoles() {
    $stmt = $mysqli->prepare("SELECT ur.roleName from user_role as ur where ur.userId = ?");

    $stmt->bind_param("i", $_SESSION["id"]);
    $stmt->execute();

    $stmt->bind_result($roleName);

    $roles = array();

    $stmt->bind_result($roleName);

    while ( $stmt->fetch() ) {
        $roles[] = $roleName;
    }

    return $roles;
}
?>