一个可操作PPT的.Net开源库

news/2024/5/19 20:57:16 标签: powerpoint, .net, .netcore, c#, asp.net

推荐一个简单易用的.NET库,使得可以方便处理PowerPoint演示文稿。

01 项目简介

ShapeCrawler 是一个专为处理 PowerPoint 演示文稿而设计的 .NET 库。这个库为开发者提供了一组简单易用的 API,以便操作 PowerPoint (.pptx) 文件中的各种元素。

ShapeCrawler 库的特点包括:

**1、无需安装 Microsoft Office:**是一个独立的库,不需要在开发或运行环境中安装 Microsoft Office。

**2、基于 Open XML SDK:**基于 Open XML SDK 的基础上,封装的提供更高层次的抽象。Open XML SDK 是一个开源库,提供了Office 文件格式(如 .docx、.xlsx、.pptx 等)的底层API操作。

**3、简单易用:**提供了一个简化的对象模型,使得开发者可以轻松地遍历、查询、修改和创建 PowerPoint 演示文稿中的形状。你可以轻松地获取形状的属性(如位置、大小、填充颜色等),以及修改它们。

**4、支持类型多:**支持包括文本框、图形、图像、图表等操作。

02 使用方法

1、简单示例

// 打开PPT
var pres = new Presentation("xxx.pptx");
var shapes = pres.Slides[0].Shapes;
// 获取PPT的数量
var shapesCount = shapes.Count;
// 获取文本
var shape = shapes.GetByName("TextBox 1");
var text = shape.TextFrame!.Text

2、设置文本框为自动适应

var pres = new Presentation("some.pptx");
var shape = pres.Slides[0].Shapes.GetByName("AutoShape 1");
var textFrame = shape.TextFrame!;

textFrame.AutofitType = AutofitType.Resize;

pres.Save();

3、替换文字

var textFrames = pres.Slides[0].TextFrames();

foreach (var textFrame in textFrames)
{
    textFrame.Text = "some text";
}

pres.Save();

4、更新图片

ar pres = new Presentation("picture.pptx");

// 获取图片控件
var picture = pres.Slides[0].Shapes.GetByName<IPicture>("Picture 1");

// 更改图片
picture.Image.Update("new-image.png");

// 获取图片的MIME
var mimeType = picture.Image.MIME;

pres.Save();

5、表格操作

var pres = new Presentation("some-pptx");
var shapeCollection = pres.Slides[0].Shapes;

shapeCollection.AddTable(x: 50, y: 100, columnsCount: 3, rowsCount: 2);
var addedTable = (ITable)shapeCollection.Last();
var cell = addedTable[0, 0];
cell.TextFrame.Text = "Hi, Table!";

pres.Save();

03 项目地址

https://github.com/ShapeCrawler/ShapeCrawler

更多开源项目: https://github.com/bianchenglequ/NetCodeTop

我是编程乐趣,一个.Net开发经验老程序员,欢迎“关注”我,每天为你分享开源项目和编程知识。
也欢迎加入【.Net技术编程交流社区】,和大家共同学习交流!,点击加入:https://bbs.csdn.net/topics/613465368

- End -


http://www.niftyadmin.cn/n/5396908.html

相关文章

使用vue把一周的时间划分为可以选择多个阶段

提示&#xff1a;使用vue把一周的时间划分为可以选择多个阶段段&#xff08;亲测有效&#xff09; 一、直接复制以下代码 代码如下&#xff08;示例&#xff09;&#xff1a; <template><div class"byted-weektime" mousedown"dian" mousemove&qu…

Debian(Ubuntu)系统Deb包打包说明

Debian(Ubuntu)系统Deb包打包说明 什么是Deb包 DEB是Debian软件包格式的文件扩展名&#xff0c;跟Debian的命名一样&#xff0c;DEB也是因Debra Murdock而得名&#xff0c;她是Debian创始人Ian Murdock的太太。 deb包在Linux操作系统中类似于windows中的软件包&#xff08;e…

Leecode热题100中图论章节 200. 岛屿数量 994. 腐烂的橘子 207. 课程表 208. 实现 Trie (前缀树)

Leecode热题100中图论章节 200. 岛屿数量994. 腐烂的橘子207. 课程表解题思路 208. 实现 Trie (前缀树) 200. 岛屿数量 200. 岛屿数量 // 图论 dfs // leecode题解中nettee的岛屿问题系列通用解法 class Solution {public int numIslands(char[][] grid) {int res 0; // …

hive执行select count(1)返回0

背景&#xff1a; 做数据质量检核任务的时候&#xff0c;有些数据表有数据&#xff0c;直接查hive执行select count(1) from table返回的值一直是0 问题原因&#xff1a; hive通过select count(1)或者select count(*) 查询的是元数据库里面的rownum,如果数据表数据是通过load、…

基于自然语言的跨模态行人重识别技术研究

基于自然语言的跨模态行人重识别技术研究万方数据知识服务平台 第二章 跨模态行人重识别理论基础 2.1 文本-图像检索技术 基于文本信息的跨模态行人重识别本质是基于文本-图像两个模态的行人重识别&#xff0c; 由于跨的两个模态分别是文本和图像&#xff0c; 所以其解决思路…

【Redis】redis配置与数据类型

Redis 配置 Redis 的配置文件位于 Redis 安装目录下&#xff0c;文件名为 redis.conf。在日常使用中&#xff0c;我们一般只会修改一些比较重要的参数。当然redis是支持很多配置参数的&#xff0c;感兴趣的可以自行了解所有的参数&#xff0c;有个大致印象即可。我们可以通过 …

QString编码

1.默认编码 QString是Qt中用于处理字符串的类&#xff0c;它提供了丰富的功能和灵活性。在使用QString时&#xff0c;需要注意以下几个方面&#xff1a; 编码问题&#xff1a;QString默认使用UTF-16编码&#xff0c;因此需要确保在处理字符串时正确处理编码问题。如果需要将QS…

2.22日学习打卡----正则表达式

2.22日学习打卡 目录&#xff1a; 2.22日学习打卡正则表达式什么是正则表达式&#xff1f;正则表达式的作用正则表达式特点基础语法表格元字符Java 中正则表达式的使用正则表达式语法规则内容限定单个字符限定范围字符限定取反限定 长度限定长度限定符号预定义字符正则表达式的…