Altbilgi içeriğine atla
PPT ARAçLARı
C# kullanarak PowerPoint Sunumu Nasıl Oluşturulur

C# dilinde PowerPoint Sunumlarını Programatik Olarak Oluşturma ve Otomatikleştirme

Her hafta aynı PowerPoint sunumunu elle oluşturmak developers için sıkıcı ve hataya açık bir görevdir. İster haftalık satış raporları, ister aylık mali özetler, isterse kişiselleştirilmiş müşteri teklifleri oluşturuyor olun, bu süreç otomasyon için çok uygundur. Yıllarca, .NET dünyasında programatik olarak Office uygulamaları üzerinde kontrol sağlayan Microsoft Office Interop en iyi çözüm olarak kullanılmıştır. Ancak, bu yaklaşım önemli dezavantajlarla birlikte gelmektedir: Sunucu ortamında lisanslı bir Microsoft Office sürümünün yüklü olmasını gerektirir, sunucu ortamlarında ünlü bir şekilde kararsızdır ve Linux, macOS veya Docker konteynerlerdeki modern, çapraz platform kurulumuna tamamen engel olur.

Neyse ki, daha iyi bir yol var. Bu öğretici, modern geliştirme için tasarlanmış güçlü ve hafif bir kütüphane olan IronPPT for .NET kullanarak PowerPoint sunumlarını programatik olarak nasıl oluşturacağınızı gösterecek. Easygunun basit bir slide güvertesi oluşturmaktan şablonlardan tablolar ve grafikler içeren karmaşık, veri odaklı sunumlar üretmeye kadar her şeyi otomatikleştirmek için nasıl kullanılacağını keşfedeceğiz. IronPPT ile, Microsoft Office'e bağımlılık olmaksızın her yerde çalışan hızlı, ölçeklenebilir ve güvenilir sunum otomasyon iş akışları oluşturabilirsiniz.

IronPPT - C# Sunum Kutuphanesi IronPPT for .NET kutuphanesi, geliştiricilere C# icinde programli olarak PowerPoint dosyalari oluşturma ve yonetme olgusu saglar.

How Do I Get Started with PowerPoint Generation in C#?

C# ile PowerPoint otomasyonuna başlamak basittir. IronPPT for .NET, bir NuGet paketi olarak dağıtilir ve Visual Studio projenize saniyeler icinde dogrudan yuklenebilir.

Adim 1: IronPPT Kutuphanesini Yukleyin

Visual Studio'da Paket Yonetici Konsolunu (Tools > NuGet Package Manager > Package Manager Console) acin ve asagidaki komutu girin:

Install-Package IronPPT

Alternatif olarak, NuGet Paket Yonetici GUI'sinde "IronPPT" arayabilir ve oradan yukleyebilirsiniz.

IronPPT'yi NuGet Paket Yonetici ekrani uzerinden kurma Visual Studio'da NuGet Paket Yonetici, IronPPT kutuphanesinin yuklenisini göstermektedir.

Adim 2: Ilk Sunumunuzu Oluşturun ve Kaydedin

Kutuphaneyi yukledikten sonra, sadece birkaç satir C# kodu ile ilk PowerPoint sunumunuzu oluşturabilirsiniz. Herhangi bir sunum icin cekirdek sınıf PresentationDocument'dir.

Asagidaki kod parcacigi yeni bir sunum başlatir, bir baslik ile tek bir slayt ekler ve bunu .pptx dosyasi olarak kaydeder.

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

Bu kodu calistirdiktan sonra, proje ciktisi dizininde MyFirstPresentation.pptx adinda yeni bir dosya bulacaksiniz. Aciliginda, eklediginiz metinle tek bir slayt gorunecek. Bu basit örnek, bir sunum nesnesi oluşturmanin, içerik eklemenin ve dosyayi kaydetmenin temel is akisini göstermektedir.

IronPPT ile oluşturulan bos sunum C# ve IronPPT ile programli olarak oluşturulmus bos bir PowerPoint sunumu.

Slaytlar Programli Olarak Nasıl Eklenir ve Yonlendirilir?

Bir sunum, slaytlarin bir koleksiyonudur. IronPPT, bu slaytlari yonetmek icin bir kisim basit ve kullanıcı dostu API sunmaktadir ve bu API, uygulamaniz icin gerektiginde onlari eklemenize, yuklemenize ve yeniden kullanmaniza izin vermektedir.

Mevcut Bir Sunumu Yukleme ve Slaytlar Ekleme

Cogu zaman, bastan bir sunu oluşturmak yerine, mevcut bir sunuyu değiştirmeniz gerekecektir. .pptx dosyasini, dosya yolunu PresentationDocument yapici metoduna gecirerek diskten yukleyebilirsiniz. Yuklendikten sonra, kolayca yeni slaytlar ekleyebilirsiniz.

Asagidaki örnek, daha once oluşturdugumuz sunumu yukler ve ona yeni, bos bir sunu ekler.

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

Bu islevsellik, zamanla bilgi ekleyen uygulamalar, hafizaya alma veya durum raporlama sistemleri icin çok faydalidir.

Iki Bos Slayt Ayni sunum, simdi C# kodu ile eklenen ikinci, bos bir slayta sahiptir.

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

Slaytlari Kopyalama ve Tutarlilik Saglama

Rapor veya teklif oluşturma gibi pek çok is senaryosunda, ayni duzen, arka plan ve logo ya da altbilgi gibi marka unsurlarina sahip birden fazla slayta ihtiyaçiniz olacak. Her bir slayti kodda manuel olarak oluşturmak tekrarlayici ve bakimi zor olur.

Daha verimli bir yaklasim, sunum icinde bir "sablon" slayt oluşturmak ve sonra bunu programli olarak kopyalamaktir. IronPPT, kamu API'sinde dogrudan bir Clone() metoduna sahip olmasa da, yeni bir slayt oluşturarak ve istenilen özellikleri ve ogeleri sablon slaytindan kopyalayarak bunu basarabilirsiniz. Sablonlar ile siklikla kullanilan daha dogrudan bir yaklasim, slaytlari onceden tasarlayip sonra verilerle doldurmak, bu konuyu veri odakli bölümde ele alacagiz. Simdilik, tasarim tutarliligini urettiginiz sunumlar boyunca korumanin guclu bir konseptini göstermektedir ve bu, Syncfusion gibi diğer kutuphanelerde de gorulen bir özellik.

Slide'lara Zengin İçerik Eklemenin En Iyi Yolu Nedir?

Slaytlarinizi elde ettiginizde, bir sonraki adim onlari anlami olan içeriklerle doldurmaktir. IronPPT, metin eklemek ve bicimlendirmek, gorseller eklemek ve sekiller cizmek icin zengin bir nesne modeli sunmaktadir.

Metin, Yazilar ve Paragraflarla Calisma

Metin, herhangi bir sunumun en yaygin unsurudur. IronPPT'de metin, nesneler hiyerarsisi: Shape (metin kutusu olarak), Paragraph ve Text uzerinden yonetilir. Bu yapi, pozisyon ve stil uzerinde detayli kontrol saglar.

Iki slayttan olusan sunumumuzu genişletelim, ilk slaytta stilize edilmis bir baslik ve ikinci slaytta simgelerle gösterilen bir liste ekleyelim.

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

Bu örnek bircok kilit konsepti gösteriyor:

  • Metin Kutusu Olarak Sekiller: Shape turunde bir Rectangle oluşturarak metin icin bir kap olarak kullaniriz. Bu, konum ve boyutu uzerinde kesin kontrol saglar.
  • Paragraflar: Metin icerigi Paragraph nesneleri araciligiyla eklenir.
  • Stil: Bir Paragraph'in DefaultTextStyle ozelligi, yazi tipi, boyutu, rengi ve agirligi icin akici bir stil sunar. Style ozelligi, hizalama ve madde isaretleri gibi paragraf duzeyinde bicimlendirmeyi kontrol eder.

Metin ve metin kutularini ekleme Ilk slayt simdi bir stilize edilmis basliga ve ikinci slayt da simgelerle gösterilen bir listeye sahiptir.

Gorselleri Eklemek ve Konumlandirmak

Logo, grafik ve ürün gorselleri gibi gorsel unsurlar etkileyici sunumlar icin olmazsa olmazdır. IronPPT, bir dosyadan veya bellek akışından gorsel eklemeyi kolaylaştırır.

Asagidaki kod, Iron Software logosunu baslik slaytimizin sağ-alt köşesine ekler.

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

AddImage metodu, Position, Width, Height ve donusumu (Angle) uzerinde daha fazla işlem yapmanizi saglayan Image nesnesini geri dondurur.

Ilk slayta resim ekleme Baslik slaydi simdi sag-alt kosede konumlandırılmış bir gorsel iceriyor.

Sekilleri Cizmek ve Ozellestirmek

Metin kutulari icin kullanılan dikdörtgenlerin otesinde, IronPPT slaytlariniza görsel yapi ve vurgulama eklemek icin çeşitli sekiller cizebilir. Geometrilerini, renklerini ve pozisyonlarını kontrol edebilirsiniz.

Ikınci slaytımıza, icerigi görsel olarak ayırmak icin bir dekoratif şekil ekleyelim.

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

Bu kod, acık camgil ollumu gu fill ve teskil cocuk çizmektedir. Programli olarak sekil ekleme ve stilize etme yetenegine sahip olmak, otomatik sunumlarinizin görsel tasarımını geliştirmek, yöntem diyagramları veya akiş şemalarını oluşturmak, özel diyagramlar oluşturmak icin paha bicilemezdir.

Stilize Edilmis Daire Ikinci slayt simdi C# kodu ile eklenmiş stilize bir cembere sahiptir.

Veri Odakli Sunumlari Nasıl Oluşturabilirim?

PowerPoint otomasyonunun asil gücü, dinamik veri kaynaklarından sunumlar oluşturmada yatar. Bu IronPPT'nin parladığı yerdir; işinizle ilgili raporlama sistemlerini oluştururken, tablolar oluşturabilir, grafikler oluşturabilir ve sablonları anında doldurabilirsiniz. Bu yetenek, onu temel kutuphanelerden ayırır ve Aspose ve Syncfusion gibi araçlarla yarışacak güçlü bir rakip haline getirir, bunlar da veri odaklı özellikleri vurgularlar.

Dinamik Raporlar Icin Sablon Kullanimi

En etkili iş akışlarından biri, önceden tanımlanmış düzenlere ve yer tutucu metne sahip bir ust PowerPoint sablonu oluşturmaktir. C# uygulamanız, bu sablonu yukleyip bir veri tabanından, API'den veya başka bir kaynaktan veri yerlerine yerlestirebilir.

Adim 1: Bir PowerPoint Sablonu Oluşturma

Once ReportTemplate.pptx adinda bir PowerPoint dosyasi oluşturun. Bir slayta, {{ClientName}}, {{ReportDate}} ve {{TotalSales}} gibi benzersiz yer tutucu dizeleri olan metin kutulari ekleyin.

Step 2: Populate the Template in C

Asagidaki kod, bu sablona nasıl veri yukleyeceginizi, biraz veri tanimlayacağınızı ve sonra slayttaki şekilleri gezip bir metin değiştirme işlemi yapacağınızı göstermektedir.

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

Bu sablon bazli yaklasim inanilmaz derecede gucludur. Tasarımı veriden ayri tutar, tasarımcılara PowerPoint'te şablonun gorunumunu ve hissini kod değişikligi yapmadan değiştirme olasılığı saglar.

Veri Koleksiyonlarindan Tablolar Oluşturma

Tablo veri gösterimi, cogu is raporu icin temel bir gereksinimdir. IronPPT, C# veri yapilarinizdan, ornegin bir List<t>, dogrudan tablolar oluşturmanizi ve bunlari doldurmanizi saglar.

Diyelim ki basit bir Product sinifimiz ve bir urunler listemiz var. Asagidaki kod, bu verileri gösteren bir tablo ile yeni bir slayt oluşturacaktir.

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

Verileri Gorsellestirmek Icin Grafik Ekleme

Veriyi daha sindirilebilir hale getirmek icin, grafikler elzemdir. IronPPT, verilerinizi etkin bir şekilde görselleştirecek çeşitli grafik türlerini eklemeyi ve doldurmayı destekler.

Bu örnek, ürün listemizden stok seviyelerini görselleştirmek için bir cubuk grafik oluşturur.

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

Bu kod, profesyonel gorunuslu bir cubuk grafik uretir, C# nesnelerinizden dinamik olarak doldurulur, verilerinizi açık bir sekilde görselleştirmekte insani müdahele olmadan sağlam bir temsil sağlar.

Neden Office Interop Yerine Ozel bir Kutuphane Secmeliyim?

Programli PowerPoint oluşturmayı dusunen geliştiriciler icin seçim genellikle Microsoft Office Interop veya IronPPT gibi ozel bir üçüncü taraf kütüphane kullanmak arasındadır. Eger bir Office lisansınız varsa, Interop "ucretsizdir", ancak modern, sunucu taraflı uygulamaların talepleri icin tasarlanmamıstir. Asagidaki tablo, kritik farkları ayrıntılandırmaktadır.

Özellik / Degerlendirme IronPPT for .NET Microsoft.Office.Interop.PowerPoint
Sunucu Tarafı Bağımlılığı Hiçbiri. Yüzde 100 yonetilen.NET kutuphanesi. Sunucuya Microsoft Office yuklenmesini gerektirir.
Performans ve Ölçeklenebilirlik Multi-threaded, yuksek performans kullanımı için optimize edilmiştir. Sunucu taraflı kullanım için tasarlanmamıştır; yavaş ve kararsız olabilir.
Dağıtım Karmaşıklığı Basit NuGet paketi kurulumu. Karmaşık COM bağımlılıkları, izinler ve Office lisanslama.
Platform Desteği Windows, Linux, macOS, Docker, Azure, AWS. Sadece Windows. Modern çapraz platform dağıtımları için uygun değil.
API Tasarımı ve Kullanım Kolaylığı Geliştiriciler için tasarlanmış modern, sezgisel, akıcı bir API. Daha eski, uzun ve karmaşık COM tabanlı API.
Kararlılık Gözetimsiz yürütme için kararlı ve güvenilir. Sunucu ortamlarında sıkışan süreçlere ve bellek sızıntılarına eğilimli.

IronPPT gibi özel bir kütüphane seçmek, daha hızlı geliştirme, daha fazla kararlılık, daha düşük bakım yükü ve herhangi bir platformda dağıtım esnekliği anlamına gelir. Bu, Interop'un teknik borçlarını ve kısıtlamalarını önleyen sağlam ve modern bir mimariye yapılan bir yatırımdır. IronPPT gibi özel bir kütüphane seçmek, daha hızlı geliştirme, daha fazla kararlılık, daha düşük bakım yükü ve herhangi bir platformda dağıtım esnekliği anlamına gelir. Bu, Interop'un teknik borçlarını ve kısıtlamalarını önleyen sağlam ve modern bir mimariye yapılan bir yatırımdır.

Kurumsal PowerPoint Otomasyonu için En İyi Uygulamalar

Üretim seviyesinde uygulamaları geliştirirken, en iyi uygulamaları takip etmek kodunuzun verimli, sürdürülebilir ve dayanıklı olmasını sağlar.

  1. Büyük Sunumlar için Performansı Optimize Edin: Birçok slayt veya büyük görüntüler içeren sunumlar için, bellek kullanımı konusunda dikkatli olun. Mumkunse akistan fotograf yukleyin ve TextStyle veya ParagraphStyle gibi nesneleri tekrar tekrar oluşturmak yerine yeniden kullanin.
  2. Tutarlı Bir Tasarım Sürdürün: Tasarım tutarlılığını sağlamak için şablonlar ve yardımcı yöntemler kullanın. Basliklar, govde metni ve altyazilar icin onceki ayarli TextStyle ve ParagraphStyle nesneleri donen metodlar iceren statik bir sınıf oluşturun. Bu, marka tutarlılığını sağlar ve küresel stil değişikliklerini kolaylaştırır.
  3. Hataları ve İstisnaları Zarif Bir Şekilde Yönetme: Dosya I/O ve harici bağımlılıklar başarısız olabilir. Her zaman olasi istisnalari, ornegin FileNotFoundException veya erişim izni hatalari gibi, ele almak icin sunum uretim mantiginizi try-catch bloklarina sarin.

Bir dosya kaydederken sağlam hata yönetiminin basit bir örneği burada:

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

Sonuç ve Sonraki Adımlarınız

C#'ta PowerPoint sunumu oluşturmayı otomatikleştirmek, üretkenliğe önemli bir katkı sağlar ve güçlü yeni uygulama özelliklerinin etkinleştirilmesine olanak tanır. Gördüğümüz gibi, IronPPT for.NET, geleneksel Office Interop yöntemlerinin yeteneklerini ve kararlılığını çok aşan sezgisel, modern ve çapraz platform bir çözüm sunar. IronPPT, basit slaytlardan tablolar ve grafiklerle veri odaklı karmaşık raporlara kadar işleri verimli bir şekilde halletmeniz için araçlarla donatır.

Projeleriniz ayrıca diğer belge formatlarıyla çalışmayı da içeriyorsa, tüm Iron Suite'i keşfetmeyi düşünün. IronPDF gibi PDF düzenleme, IronXL gibi Excel elektronik tabloları ve IronBarcode gibi barkod okuma kütüphaneleri ile tüm belge işleme ihtiyaçlarınızı tutarlı, yüksek kaliteli bir araç seti ile karşılayabilirsiniz.

Otomasyona başlamaya hazır mısınız? IronPPT'nin tüm gücünü deneyimlemenin en iyi yolu, onu kendi projenizde denemektir.

Şimdi IronPPT ile başlayın.
green arrow pointer

Daha ayrıntılı bilgi için resmi IronPPT belgelendirmesini keşfedebilir veya API Referansı içinde bulunan sınıflar ve yöntemlere derinlemesine dalış yapabilirsiniz.

Lütfen dikkate alinAspose, ilgili sahibinin tescilli ticari markasıdır. Bu site, Aspose ile ilişkili, onaylanmış veya sponsor edilmiş değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerinin mülkiyetindedir. Karşılaştırmalar yalnızca bilgilendirme amaçlıdır ve yazım sırasında kamuya açık bilgileri yansıtır.

Sıkça Sorulan Sorular

C#'da PowerPoint sunumlarını nasıl otomatikleştirebilirim?

IronPPT for.NET kullanarak PowerPoint sunumlarını otomatikleştirebilirsiniz. Bu kütüphane, Microsoft Office Interop'a güvenmeden slaytlar oluşturmanıza, düzenlemenize ve değiştirmenize olanak tanır.

PowerPoint otomasyonu için Microsoft Office Interop'a kıyasla bir .NET kütüphanesi kullanmanın avantajları nelerdir?

IronPPT gibi bir .NET kütüphanesi kullanmak, istikrar, çapraz platform uyumluluğu sunar ve lisanslı bir Microsoft Office kurulumuna ihtiyaç duymaz, bu da sunucu ve konteyner ortamları için idealdir.

C# kullanarak bir PowerPoint sunumuna nasıl yeni bir slayt eklerim?

IronPPT ile, sunumunuzu new PresentationDocument() ile başlattıktan sonra AddSlide() yöntemi kullanarak yeni bir slayt ekleyebilirsiniz.

PowerPoint sunumunda mevcut slaytları programlı olarak çoğaltabilir miyim?

Evet, IronPPT, Slides koleksiyonuna erişerek ve slayt içeriğini verimli bir şekilde çoğaltmak için yöntemler kullanarak slaytları çoğaltmanıza olanak tanır.

C# kullanarak bir PowerPoint slaytına biçimlendirilmiş metin nasıl eklerim?

IronPPT, slaytlara metin eklemek ve formatlamak için AddText() gibi yöntemler ve SetFont() ve SetColor() gibi metin biçimlendirme seçenekleri sunar.

C#'da bir PowerPoint slaytına resim ekleme süreci nedir?

new Image() kullanarak bir resim yükleyebilir, ardından slaydınıza slide.AddImage() ile ekleyip, pozisyonunu ve boyutunu programlı olarak ayarlayabilirsiniz.

Veri odaklı PowerPoint sunumları oluşturmak için şablonları nasıl kullanırım?

IronPPT, şablonları yer tutucularla yüklemeyi destekler ve bu yer tutucuları ReplaceText() gibi yöntemlerle dinamik verilerle değiştirerek raporları otomatik olarak oluşturabilirsiniz.

C# ile PowerPoint otomasyonunda hata yönetimi için en iyi uygulamalar nelerdir?

Otomasyon kodunuzu try-catch bloklarıyla sararak IOException ve UnauthorizedAccessException gibi istisnaları yönetin. Hataların kaydedilmesi, hata ayıklamanıza ve sağlam otomasyon sağlamanıza yardımcı olabilir.

PowerPoint slaytlarında C# koleksiyonlarından veri kullanarak tabloları nasıl oluşturabilirim?

Tabloları oluşturmak için IronPPT'nin AddTable() yöntemini kullanın, ardından her hücrenin görünümünü TextBody.Paragraphs.DefaultTextStyle aracılığıyla özelleştirerek C# koleksiyonlarından verilerle doldurun.

IronPPT, platformlar arası PowerPoint otomasyon çözümleri geliştirmek için uygun mudur?

Evet, IronPPT; Windows, Linux ve macOS dahil olmak üzere çeşitli platformlarda çalışır ve Docker konteynerlerinde dağıtımı destekler, bu da onu platformlar arası uygulamalar için ideal kılar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara