【发布时间】:2020-08-04 08:59:28
【问题描述】:
我正在创建一个小程序,它会自动创建已经“格式化”的幻灯片我无法将徽标应用到母版幻灯片,以便在每次单击 PowerPoint 上的创建新幻灯片时复制它。
我正在使用Microsoft.Core.Interop.PowerPoint。
这是我的代码:
string logo = @"C:...\Desktop\Logo_base.png";
string[] pwPnt = {
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, "
Application pwPntApplicazione = new Application();
Presentation pwPtnPresentazione = pwPntApplicazione.Presentations.Add(Microsoft.Office.Core.MsoTriState.msoTrue);
string themeName = @"D:...\tf16401370.pptx";
Microsoft.Office.Interop.PowerPoint.Master master;
Microsoft.Office.Interop.PowerPoint.Slides slides;
Microsoft.Office.Interop.PowerPoint._Slide slide;
Microsoft.Office.Interop.PowerPoint.TextRange objText;
Microsoft.Office.Interop.PowerPoint.CustomLayout customLayout =
pwPtnPresentazione.SlideMaster.CustomLayouts[Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText];
slides = pwPtnPresentazione.Slides;
slide = slides.AddSlide(1, customLayout);
slide.FollowMasterBackground = MsoTriState.msoFalse;
slide.ApplyTemplate(themeName);
Microsoft.Office.Interop.PowerPoint.Shape shape = slide.Shapes[2];
slide.Shapes.AddPicture(logo, Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoTrue, shape.Left = -0, shape.Top = -1, shape.Width = 100, shape.Height = 30);
objText = slide.Shapes[1].TextFrame.TextRange;
objText.Text = "TITOLO";
//objText.Text = $"TITOLO {i + 1}";
objText.Font.Name = "Arial";
objText.Font.Size = 42;
Microsoft.Office.Interop.PowerPoint.Shape shp;
shp = slide.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, Left: 400, Top: 110, Width: 450, Height: 450);
//shp.TextFrame.TextRange.Text = $"{pwPnt[i]}";
shp.TextEffect.FontName = "Arial";
shp.TextEffect.FontSize = 26;
shp.TextEffect.Alignment = MsoTextEffectAlignment.msoTextEffectAlignmentCentered;
pwPtnPresentazione.SaveAs(C:..Slide.pptx",
Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault,
Microsoft.Office.Core.MsoTriState.msoTrue);
【问题讨论】:
-
所以您的问题是您希望幻灯片具有母版幻灯片的背景,这不起作用?如果是这样,请尝试设置 slide.FollowMasterBackground = MsoTriState.msoTrue;
-
不是真的,我设置了默认主题,幻灯片采用它,但是在演示期间,然后在 PowerPoint 运行时,如果我单击新幻灯片,我尝试插入的徽标会消失。因此,我想将徽标“添加”到模板中,以免在用户创建新幻灯片时丢失。
-
我做到了,谢谢@MarkWittmann,对不起我不完美的英语。这是工作代码:
code... pwPtnPresentazione.SlideMaster.CustomLayouts[Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText]; pwPtnPresentazione.SlideMaster.Shapes.AddPicture(logo, MsoTriState.msoFalse, MsoTriState.msoTrue, 0, 0, 100, 25); ... ` -
太棒了!其他用户也可能有这个问题,所以如果你愿意,你可以把它作为答案发布,而不仅仅是评论。您也可以接受自己的答案,但必须等待 48 小时才能这样做。
标签: c# powerpoint interop