Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用互操作在PowerPoint中的句子中间添加文本_C#_Interop_Office Interop_Office Addins - Fatal编程技术网

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

C# 使用互操作在PowerPoint中的句子中间添加文本,c#,interop,office-interop,office-addins,C#,Interop,Office Interop,Office Addins,我写了一些简单的代码,添加了一个文本框、一些文本和样式。我添加的文本框显示“这是我的新文本”。在这个文本框中间的某个地方,我想添加另外一段文字,上面写着“更多的文本”,例如“这是我的更多文本新文本”。我不确定如何实现这一点,因为我对使用互操作还相当陌生,甚至不确定这是否可能 我的代码如下: Application pptApplication = new Application(); Microsoft.Office.Interop.PowerPoint.Slides slides; Micr

我写了一些简单的代码,添加了一个文本框、一些文本和样式。我添加的文本框显示“这是我的新文本”。在这个文本框中间的某个地方,我想添加另外一段文字,上面写着“更多的文本”,例如“这是我的更多文本新文本”。我不确定如何实现这一点,因为我对使用互操作还相当陌生,甚至不确定这是否可能

我的代码如下:

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();

以下几点应该行得通。我还没有专门测试过这段代码,但最近我在PowerPoint interop中做了其他事情,这对我很有用

shp.TextFrame.TextRange.Text = "This is my new text";
var start = shp.TextFrame.TextRange.Find("This is my ");
start.InsertAfter("more text ");

您应该使用更多的用法来提高代码的可读性,例如使用Microsoft.Office.Interop.PowerPoint。另外,为什么要在顶部声明所有变量,例如,
幻灯片
您可以在注释“创建新幻灯片”后立即声明。此代码只是在我的文本项目中,这就是为什么它有点凌乱您不会通过编写凌乱的代码来节省时间的原因。我的建议是试着养成总是写干净代码的习惯。从长远来看,你会变得同样快甚至更快。