Charts
Bar, line, pie, doughnut, scatter, area and more — with full series styling and native PPTX rendering.
NetCorePpt is a pure C# library for creating PPTX files — a complete port of PptxGen.js. Build charts, tables, shapes, and rich slides entirely in code, with zero dependency on Microsoft Office.
using NetCorePpt;
using NetCorePpt.CoreInterfaces;
using NetCorePpt.CoreEnums;
var pres = new PptxGen();
var slide = pres.addSlide();
slide.addText("Quarterly Revenue",
new TextPropsOptions {
x = 1, y = 0.5, w = 8, h = 1,
fontSize = 32, bold = true
});
// data = new List<OptsChartData> { ... }
slide.addChart(ChartType.bar, data,
new ChartOpts { x = 1, y = 2, w = 8, h = 4.5 });
await pres.exportToFile("report.pptx");
Every feature from PptxGen.js, reimagined as idiomatic .NET. Strongly typed, ready for servers and containers.
Bar, line, pie, doughnut, scatter, area and more — with full series styling and native PPTX rendering.
Styled tables with per-cell formatting, alignment, spans, and column-width control.
Multi-run text, fonts, colors, bullets, hyperlinks, and precise positioning in inches or cm.
Rectangles, lines, arrows, stars, plus images with cropping, rounding, and placeholders.
Define masters and layouts once; reuse across decks for consistent branding.
Files open cleanly in PowerPoint, Keynote, Google Slides, and LibreOffice. No render glitches.
No Office install, no COM, no Windows-only APIs. Runs on Linux, macOS, and Windows containers.
A real C# codebase — strongly typed, nullable-aware, with clean XML docs.
The API mirrors PptxGen.js, so any JavaScript example you already know translates almost line-for-line into C#.
using NetCorePpt;
using NetCorePpt.CoreInterfaces;
var pres = new PptxGen();
var slide = pres.addSlide();
slide.addText("Hello from C#", new TextPropsOptions {
x = 1.0, y = 1.0, w = 8.0, h = 1.5,
fontSize = 40, bold = true,
color = "6D28D9"
});
slide.addImage("logo.png", new ImageProps {
x = 7.5, y = 4.0, w = 1.5, h = 1.5
});
await pres.exportToFile("hello.pptx");
using NetCorePpt;
using NetCorePpt.CoreInterfaces;
using NetCorePpt.CoreEnums;
var pres = new PptxGen();
var slide = pres.addSlide();
var qtrs = new List<List<string>> {
new List<string> { "Q1", "Q2", "Q3", "Q4" } };
var data = new List<OptsChartData> {
new OptsChartData { name = "2025", labels = qtrs,
values = new List<double?> { 42, 55, 38, 61 } },
new OptsChartData { name = "2026", labels = qtrs,
values = new List<double?> { 48, 60, 44, 70 } }
};
slide.addChart(ChartType.bar, data, new ChartOpts {
x = 1.0, y = 2.0, w = 8.0, h = 4.5,
showValue = true,
chartColors = new List<string> { "6D28D9", "14B8A6" }
});
await pres.exportToFile("chart.pptx");
var head = new TableCellProps {
bold = true, fill = "6D28D9", color = "FFFFFF"
};
var rows = new List<List<TableCell>> {
new List<TableCell> {
new TableCell { text = "Product", options = head },
new TableCell { text = "Units", options = head },
new TableCell { text = "Revenue", options = head }
},
new List<TableCell> { "Widget A", "1,240", "$31,000" },
new List<TableCell> { "Widget B", "980", "$24,500" }
};
slide.addTable(rows, new TableProps {
x = 1.0, y = 2.0, w = 8.0, rowH = 0.45,
fill = "F8FAFC", fontSize = 14, color = "334155",
border = new BorderProps("E2E8F0", null, 1)
});
await pres.exportToFile("table.pptx");
No mockups here — these are the exact PPTX slides NetCorePpt renders from the C# above. Open them in PowerPoint, Keynote, or Google Slides.
If you've ever wrestled with Office Interop on a server, you know the pain. NetCorePpt skips all of it — no Office install, no COM hell, no Windows lock-in.
We replaced a flaky Office Interop service with NetCorePpt and cut our reporting pipeline from 40 minutes to under a second. It just runs in a Linux container now.
I already knew the PptxGen.js API, so my first slide was done in ten minutes. The C# port feels native — strong typing catches my typos before I even run it.
Our clients get branded decks generated from their data every morning, automatically. No one touches PowerPoint. NetCorePpt made that possible on a server with no GUI.
Pay yearly. Prices follow your language and billing region.
A fully functional evaluation build for developers exploring NetCorePpt. Every feature is unlocked — the only restriction is a 20-slide-per-presentation cap. Perfect for prototyping and learning the API before committing to a paid license.
Up to 20 slides per presentation
For individual developers, freelancers, and solo founders. One named developer may use NetCorePpt in unlimited projects — commercial SaaS, internal tools, client deliverables — with no per-deploy fees. Includes one year of updates and priority email support.
≈ ¥600 / year for visitors from China
For small teams and startups of up to 10 developers working on shared codebases. Every member can use NetCorePpt across unlimited projects and repositories. Ideal for growing engineering teams that need consistent tooling and a single procurement point.
≈ ¥3,000 / year for visitors from China
For organizations with no headcount cap. Any number of developers across any number of teams, repositories, and business units may use NetCorePpt without tracking seats. Includes a dedicated support channel, priority bug fixes, and one year of updates for the entire organization.
≈ ¥6,000 / year for visitors from China
A real Single User License at a test-only price, so the whole purchase, webhook and license-email chain can be verified end to end. Only shown from the test host or from the whitelisted test client IP.
≈ ¥10 / year for visitors from China
Test price — visible only on the test site or from the whitelisted IP.
Yes. Every API surface from PptxGen.js — slides, text, charts, tables, shapes, images, media, masters, and layouts — has been rewritten as idiomatic C#. The behavior and PPTX output match the original.
No. NetCorePpt writes PPTX files directly. There is no dependency on Office, COM, or any native binary. It runs on Linux, macOS, and Windows.
With a Developer License, yes — ship NetCorePpt inside your commercial applications, SaaS, and internal tools with no per-deploy fees.
.NET 6, 8, and 10. The package also ships .NET Standard 2.1 and 2.0 builds, which run on any compatible runtime — including .NET 7 and .NET Framework 4.8+.
When the license year ends, the license must be renewed to keep using the library. Renewing extends updates and support for another year.
Email support with a 1-business-day response target on weekdays. Bug reports are prioritized and typically patched within a release cycle.
Generate clean, compatible PPTX from pure C# — today.
Get a License