【问题标题】:C# code, which creates "Formatted" PowerPoint slidesC# 代码,用于创建“格式化”的 PowerPoint 幻灯片
【发布时间】: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


【解决方案1】:

我在评论中如何写,这是解决我问题的代码:

...
 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];
            pwPtnPresentazione.SlideMaster.Shapes.AddPicture(logo, MsoTriState.msoFalse, MsoTriState.msoTrue, 0, 0, 100, 25);
            pwPtnPresentazione.SlideMaster.Shapes.AddTextbox(MsoTextOrientation.msoTextOrientationHorizontal, Left: 400, Top: 110, Width: 450, Height: 450);
...

在创建演示文稿之后,将其添加到我的问题中的代码中。

实际上,我在所有演示文稿中都添加了 MasterSlide 形状的修改

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多