Zum Fußzeileninhalt springen
PPT-TOOLS
Wie man C# verwendet, um eine PowerPoint-Präsentation zu erstellen

Wie man PowerPoint-Präsentationen programmatisch in C# erstellt und automatisiert

Das manuelle Erstellen derselben PowerPoint-Präsentation Woche für Woche ist eine mühsame, fehleranfällige Aufgabe, die kein Entwickler gerne durchführt. Egal, ob es sich um wöchentliche Verkaufsberichte, monatliche Finanzberichte oder personalisierte Kundenangebote handelt, der Prozess ist reif für die Automatisierung. In der .NET-Welt war Microsoft Office Interop jahrelang die bevorzugte Lösung, eine Technologie, die die programmgesteuerte Steuerung von Office-Anwendungen ermöglicht. Diese Methode hat jedoch erhebliche Nachteile: Sie erfordert eine lizenzierte Version von Microsoft Office auf dem Server, ist in Serverumgebungen notorisch instabil und schließt moderne, plattformübergreifende Bereitstellungen auf Linux, macOS oder in Docker-Containern komplett aus.

Glücklicherweise gibt es einen besseren Weg. Dieses Tutorial zeigt Ihnen, wie Sie PowerPoint-Präsentationen in C# mit IronPPT für .NET programmgesteuert erstellen können, einer leistungsstarken und leichten Bibliothek für die moderne Entwicklung. Wir werden untersuchen, wie alles von der Erstellung eines einfachen Foliensatzes bis zur Generierung komplexer, datengesteuerter Präsentationen aus Vorlagen mit Tabellen und Diagrammen automatisiert werden kann. Mit IronPPT können Sie schnelle, skalierbare und zuverlässige Präsentationsautomations-Workflows erstellen, die überall laufen, ohne Abhängigkeit von Microsoft Office.

IronPPT - C# Presentation Library Die IronPPT für .NET-Bibliothek ermöglicht es Entwicklern, PowerPoint-Dateien in C# programmgesteuert zu erstellen und zu verwalten.

Wie beginne ich mit der PowerPoint-Generierung in C#?

Der Einstieg in die PowerPoint-Automatisierung in C# ist unkompliziert. IronPPT für .NET wird als NuGet-Paket verteilt, das in wenigen Sekunden direkt in Ihr Visual Studio-Projekt installiert werden kann.

Schritt 1: Installieren Sie die IronPPT-Bibliothek

Öffnen Sie die Paket-Manager-Konsole in Visual Studio (Tools > NuGet Package Manager > Package Manager Console) und geben Sie den folgenden Befehl ein:

Install-Package IronPPT

Alternativ können Sie nach "IronPPT" im NuGet-Paket-Manager-GUI suchen und es von dort installieren.

Installation von IronPPT über den NuGet Package Manager-Bildschirm Der NuGet-Paket-Manager in Visual Studio zeigt die Installation der IronPPT-Bibliothek.

Schritt 2: Erstellen und Speichern Sie Ihre erste Präsentation

Mit der installierten Bibliothek können Sie Ihre erste PowerPoint-Präsentation mit nur wenigen C#-Codezeilen erstellen. Die Kernklasse für jede Präsentation ist PresentationDocument.

Das folgende Code-Snippet initialisiert eine neue Präsentation, fügt eine einzelne Folie mit einem Titel hinzu und speichert sie als .pptx-Datei.

using IronPPT;

// Before using IronPPT, a license key is required.
// Get a free 30-day trial key at: https://ironsoftware.com/csharp/ppt/licensing/#trial-license
License.LicenseKey = "YOUR-LICENSE-KEY";

// Create a new PowerPoint presentation document
var presentation = new PresentationDocument();

// Create a new slide object
var slide = new Slide();

// Add text to the slide, which will be placed in a default textbox
slide.AddText("Hello, World! Welcome to Programmatic PowerPoint Creation.");

// Add the slide to the presentation
presentation.AddSlide(slide);

// Save the presentation to a.pptx file
presentation.Save("MyFirstPresentation.pptx");
using IronPPT;

// Before using IronPPT, a license key is required.
// Get a free 30-day trial key at: https://ironsoftware.com/csharp/ppt/licensing/#trial-license
License.LicenseKey = "YOUR-LICENSE-KEY";

// Create a new PowerPoint presentation document
var presentation = new PresentationDocument();

// Create a new slide object
var slide = new Slide();

// Add text to the slide, which will be placed in a default textbox
slide.AddText("Hello, World! Welcome to Programmatic PowerPoint Creation.");

// Add the slide to the presentation
presentation.AddSlide(slide);

// Save the presentation to a.pptx file
presentation.Save("MyFirstPresentation.pptx");
Imports IronPPT

' Before using IronPPT, a license key is required.
' Get a free 30-day trial key at: https://ironsoftware.com/csharp/ppt/licensing/#trial-license
License.LicenseKey = "YOUR-LICENSE-KEY"

' Create a new PowerPoint presentation document
Dim presentation = New PresentationDocument()

' Create a new slide object
Dim slide As New Slide()

' Add text to the slide, which will be placed in a default textbox
slide.AddText("Hello, World! Welcome to Programmatic PowerPoint Creation.")

' Add the slide to the presentation
presentation.AddSlide(slide)

' Save the presentation to a.pptx file
presentation.Save("MyFirstPresentation.pptx")
$vbLabelText   $csharpLabel

Nach Ausführung dieses Codes finden Sie eine neue Datei mit dem Namen MyFirstPresentation.pptx im Ausgabeordner Ihres Projekts. Beim Öffnen wird eine einzelne Folie mit dem hinzugefügten Text angezeigt. Dieses einfache Beispiel demonstriert den grundlegenden Workflow zur Erstellung eines Präsentationsobjekts, zur Hinzufügung von Inhalten und zum Speichern der Datei.

Leere Präsentation erstellt mit IronPPT Eine leere PowerPoint-Präsentation, die programmgesteuert mit C# und IronPPT erstellt wurde.

Wie kann ich Folien programmgesteuert hinzufügen und manipulieren?

Eine Präsentation ist eine Sammlung von Folien. IronPPT bietet eine einfache und intuitive API zur Verwaltung dieser Folien, mit der Sie sie hinzufügen, laden und wiederverwenden können, wie es Ihre Anwendung erfordert.

Laden einer vorhandenen Präsentation und Hinzufügen von Folien

Oft müssen Sie eine vorhandene Präsentation ändern, anstatt eine neue von Grund auf zu erstellen. Sie können eine .pptx-Datei von der Festplatte laden, indem Sie ihren Pfad dem PresentationDocument-Konstruktor übergeben. Sobald sie geladen ist, können Sie einfach neue Folien hinzufügen.

Das folgende Beispiel lädt die Präsentation, die wir zuvor erstellt haben, und fügt ihr eine neue, leere Folie hinzu.

using IronPPT;

// Load an existing PowerPoint presentation
var presentation = new PresentationDocument("MyFirstPresentation.pptx");

// Add a new blank slide to the end of the presentation
presentation.AddSlide();

// Save the modified presentation
presentation.Save("PresentationWithTwoSlides.pptx");
using IronPPT;

// Load an existing PowerPoint presentation
var presentation = new PresentationDocument("MyFirstPresentation.pptx");

// Add a new blank slide to the end of the presentation
presentation.AddSlide();

// Save the modified presentation
presentation.Save("PresentationWithTwoSlides.pptx");
Imports IronPPT

' Load an existing PowerPoint presentation
Private presentation = New PresentationDocument("MyFirstPresentation.pptx")

' Add a new blank slide to the end of the presentation
presentation.AddSlide()

' Save the modified presentation
presentation.Save("PresentationWithTwoSlides.pptx")
$vbLabelText   $csharpLabel

Diese Funktionalität ist besonders nützlich für Anwendungen, die im Laufe der Zeit Informationen anhängen, wie Protokollierungs- oder Statusberichterstattungssysteme.

Zwei leere Folien Die gleiche Präsentation, jetzt mit einer zweiten, leeren Folie, hinzugefügt durch C#-Code.

using IronPPT;
using IronPPT.Models;

// Loading an existing presentation file
var ppt = new PresentationDocument("output.pptx");

// Add an additional slide
ppt.AddSlide();

// Save the updated presentation
ppt.Save("output.pptx");
using IronPPT;
using IronPPT.Models;

// Loading an existing presentation file
var ppt = new PresentationDocument("output.pptx");

// Add an additional slide
ppt.AddSlide();

// Save the updated presentation
ppt.Save("output.pptx");
Imports IronPPT
Imports IronPPT.Models

' Loading an existing presentation file
Private ppt = New PresentationDocument("output.pptx")

' Add an additional slide
ppt.AddSlide()

' Save the updated presentation
ppt.Save("output.pptx")
$vbLabelText   $csharpLabel

Klons von Folien für konsistente Layouts

In vielen Geschäftsszenarien, wie der Erstellung von Berichten oder Vorschlägen, benötigen Sie mehrere Folien, die dasselbe Layout, denselben Hintergrund und Markenelemente wie Logos oder Fußzeilen teilen. Jede dieser Folien manuell im Code zu erstellen, wäre repetitiv und schwer zu warten.

Ein effizienterer Ansatz besteht darin, eine "Vorlagen"-Folie in Ihrer Präsentation zu erstellen und sie dann programmgesteuert zu klonen. Während IronPPT keine direkte Clone()-Methode in seiner öffentlichen API hat, kann dies erreicht werden, indem eine neue Folie erstellt und die gewünschten Eigenschaften und Elemente von der Vorlagenfolie kopiert werden. Ein direkterer Ansatz, oft mit Vorlagen verwendet, besteht darin, Folien vorzudesignen und sie dann mit Daten zu füllen, die wir im datengesteuerten Abschnitt behandeln werden. Dies verdeutlicht jetzt ein mächtiges Konzept zur Aufrechterhaltung der Konsistenz des Designs in Ihren generierten Präsentationen, ein Merkmal, das auch in anderen Bibliotheken wie Syncfusion zu finden ist.

Welches ist der beste Weg, um reichhaltigen Inhalt zu Folien hinzuzufügen?

Sobald Sie Ihre Folien haben, besteht der nächste Schritt darin, sie mit sinnvollem Inhalt zu füllen. IronPPT bietet ein reichhaltiges Objektmodell zum Hinzufügen und Formatieren von Text, Einfügen von Bildern und Zeichnen von Formen.

Arbeiten mit Text, Schriftarten und Absätzen

Text ist das häufigste Element in jeder Präsentation. In IronPPT wird Text durch eine Hierarchie von Objekten verwaltet: Shape (wirkt als Textfeld), Paragraph und Text. Diese Struktur bietet eine feingranulare Kontrolle über Positionierung und Stil.

Lassen Sie uns unsere Präsentation mit zwei Folien erweitern, indem wir einen stilisierten Titel zur ersten Folie und eine nummerierte Liste zur zweiten hinzufügen.

using IronPPT;
using IronPPT.Enums;
using System.Drawing;

// Load the presentation with two slides
var presentation = new PresentationDocument("PresentationWithTwoSlides.pptx");

// --- Modify the First Slide ---
Slide firstSlide = presentation.Slides;

// Clear existing text if any
firstSlide.ClearText();

// Add a title to the first slide. By default, AddText creates a textbox.
// For more control, we can create a Shape and add text to it.
Shape titleShape = firstSlide.AddShape(ShapeType.Rectangle, new Rectangle(50, 50, 860, 100));
titleShape.Fill.SetSolid(new Color("#003B5C")); // A dark blue background
Paragraph titleParagraph = titleShape.AddParagraph("Welcome to IronPPT");
titleParagraph.DefaultTextStyle.SetFont("Arial", 44).SetColor(Color.White).SetBold(true);
titleParagraph.Style.SetAlignment(TextAlignmentTypeValues.Center);

// --- Modify the Second Slide ---
Slide secondSlide = presentation.Slides;
secondSlide.AddText("Key Features", new Rectangle(50, 30, 860, 70))
   .DefaultTextStyle.SetFont("Calibri", 36).SetBold(true);

// Create a shape to act as a textbox for our bulleted list
Shape listShape = secondSlide.AddShape(ShapeType.Rectangle, new Rectangle(70, 120, 800, 300));

// Add a bulleted list
listShape.AddParagraph("Create presentations programmatically").Style.SetBullet(BulletType.Numeric);
listShape.AddParagraph("Add text, images, and shapes").Style.SetBullet(BulletType.Numeric);
listShape.AddParagraph("Style content with fonts, colors, and alignment").Style.SetBullet(BulletType.Numeric);
listShape.AddParagraph("Generate data-driven reports from templates").Style.SetBullet(BulletType.Numeric);

// Style all paragraphs in the list shape
foreach (var para in listShape.Paragraphs)
{
    para.DefaultTextStyle.SetFont("Arial", 28);
    para.Style.SetIndentation(30); // Indent the list
}

// Save the final presentation
presentation.Save("PresentationWithRichContent.pptx");
using IronPPT;
using IronPPT.Enums;
using System.Drawing;

// Load the presentation with two slides
var presentation = new PresentationDocument("PresentationWithTwoSlides.pptx");

// --- Modify the First Slide ---
Slide firstSlide = presentation.Slides;

// Clear existing text if any
firstSlide.ClearText();

// Add a title to the first slide. By default, AddText creates a textbox.
// For more control, we can create a Shape and add text to it.
Shape titleShape = firstSlide.AddShape(ShapeType.Rectangle, new Rectangle(50, 50, 860, 100));
titleShape.Fill.SetSolid(new Color("#003B5C")); // A dark blue background
Paragraph titleParagraph = titleShape.AddParagraph("Welcome to IronPPT");
titleParagraph.DefaultTextStyle.SetFont("Arial", 44).SetColor(Color.White).SetBold(true);
titleParagraph.Style.SetAlignment(TextAlignmentTypeValues.Center);

// --- Modify the Second Slide ---
Slide secondSlide = presentation.Slides;
secondSlide.AddText("Key Features", new Rectangle(50, 30, 860, 70))
   .DefaultTextStyle.SetFont("Calibri", 36).SetBold(true);

// Create a shape to act as a textbox for our bulleted list
Shape listShape = secondSlide.AddShape(ShapeType.Rectangle, new Rectangle(70, 120, 800, 300));

// Add a bulleted list
listShape.AddParagraph("Create presentations programmatically").Style.SetBullet(BulletType.Numeric);
listShape.AddParagraph("Add text, images, and shapes").Style.SetBullet(BulletType.Numeric);
listShape.AddParagraph("Style content with fonts, colors, and alignment").Style.SetBullet(BulletType.Numeric);
listShape.AddParagraph("Generate data-driven reports from templates").Style.SetBullet(BulletType.Numeric);

// Style all paragraphs in the list shape
foreach (var para in listShape.Paragraphs)
{
    para.DefaultTextStyle.SetFont("Arial", 28);
    para.Style.SetIndentation(30); // Indent the list
}

// Save the final presentation
presentation.Save("PresentationWithRichContent.pptx");
Imports IronPPT
Imports IronPPT.Enums
Imports System.Drawing

' Load the presentation with two slides
Private presentation = New PresentationDocument("PresentationWithTwoSlides.pptx")

' --- Modify the First Slide ---
Private firstSlide As Slide = presentation.Slides

' Clear existing text if any
firstSlide.ClearText()

' Add a title to the first slide. By default, AddText creates a textbox.
' For more control, we can create a Shape and add text to it.
Dim titleShape As Shape = firstSlide.AddShape(ShapeType.Rectangle, New Rectangle(50, 50, 860, 100))
titleShape.Fill.SetSolid(New Color("#003B5C")) ' A dark blue background
Dim titleParagraph As Paragraph = titleShape.AddParagraph("Welcome to IronPPT")
titleParagraph.DefaultTextStyle.SetFont("Arial", 44).SetColor(Color.White).SetBold(True)
titleParagraph.Style.SetAlignment(TextAlignmentTypeValues.Center)

' --- Modify the Second Slide ---
Dim secondSlide As Slide = presentation.Slides
secondSlide.AddText("Key Features", New Rectangle(50, 30, 860, 70)).DefaultTextStyle.SetFont("Calibri", 36).SetBold(True)

' Create a shape to act as a textbox for our bulleted list
Dim listShape As Shape = secondSlide.AddShape(ShapeType.Rectangle, New Rectangle(70, 120, 800, 300))

' Add a bulleted list
listShape.AddParagraph("Create presentations programmatically").Style.SetBullet(BulletType.Numeric)
listShape.AddParagraph("Add text, images, and shapes").Style.SetBullet(BulletType.Numeric)
listShape.AddParagraph("Style content with fonts, colors, and alignment").Style.SetBullet(BulletType.Numeric)
listShape.AddParagraph("Generate data-driven reports from templates").Style.SetBullet(BulletType.Numeric)

' Style all paragraphs in the list shape
For Each para In listShape.Paragraphs
	para.DefaultTextStyle.SetFont("Arial", 28)
	para.Style.SetIndentation(30) ' Indent the list
Next para

' Save the final presentation
presentation.Save("PresentationWithRichContent.pptx")
$vbLabelText   $csharpLabel

Dieses Beispiel zeigt mehrere zentrale Konzepte:

  • Formen als Textfelder: Wir erstellen eine Shape vom Typ Rectangle als Container für unseren Text. Dies gibt uns präzise Kontrolle über seine Position und Größe.
  • Absätze: Textinhalte werden über Paragraph-Objekte hinzugefügt.
  • Stilgebung: Die DefaultTextStyle-Eigenschaft eines Paragraph ermöglicht eine fließende Stilgebung von Schrift, Größe, Farbe und Gewicht. Die Style-Eigenschaft steuert die Absatzformatierung auf Ebenen wie Ausrichtung und Aufzählungspunkte.

Text und Textfelder hinzufügen Die erste Folie enthält nun einen stilisierten Titel, und die zweite Folie eine nummerierte Liste.

Bilder einfügen und positionieren

Visuelle Elemente wie Logos, Diagramme und Produktbilder sind unerlässlich für ansprechende Präsentationen. IronPPT erleichtert das Hinzufügen von Bildern aus einer Datei oder einem Speicherstream.

Der folgende Code fügt das Iron Software-Logo in die untere rechte Ecke unserer Titelfolie ein.

using IronPPT;
using System.Drawing;

var presentation = new PresentationDocument("PresentationWithRichContent.pptx");
Slide firstSlide = presentation.Slides;

// Load an image from a file
Image logo = new Image("iron_logo.png");

// Add the image to the slide and set its properties
var addedImage = firstSlide.AddImage(logo);
addedImage.Position = new Point(750, 450);
addedImage.Width = 150;
addedImage.Height = 75;

presentation.Save("PresentationWithImage.pptx");
using IronPPT;
using System.Drawing;

var presentation = new PresentationDocument("PresentationWithRichContent.pptx");
Slide firstSlide = presentation.Slides;

// Load an image from a file
Image logo = new Image("iron_logo.png");

// Add the image to the slide and set its properties
var addedImage = firstSlide.AddImage(logo);
addedImage.Position = new Point(750, 450);
addedImage.Width = 150;
addedImage.Height = 75;

presentation.Save("PresentationWithImage.pptx");
Imports IronPPT
Imports System.Drawing

Private presentation = New PresentationDocument("PresentationWithRichContent.pptx")
Private firstSlide As Slide = presentation.Slides

' Load an image from a file
Private logo As New Image("iron_logo.png")

' Add the image to the slide and set its properties
Private addedImage = firstSlide.AddImage(logo)
addedImage.Position = New Point(750, 450)
addedImage.Width = 150
addedImage.Height = 75

presentation.Save("PresentationWithImage.pptx")
$vbLabelText   $csharpLabel

Die Methode AddImage gibt ein Image-Objekt zurück, mit dem Sie seine Position, Width, Height und Drehung (Angle) weiter manipulieren können, nachdem es der Folie hinzugefügt wurde.

Ein Bild in die erste Folie einfügen Die Titelfolie enthält jetzt ein Bild, das in der unteren rechten Ecke positioniert ist.

Formen zeichnen und anpassen

Über Rechtecke hinaus, die als Textfelder verwendet werden, kann IronPPT eine Vielzahl von Formen zeichnen, um Ihre Folien visuell zu strukturieren und hervorzuheben. Sie können ihre Geometrie, Farben und Position steuern.

Lassen Sie uns eine dekorative Form zu unserer zweiten Folie hinzufügen, um den Inhalt visuell zu trennen.

using IronPPT;
using IronPPT.Enums;
using System.Drawing;

var presentation = new PresentationDocument("PresentationWithImage.pptx");
Slide secondSlide = presentation.Slides;

// Add a circle shape to the second slide
Shape circle = secondSlide.AddShape(ShapeType.Ellipse, new Rectangle(400, 250, 200, 200));
circle.Name = "DecorativeCircle";

// Customize the shape's appearance
circle.Fill.SetSolid(new Color("#E0F7FA")); // A light cyan color
circle.Outline.SetColor(new Color("#00796B")).SetWidth(3); // A teal outline

presentation.Save("PresentationWithShapes.pptx");
using IronPPT;
using IronPPT.Enums;
using System.Drawing;

var presentation = new PresentationDocument("PresentationWithImage.pptx");
Slide secondSlide = presentation.Slides;

// Add a circle shape to the second slide
Shape circle = secondSlide.AddShape(ShapeType.Ellipse, new Rectangle(400, 250, 200, 200));
circle.Name = "DecorativeCircle";

// Customize the shape's appearance
circle.Fill.SetSolid(new Color("#E0F7FA")); // A light cyan color
circle.Outline.SetColor(new Color("#00796B")).SetWidth(3); // A teal outline

presentation.Save("PresentationWithShapes.pptx");
Imports IronPPT
Imports IronPPT.Enums
Imports System.Drawing

Private presentation = New PresentationDocument("PresentationWithImage.pptx")
Private secondSlide As Slide = presentation.Slides

' Add a circle shape to the second slide
Private circle As Shape = secondSlide.AddShape(ShapeType.Ellipse, New Rectangle(400, 250, 200, 200))
circle.Name = "DecorativeCircle"

' Customize the shape's appearance
circle.Fill.SetSolid(New Color("#E0F7FA")) ' A light cyan color
circle.Outline.SetColor(New Color("#00796B")).SetWidth(3) ' A teal outline

presentation.Save("PresentationWithShapes.pptx")
$vbLabelText   $csharpLabel

Dieser Code fügt einen Kreis mit einer hellen Zyanfüllung und einem dunkelgrünen Umriss hinzu. Die Fähigkeit, Formen programmatisch hinzuzufügen und zu gestalten, ist wertvoll für das Erstellen von benutzerdefinierten Diagrammen, Flussdiagrammen oder einfach zur Verbesserung des visuellen Designs Ihrer automatisierten Präsentationen.

Ein gestylter Kreis Die zweite Folie zeigt jetzt einen gestylten Kreis, hinzugefügt durch C#-Code.

Wie kann ich datengesteuerte Präsentationen erstellen?

Die wahre Stärke der PowerPoint-Automatisierung liegt in der Generierung von Präsentationen aus dynamischen Datenquellen. Hier glänzt IronPPT, indem es Ihnen ermöglicht, anspruchsvolle Berichtssysteme zu erstellen, die Tabellen, Diagramme erstellen und Vorlagen im Handumdrehen füllen können. Diese Fähigkeit hebt es von grundlegenden Bibliotheken ab und positioniert es als starken Konkurrenten für Tools wie Aspose und Syncfusion, die ebenfalls datengesteuerte Funktionen hervorheben.

Vorlagen für dynamische Berichte verwenden

Einer der effektivsten Workflows besteht darin, eine Master-PowerPoint-Vorlage mit vordefinierten Layouts und Platzhaltertext zu erstellen. Ihre C#-Anwendung kann dann diese Vorlage laden und die Platzhalter durch Daten aus einer Datenbank, API oder einer anderen Quelle ersetzen.

Schritt 1: Erstellen Sie eine PowerPoint-Vorlage

Zuerst erstellen Sie eine PowerPoint-Datei namens ReportTemplate.pptx. Fügen Sie einer Folie Textfelder mit eindeutigen Platzhalterzeichenfolgen hinzu, wie {{ClientName}}, {{ReportDate}} und {{TotalSales}}.

Schritt 2: Vorlage in C# ausfüllen

Der folgende Code zeigt, wie diese Vorlage geladen, einige Daten definiert und dann durch die Formen auf der Folie iteriert wird, um einen Textersatz durchzuführen.

using IronPPT;
using System.Collections.Generic;

// --- Sample Data ---
var reportData = new Dictionary<string, string>
{
    { "{{ClientName}}", "Global Tech Inc." },
    { "{{ReportDate}}", System.DateTime.Now.ToShortDateString() },
    { "{{TotalSales}}", "$1,250,000" },
    { "{{PreparedBy}}", "Automated Reporting System" }
};

// Load the presentation template
var presentation = new PresentationDocument("ReportTemplate.pptx");
Slide reportSlide = presentation.Slides;

// Iterate through all shapes on the slide to find and replace text
foreach (var shape in reportSlide.Shapes)
{
    // Iterate through all paragraphs within the shape
    foreach (var paragraph in shape.Paragraphs)
    {
        // Iterate through all text runs in the paragraph
        foreach (var textRun in paragraph.Texts)
        {
            foreach (var kvp in reportData)
            {
                if (textRun.Value.Contains(kvp.Key))
                - textRun.ReplaceText(kvp.Key, kvp.Value);
            }
        }
    }
}

// Save the generated report
presentation.Save("GeneratedClientReport.pptx");
using IronPPT;
using System.Collections.Generic;

// --- Sample Data ---
var reportData = new Dictionary<string, string>
{
    { "{{ClientName}}", "Global Tech Inc." },
    { "{{ReportDate}}", System.DateTime.Now.ToShortDateString() },
    { "{{TotalSales}}", "$1,250,000" },
    { "{{PreparedBy}}", "Automated Reporting System" }
};

// Load the presentation template
var presentation = new PresentationDocument("ReportTemplate.pptx");
Slide reportSlide = presentation.Slides;

// Iterate through all shapes on the slide to find and replace text
foreach (var shape in reportSlide.Shapes)
{
    // Iterate through all paragraphs within the shape
    foreach (var paragraph in shape.Paragraphs)
    {
        // Iterate through all text runs in the paragraph
        foreach (var textRun in paragraph.Texts)
        {
            foreach (var kvp in reportData)
            {
                if (textRun.Value.Contains(kvp.Key))
                - textRun.ReplaceText(kvp.Key, kvp.Value);
            }
        }
    }
}

// Save the generated report
presentation.Save("GeneratedClientReport.pptx");
Imports System
Imports IronPPT
Imports System.Collections.Generic

' --- Sample Data ---
Private reportData = New Dictionary(Of String, String) From {
	{"{{ClientName}}", "Global Tech Inc."},
	{"{{ReportDate}}", DateTime.Now.ToShortDateString()},
	{"{{TotalSales}}", "$1,250,000"},
	{"{{PreparedBy}}", "Automated Reporting System"}
}

' Load the presentation template
Private presentation = New PresentationDocument("ReportTemplate.pptx")
Private reportSlide As Slide = presentation.Slides

' Iterate through all shapes on the slide to find and replace text
For Each shape In reportSlide.Shapes
	' Iterate through all paragraphs within the shape
	For Each paragraph In shape.Paragraphs
		' Iterate through all text runs in the paragraph
		For Each textRun In paragraph.Texts
			For Each kvp In reportData
				If textRun.Value.Contains(kvp.Key) Then
				- textRun.ReplaceText(kvp.Key, kvp.Value)
				End If
			Next kvp
		Next textRun
	Next paragraph
Next shape

' Save the generated report
presentation.Save("GeneratedClientReport.pptx")
$vbLabelText   $csharpLabel

Dieser vorlagenbasierte Ansatz ist unglaublich mächtig. Er trennt Design von Daten und ermöglicht es Designern, das Aussehen der Vorlage in PowerPoint zu ändern, ohne dass Codeänderungen erforderlich sind.

Tabellen aus Datensammlungen generieren

Tabellendaten anzuzeigen ist eine Kernanforderung der meisten Geschäftsberichte. IronPPT ermöglicht es Ihnen, Tabellen direkt aus Ihren C#-Datenstrukturen wie einem List<T> programmatisch zu erstellen und zu füllen.

Angenommen, wir haben eine einfache Product-Klasse und eine Liste von Produkten. Der folgende Code generiert eine neue Folie mit einer Tabelle, die diese Daten anzeigt.

// --- Sample Data Model and Collection ---
public class Product
{
    public int ID { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
}

var products = new List<Product>
{
    new Product { ID = 101, Name = "Quantum CPU", Price = 299.99m, StockLevel = 50 },
    new Product { ID = 205, Name = "Photon SSD", Price = 149.50m, StockLevel = 120 },
    new Product { ID = 310, Name = "Gravity GPU", Price = 799.00m, StockLevel = 25 }
};

// --- Table Generation ---
var presentation = new PresentationDocument();
var tableSlide = presentation.AddSlide();
tableSlide.AddText("Product Inventory Report", new Rectangle(50, 20, 860, 50))
   .DefaultTextStyle.SetFont("Arial", 32).SetBold(true);

// Add a table to the slide with 4 columns and (N+1) rows
Table productTable = tableSlide.AddTable(products.Count + 1, 4, new Rectangle(50, 100, 860, 300));

// --- Populate Header Row ---
productTable.Rows.Cells.TextBody.AddParagraph("Product ID");
productTable.Rows.Cells.TextBody.AddParagraph("Product Name");
productTable.Rows.Cells.TextBody.AddParagraph("Price");
productTable.Rows.Cells.TextBody.AddParagraph("Stock");

// Style the header row
foreach (var cell in productTable.Rows.Cells)
{
    cell.Fill.SetSolid(new Color("#4A5568")); // Dark Gray
    cell.TextBody.Paragraphs.DefaultTextStyle.SetColor(Color.White).SetBold(true);
    cell.TextBody.Paragraphs.Style.SetAlignment(TextAlignmentTypeValues.Center);
}

// --- Populate Data Rows ---
for (int i = 0; i < products.Count; i++)
{
    var product = products[i];
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.ID.ToString());
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.Name);
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.Price.ToString("C"));
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.StockLevel.ToString());
}

presentation.Save("ProductInventoryReport.pptx");
// --- Sample Data Model and Collection ---
public class Product
{
    public int ID { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int StockLevel { get; set; }
}

var products = new List<Product>
{
    new Product { ID = 101, Name = "Quantum CPU", Price = 299.99m, StockLevel = 50 },
    new Product { ID = 205, Name = "Photon SSD", Price = 149.50m, StockLevel = 120 },
    new Product { ID = 310, Name = "Gravity GPU", Price = 799.00m, StockLevel = 25 }
};

// --- Table Generation ---
var presentation = new PresentationDocument();
var tableSlide = presentation.AddSlide();
tableSlide.AddText("Product Inventory Report", new Rectangle(50, 20, 860, 50))
   .DefaultTextStyle.SetFont("Arial", 32).SetBold(true);

// Add a table to the slide with 4 columns and (N+1) rows
Table productTable = tableSlide.AddTable(products.Count + 1, 4, new Rectangle(50, 100, 860, 300));

// --- Populate Header Row ---
productTable.Rows.Cells.TextBody.AddParagraph("Product ID");
productTable.Rows.Cells.TextBody.AddParagraph("Product Name");
productTable.Rows.Cells.TextBody.AddParagraph("Price");
productTable.Rows.Cells.TextBody.AddParagraph("Stock");

// Style the header row
foreach (var cell in productTable.Rows.Cells)
{
    cell.Fill.SetSolid(new Color("#4A5568")); // Dark Gray
    cell.TextBody.Paragraphs.DefaultTextStyle.SetColor(Color.White).SetBold(true);
    cell.TextBody.Paragraphs.Style.SetAlignment(TextAlignmentTypeValues.Center);
}

// --- Populate Data Rows ---
for (int i = 0; i < products.Count; i++)
{
    var product = products[i];
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.ID.ToString());
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.Name);
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.Price.ToString("C"));
    productTable.Rows[i + 1].Cells.TextBody.AddParagraph(product.StockLevel.ToString());
}

presentation.Save("ProductInventoryReport.pptx");
' --- Sample Data Model and Collection ---
Public Class Product
	Public Property ID() As Integer
	Public Property Name() As String
	Public Property Price() As Decimal
	Public Property StockLevel() As Integer
End Class

Private products = New List(Of Product) From {
	New Product With {
		.ID = 101,
		.Name = "Quantum CPU",
		.Price = 299.99D,
		.StockLevel = 50
	},
	New Product With {
		.ID = 205,
		.Name = "Photon SSD",
		.Price = 149.50D,
		.StockLevel = 120
	},
	New Product With {
		.ID = 310,
		.Name = "Gravity GPU",
		.Price = 799.00D,
		.StockLevel = 25
	}
}

' --- Table Generation ---
Private presentation = New PresentationDocument()
Private tableSlide = presentation.AddSlide()
tableSlide.AddText("Product Inventory Report", New Rectangle(50, 20, 860, 50)).DefaultTextStyle.SetFont("Arial", 32).SetBold(True)

' Add a table to the slide with 4 columns and (N+1) rows
Dim productTable As Table = tableSlide.AddTable(products.Count + 1, 4, New Rectangle(50, 100, 860, 300))

' --- Populate Header Row ---
productTable.Rows.Cells.TextBody.AddParagraph("Product ID")
productTable.Rows.Cells.TextBody.AddParagraph("Product Name")
productTable.Rows.Cells.TextBody.AddParagraph("Price")
productTable.Rows.Cells.TextBody.AddParagraph("Stock")

' Style the header row
For Each cell In productTable.Rows.Cells
	cell.Fill.SetSolid(New Color("#4A5568")) ' Dark Gray
	cell.TextBody.Paragraphs.DefaultTextStyle.SetColor(Color.White).SetBold(True)
	cell.TextBody.Paragraphs.Style.SetAlignment(TextAlignmentTypeValues.Center)
Next cell

' --- Populate Data Rows ---
For i As Integer = 0 To products.Count - 1
	Dim product = products(i)
	productTable.Rows(i + 1).Cells.TextBody.AddParagraph(product.ID.ToString())
	productTable.Rows(i + 1).Cells.TextBody.AddParagraph(product.Name)
	productTable.Rows(i + 1).Cells.TextBody.AddParagraph(product.Price.ToString("C"))
	productTable.Rows(i + 1).Cells.TextBody.AddParagraph(product.StockLevel.ToString())
Next i

presentation.Save("ProductInventoryReport.pptx")
$vbLabelText   $csharpLabel

Diagramme hinzufügen, um Daten zu visualisieren

Um Daten leichter verständlich zu machen, sind Diagramme unerlässlich. IronPPT unterstützt das Hinzufügen und Füllen verschiedener Diagrammtypen, um Ihre Daten effektiv zu visualisieren.

Dieses Beispiel erstellt ein Balkendiagramm, um die Lagerbestände aus unserer Produktliste zu visualisieren.

using IronPPT.Charts;
using IronPPT.Enums;

// --- Chart Generation ---
var presentation = new PresentationDocument();
var chartSlide = presentation.AddSlide();
chartSlide.AddText("Product Stock Levels", new Rectangle(50, 20, 860, 50))
   .DefaultTextStyle.SetFont("Arial", 32).SetBold(true);

// Add a bar chart to the slide
Chart stockChart = chartSlide.AddChart(ChartType.Bar, new Rectangle(100, 100, 750, 450));
stockChart.Title.Text = "Current Inventory";

// Get the chart data object to populate it
ChartData chartData = stockChart.ChartData;
chartData.Categories.Clear(); // Clear default categories
chartData.Series.Clear();     // Clear default series

// Add a series for our stock data
var series = chartData.Series.Add("Stock Level");

// Populate categories (product names) and data points (stock levels)
foreach (var product in products)
{
    chartData.Categories.Add(product.Name);
    series.DataPoints.Add(product.StockLevel);
}

presentation.Save("ProductStockChart.pptx");
using IronPPT.Charts;
using IronPPT.Enums;

// --- Chart Generation ---
var presentation = new PresentationDocument();
var chartSlide = presentation.AddSlide();
chartSlide.AddText("Product Stock Levels", new Rectangle(50, 20, 860, 50))
   .DefaultTextStyle.SetFont("Arial", 32).SetBold(true);

// Add a bar chart to the slide
Chart stockChart = chartSlide.AddChart(ChartType.Bar, new Rectangle(100, 100, 750, 450));
stockChart.Title.Text = "Current Inventory";

// Get the chart data object to populate it
ChartData chartData = stockChart.ChartData;
chartData.Categories.Clear(); // Clear default categories
chartData.Series.Clear();     // Clear default series

// Add a series for our stock data
var series = chartData.Series.Add("Stock Level");

// Populate categories (product names) and data points (stock levels)
foreach (var product in products)
{
    chartData.Categories.Add(product.Name);
    series.DataPoints.Add(product.StockLevel);
}

presentation.Save("ProductStockChart.pptx");
Imports IronPPT.Charts
Imports IronPPT.Enums

' --- Chart Generation ---
Private presentation = New PresentationDocument()
Private chartSlide = presentation.AddSlide()
chartSlide.AddText("Product Stock Levels", New Rectangle(50, 20, 860, 50)).DefaultTextStyle.SetFont("Arial", 32).SetBold(True)

' Add a bar chart to the slide
Dim stockChart As Chart = chartSlide.AddChart(ChartType.Bar, New Rectangle(100, 100, 750, 450))
stockChart.Title.Text = "Current Inventory"

' Get the chart data object to populate it
Dim chartData As ChartData = stockChart.ChartData
chartData.Categories.Clear() ' Clear default categories
chartData.Series.Clear() ' Clear default series

' Add a series for our stock data
Dim series = chartData.Series.Add("Stock Level")

' Populate categories (product names) and data points (stock levels)
For Each product In products
	chartData.Categories.Add(product.Name)
	series.DataPoints.Add(product.StockLevel)
Next product

presentation.Save("ProductStockChart.pptx")
$vbLabelText   $csharpLabel

Dieser Code generiert ein professionell aussehendes Balkendiagramm, das dynamisch aus Ihren C#-Objekten gefüllt wird und eine klare Darstellung Ihrer Daten ohne manuelle Eingriffe bietet.

Warum eine dedizierte Bibliothek über Office Interop wählen?

Für Entwickler, die über die programmgesteuerte Erstellung von PowerPoint nachdenken, steht die Wahl oft zwischen Microsoft Office Interop oder einer dedizierten Drittanbieterbibliothek wie IronPPT. Während Interop "kostenlos" ist, wenn Sie eine Office-Lizenz haben, wurde es nicht für die Anforderungen moderner, serverseitiger Anwendungen entwickelt. Die folgende Tabelle beschreibt die entscheidenden Unterschiede.

Feature / Überlegung IronPPT für .NET Microsoft.Office.Interop.PowerPoint
Serverseitige Abhängigkeit Keine. 100% verwaltete .NET-Bibliothek. Erfordert die Installation von Microsoft Office auf dem Server.
Leistung & Skalierbarkeit Optimiert für multithreaded, leistungsstarke Nutzung. Nicht für serverseitigen Einsatz konzipiert; kann langsam und instabil sein. Bereitstellungskomplexität
Einfache NuGet-Paketinstallation. Komplexe COM-Abhängigkeiten, Berechtigungen und Office-Lizenzierung. Plattformunterstützung
Windows, Linux, macOS, Docker, Azure, AWS. Nur Windows. Nicht geeignet für moderne plattformübergreifende Bereitstellungen. API-Design & Benutzerfreundlichkeit
Moderne, intuitive, flüssige API für Entwickler konzipiert. Ältere, umfangreiche und komplexe COM-basierte API. Stabilität
Stabil und zuverlässig für unbeaufsichtigte Ausführung. Neigt zu hängenden Prozessen und Speicherlecks in Serverumgebungen. Die Wahl einer dedizierten Bibliothek wie IronPPT führt zu schnelleren Entwicklungen, größerer Stabilität, geringerem Wartungsaufwand und der Flexibilität, auf jeder Plattform einzusetzen.

Es ist eine Investition in eine robuste, moderne Architektur, die die technische Verschuldung und die Einschränkungen von Interop vermeidet. Beim Aufbau von produktionsreifen Anwendungen stellt die Befolgung bewährter Praktiken sicher, dass Ihr Code effizient, wartbar und widerstandsfähig ist. Es ist eine Investition in eine robuste, moderne Architektur, die die technische Verschuldung und die Einschränkungen von Interop vermeidet. Beim Aufbau von produktionsreifen Anwendungen stellt die Befolgung bewährter Praktiken sicher, dass Ihr Code effizient, wartbar und widerstandsfähig ist.

  1. Leistung für große Präsentationen optimieren: Bei Präsentationen mit vielen Folien oder großen Bildern auf den Speicherverbrauch achten.

Bilder möglichst aus Streams laden und Objekte wie TextStyle oder ParagraphStyle wiederverwenden, anstatt neue Instanzen für jedes Element zu erstellen.

  1. Einheitliches Design beibehalten: Vorlagen und Hilfsmethoden nutzen, um Designkonsistenz zu gewährleisten. Erstellen Sie eine statische Klasse mit Methoden, die vorkonfigurierte TextStyle- und ParagraphStyle-Objekte für Überschriften, Fließtext und Bildunterschriften zurückgeben. Dies stellt Markenkonsistenz sicher und macht globale Stiländerungen trivial. 3. Fehler und Ausnahmen elegant behandeln: Datei-I/O und externe Abhängigkeiten können fehlschlagen. Umschließen Sie immer Ihre Präsentationserstellungslogik mit try-catch-Blöcken, um potenzielle Ausnahmen wie FileNotFoundException oder Zugriffsberechtigungsfehler zu behandeln. Hier ist ein einfaches Beispiel für robustes Fehlerhandling beim Speichern einer Datei: ## Fazit und Ihre nächsten Schritte

Die Automatisierung der PowerPoint-Präsentationserstellung in C# bietet einen signifikanten Produktivitätsschub und ermöglicht leistungsstarke neue Anwendungsfunktionen.

try
{
    // All presentation creation logic here...
    var presentation = new PresentationDocument();
    presentation.AddSlide().AddText("Final Report");

    // Attempt to save the presentation
    presentation.Save("C:\\ProtectedFolder\\FinalReport.pptx");
}
catch (System.IO.IOException ex)
{
    // Log the specific I/O error
    Console.WriteLine($"Error saving file: {ex.Message}");
    // Potentially try saving to a fallback location
}
catch (System.UnauthorizedAccessException ex)
{
    // Log the permission error
    Console.WriteLine($"Permission denied. Cannot save file. {ex.Message}");
}
catch (Exception ex)
{
    // Catch any other unexpected errors
    Console.WriteLine($"An unexpected error occurred: {ex.Message}");
}
try
{
    // All presentation creation logic here...
    var presentation = new PresentationDocument();
    presentation.AddSlide().AddText("Final Report");

    // Attempt to save the presentation
    presentation.Save("C:\\ProtectedFolder\\FinalReport.pptx");
}
catch (System.IO.IOException ex)
{
    // Log the specific I/O error
    Console.WriteLine($"Error saving file: {ex.Message}");
    // Potentially try saving to a fallback location
}
catch (System.UnauthorizedAccessException ex)
{
    // Log the permission error
    Console.WriteLine($"Permission denied. Cannot save file. {ex.Message}");
}
catch (Exception ex)
{
    // Catch any other unexpected errors
    Console.WriteLine($"An unexpected error occurred: {ex.Message}");
}
Try
	' All presentation creation logic here...
	Dim presentation = New PresentationDocument()
	presentation.AddSlide().AddText("Final Report")

	' Attempt to save the presentation
	presentation.Save("C:\ProtectedFolder\FinalReport.pptx")
Catch ex As System.IO.IOException
	' Log the specific I/O error
	Console.WriteLine($"Error saving file: {ex.Message}")
	' Potentially try saving to a fallback location
Catch ex As System.UnauthorizedAccessException
	' Log the permission error
	Console.WriteLine($"Permission denied. Cannot save file. {ex.Message}")
Catch ex As Exception
	' Catch any other unexpected errors
	Console.WriteLine($"An unexpected error occurred: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

Wie wir gesehen haben, bietet IronPPT für .NET eine intuitive, moderne und plattformübergreifende Lösung, die die Fähigkeiten und Stabilität traditioneller Office-Interop-Methoden weit übertrifft.

Vom Erstellen einfacher Folien bis hin zum Erstellen komplexer, datengesteuerter Berichte mit Tabellen und Diagrammen bietet Ihnen IronPPT die Werkzeuge, um die Arbeit effizient zu erledigen. Wenn Ihre Projekte auch das Arbeiten mit anderen Dokumentformaten umfassen, sollten Sie das gesamte Iron Suite erkunden. Mit Bibliotheken wie IronPDF zum PDF-Manipulation, IronXL für Excel-Tabellen und IronBarcode zum Lesen von Barcodes können Sie alle Ihre Dokumentverarbeitungsanforderungen mit einem konsistenten, hochwertigen Werkzeugset erledigen.

Bereit zur Automatisierung? Der beste Weg, die volle Leistung von IronPPT zu erleben, besteht darin, es in Ihrem eigenen Projekt auszuprobieren.

Für detailliertere Informationen können Sie die offizielle API-Referenz eintauchen. The best way to experience the full power of IronPPT is to try it in your own project.

Starten Sie jetzt mit IronPPT.
green arrow pointer

For more detailed information, you can explore the official IronPPT documentation or dive deep into the classes and methods in the API Reference.

Hinweis:Aspose ist eine eingetragene Marke des jeweiligen Eigentümers. Diese Seite ist weder mit Aspose verbunden, noch von Aspose genehmigt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Wie kann ich PowerPoint-Präsentationen in C# automatisieren?

Sie können IronPPT for .NET verwenden, um PowerPoint-Präsentationen zu automatisieren. Diese Bibliothek ermöglicht es Ihnen, Folien programmgesteuert zu erstellen, zu bearbeiten und zu manipulieren, ohne sich auf Microsoft Office Interop zu verlassen.

Welche Vorteile bietet die Verwendung einer .NET-Bibliothek gegenüber Microsoft Office Interop für die PowerPoint-Automatisierung?

Die Verwendung einer .NET-Bibliothek wie IronPPT bietet Stabilität, plattformübergreifende Kompatibilität und eliminiert die Notwendigkeit einer lizenzierten Microsoft Office-Installation, was sie ideal für Server- und Containerumgebungen macht.

Wie füge ich eine neue Folie zu einer PowerPoint-Präsentation mit C# hinzu?

Mit IronPPT können Sie eine neue Folie über die AddSlide()-Methode hinzufügen, nachdem Sie Ihre Präsentation mit new PresentationDocument() initialisiert haben.

Kann ich vorhandene Folien in einer PowerPoint-Präsentation programmgesteuert klonen?

Ja, IronPPT ermöglicht es Ihnen, Folien zu klonen, indem Sie auf die Slides-Sammlung zugreifen und Methoden zur effizienten Duplizierung von Folieninhalten verwenden.

Wie kann ich formatierten Text in eine PowerPoint-Folie mit C# einfügen?

IronPPT bietet Methoden wie AddText() und Textstyling-Optionen wie SetFont() und SetColor() zum Einfügen und Formatieren von Text auf Folien.

Wie ist der Prozess zum Hinzufügen von Bildern zu einer PowerPoint-Folie in C#?

Sie können ein Bild mit new Image() laden und es dann mit slide.AddImage() zu Ihrer Folie hinzufügen, wobei Sie Position und Größe programmgesteuert festlegen.

Wie verwende ich Vorlagen, um datengesteuerte PowerPoint-Präsentationen zu erstellen?

IronPPT unterstützt das Laden von Vorlagen mit Platzhaltern, die Sie mit dynamischen Daten ersetzen können, indem Sie Methoden wie ReplaceText() verwenden, um Berichte automatisch zu generieren.

Was sind die Best Practices für die Fehlerbehandlung bei der PowerPoint-Automatisierung mit C#?

Kapseln Sie Ihren Automatisierungscode mit try-catch-Blöcken, um Ausnahmen wie IOException und UnauthorizedAccessException zu behandeln. Fehlerprotokollierung kann bei der Fehlersuche und Sicherstellung einer robusten Automatisierung helfen.

Wie kann ich Tabellen in PowerPoint-Folien mit Daten aus C#-Sammlungen erstellen?

Verwenden Sie die AddTable()-Methode von IronPPT, um Tabellen zu erstellen. Füllen Sie sie dann mit Daten aus C#-Sammlungen und passen Sie das Erscheinungsbild jeder Zelle über TextBody.Paragraphs.DefaultTextStyle an.

Ist IronPPT für die Entwicklung plattformübergreifender PowerPoint-Automatisierungslösungen geeignet?

Ja, IronPPT läuft auf verschiedenen Plattformen, einschließlich Windows, Linux und macOS, und unterstützt die Bereitstellung in Docker-Containern, was es ideal für plattformübergreifende Anwendungen macht.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen