C# код, который создает «отформатированные» слайды PowerPoint - PullRequest
1 голос
/ 04 августа 2020

Я создаю небольшую программу, которая автоматически создает уже «отформатированные» слайды. Я не могу применить lo go к мастер-слайду, чтобы реплицировать его каждый раз, когда я нажимаю на создание нового слайда в 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);

1 Ответ

0 голосов
/ 05 августа 2020

Как я пишу в своем комментарии, это код для решения моей проблемы:

...
 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

...