https://github.com/shapecrawler/shapecrawler
🍂 A .NET library for manipulating PowerPoint presentations
https://github.com/shapecrawler/shapecrawler
csharp dotnet hacktoberfest ooxml openxml powerpoint powerpoint-presentations pptx presentation shapecrawler slide
Last synced: 5 months ago
JSON representation
🍂 A .NET library for manipulating PowerPoint presentations
- Host: GitHub
- URL: https://github.com/shapecrawler/shapecrawler
- Owner: ShapeCrawler
- License: mit
- Created: 2019-07-13T14:04:02.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-04-11T16:54:46.000Z (6 months ago)
- Last Synced: 2025-04-11T17:13:42.541Z (6 months ago)
- Topics: csharp, dotnet, hacktoberfest, ooxml, openxml, powerpoint, powerpoint-presentations, pptx, presentation, shapecrawler, slide
- Language: C#
- Homepage:
- Size: 66.4 MB
- Stars: 344
- Watchers: 8
- Forks: 69
- Open Issues: 63
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README

[](https://makeapullrequest.com)

[](https://github.com/ShapeCrawler/ShapeCrawler/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)
[](https://github.com/ShapeCrawler/ShapeCrawler/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)ShapeCrawler is a .NET library for manipulating PowerPoint presentations. It provides a simplified object model on top of the [Open XML SDK](https://github.com/OfficeDev/Open-XML-SDK), allowing users to process presentations without having Microsoft Office installed.
## Contents
- [Quick Start](#quick-start)
- [How To?](#how-to)
- [Create presentation](#create-presentation)
- [More samples](#more-samples)
- [Prerelease Version](#prerelease-version)
- [Have questions?](#have-questions)
- [How to contribute](#how-to-contribute)
- [Bug Report](#bug-report)
- [Code Contributing](#code-contributing)## Quick Start
> `dotnet add package ShapeCrawler````C#
using var pres = new Presentation("pres.pptx");
var shapes = pres.Slide(1).Shapes;var shapesCount = shapes.Count;
// Get text
var shape = shapes.Shape("TextBox 1");
var text = shape.TextBox!.Text;
```## How To?
### Create presentation
```C#
// create a new presentation
var pres = new Presentation();var shapes = pres.Slide(1).Shapes;
// add new shape
shapes.AddShape(x: 50, y: 60, width: 100, height: 70);
var addedShape = shapes.Last();addedShape.TextBox!.SetText("Hello World!");
pres.Save("my pres.pptx");
```### Update picture
```C#
using var pres = new Presentation("pres.pptx");// get picture shape
var picture = pres.Slide(1).Picture("Picture 1");// change image
var image = System.IO.File.OpenRead("new-image.png");
picture.Image!.Update(image);// get MIME type of image, eg. "image/png"
var mimeType = picture.Image!.Mime;pres.Save();
```### More samples
You can find more usage samples by visiting the [**Wiki page**](https://github.com/ShapeCrawler/ShapeCrawler/wiki/Examples) or [**Examples**](https://github.com/ShapeCrawler/ShapeCrawler/tree/master/examples).## Prerelease Version
To access the latest prerelease builds from the branch `master`, use the NuGet package source `https://www.myget.org/F/shape/api/v3/index.json`.## Have questions?
If you have a question:
- [Join](https://github.com/ShapeCrawler/ShapeCrawler/discussions/categories/q-a) our Discussions Forum and open a discussion;
- You can always email the author at theadamo86@gmail.com## How to contribute?
Give a star⭐ if you find this useful, please give it a star to show your support.### Bug Report
If you encounter an issue, report the bug on the [issue](https://github.com/ShapeCrawler/ShapeCrawler/issues) page.To be able to reproduce a bug, it's often necessary to have the original presentation file attached to the issue description. If this file contains confidential data and cannot be shared publicly, you can securely send it to theadamo86@gmail.com. Of course, if your security policy allow this. We assure you that only the maintainer will access this file, and it will not be shared publicly.
### Code contributing
Pull Requests are welcome! Please read the [Contribution Guide](https://github.com/ShapeCrawler/ShapeCrawler/blob/master/CONTRIBUTING.md) for more details.## Changelog
### Version 0.68.0 - 2025-05-08
🍀Added support adding Scatter Chart [#65](https://github.com/ShapeCrawler/ShapeCrawler/issues/65)
🍀Added support adding Stacked Column Chart [#221](https://github.com/ShapeCrawler/ShapeCrawler/issues/221)
🐞Fixed adding slide with a certain layout [#933](https://github.com/ShapeCrawler/ShapeCrawler/issues/933)
🐞Fixed adding slide [#956](https://github.com/ShapeCrawler/ShapeCrawler/issues/956)
🐞Fixed adding picture [#935](https://github.com/ShapeCrawler/ShapeCrawler/issues/935)Visit [CHANGELOG.md](https://github.com/ShapeCrawler/ShapeCrawler/blob/master/CHANGELOG.md) to see the full change history.