引言
在企业自动化报告、批量生成教学课件、数据可视化输出等场景中,通过代码动态生成 powerpoint 文档能够显著提升工作效率。本文将介绍如何基于 .net 平台,使用 free spire.presentation 组件以 c# 代码方式创建和编辑 pptx 文档,涵盖幻灯片管理、文本、图片、形状等核心元素的操作方法。
一、环境准备
1.1 组件安装
在 visual studio 中,推荐通过 nuget 包管理器引入组件。在包管理器控制台执行以下命令:
install-package freespire.presentation
或使用 .net cli:
dotnet add package freespire.presentation
安装完成后,在代码文件顶部引入所需命名空间:
using spire.presentation; using spire.presentation.drawing; using system.drawing;
1.2 核心对象模型
组件的 api 设计与 powerpoint 原生对象模型对应,主要包含以下核心类:
presentation:表示整个演示文稿文档,是所有操作的入口islide:表示单张幻灯片,通过presentation.slides集合访问iautoshape:表示形状对象,文本内容通过textframe属性承载iembedimage:表示嵌入到幻灯片中的图片对象
二、创建演示文稿与幻灯片管理
2.1 新建空白演示文稿
实例化 presentation 对象时,会自动包含一张空白幻灯片。如果需要从零构建幻灯片集合,可以先移除默认页:
// 创建演示文稿实例 presentation ppt = new presentation(); // 移除默认的空白幻灯片(可选) ppt.slides.removeat(0);
2.2 添加与插入幻灯片
// 在末尾追加空白幻灯片 islide slide1 = ppt.slides.append(); // 在指定索引位置插入幻灯片(索引从0开始) islide slide2 = ppt.slides.insert(1); // 获取幻灯片总数 int slidecount = ppt.slides.count;
2.3 设置幻灯片尺寸
默认幻灯片尺寸为标准 16:9 宽屏,可根据需求调整:
// 设置为 4:3 比例 ppt.slidesize.type = slidesizetype.screen4x3; // 自定义尺寸(单位:磅) ppt.slidesize.size = new sizef(1024, 768);
三、添加文本内容
powerpoint 中的文本承载于形状之内,通过添加矩形形状并设置其文本框架即可实现文本框效果。
3.1 基础文本框
// 获取第一张幻灯片 islide slide = ppt.slides[0]; // 定义文本框位置和大小 (x, y, 宽度, 高度) rectanglef textrect = new rectanglef(100, 100, 500, 80); // 添加矩形形状作为文本框 iautoshape textshape = slide.shapes.appendshape(shapetype.rectangle, textrect); // 设置形状无填充、无边框 textshape.fill.filltype = fillformattype.none; textshape.shapestyle.linecolor.color = color.transparent; // 设置文本内容 textshape.textframe.text = "c# 编程创建 powerpoint 演示文稿";
3.2 文本格式设置
// 获取文本范围对象
textrange textrange = textshape.textframe.textrange;
// 设置字体
textrange.latinfont = new textfont("微软雅黑");
textrange.fontheight = 32;
textrange.isbold = tristate.true;
// 设置文字颜色
textrange.fill.filltype = fillformattype.solid;
textrange.fill.solidcolor.color = color.fromargb(30, 80, 160);
// 设置对齐方式
textshape.textframe.paragraphs[0].alignment = textalignmenttype.center;
3.3 多段落文本
对于包含多个段落的内容,可通过段落集合进行管理:
textframe textframe = textshape.textframe; textframe.paragraphs.clear(); // 添加第一个段落 textparagraph para1 = new textparagraph(); para1.text = "第一段落内容"; para1.alignment = textalignmenttype.left; textframe.paragraphs.append(para1); // 添加第二个段落 textparagraph para2 = new textparagraph(); para2.text = "第二段落内容"; para2.firstlineindent = 30; // 首行缩进 textframe.paragraphs.append(para2);
四、插入图片
4.1 嵌入本地图片
// 定义图片显示区域
rectanglef imagerect = new rectanglef(150, 200, 400, 250);
// 从本地文件嵌入图片
iembedimage image = slide.shapes.appendembedimage(
shapetype.rectangle,
@"c:\images\sample.png",
imagerect
);
// 移除图片边框
image.line.fillformat.filltype = fillformattype.none;
4.2 设置幻灯片背景
// 设置背景类型为自定义
slide.slidebackground.type = backgroundtype.custom;
slide.slidebackground.fill.filltype = fillformattype.picture;
slide.slidebackground.fill.picturefill.filltype = picturefilltype.stretch;
// 加载背景图片
image bgimage = image.fromfile(@"c:\images\background.jpg");
slide.slidebackground.fill.picturefill.picture.embedimage =
ppt.images.append(bgimage);
五、保存与导出
5.1 保存为 pptx 格式
// 保存为 powerpoint 2019 格式
ppt.savetofile("output.pptx", fileformat.pptx2019);
5.2 导出为其他格式
// 导出为 pdf
ppt.savetofile("output.pdf", fileformat.pdf);
// 将单张幻灯片导出为图片
image slideimage = ppt.slides[0].saveasimage();
slideimage.save("slide_0.png", system.drawing.imaging.imageformat.png);
六、完整示例
以下是一个综合示例,创建包含封面页和内容页的演示文稿:
using spire.presentation;
using spire.presentation.drawing;
using system.drawing;
namespace pptgenerator
{
class program
{
static void main(string[] args)
{
presentation ppt = new presentation();
ppt.slides.removeat(0);
// ===== 第1页:封面 =====
islide coverslide = ppt.slides.append();
// 标题
iautoshape titleshape = coverslide.shapes.appendshape(
shapetype.rectangle,
new rectanglef(120, 180, 520, 80)
);
titleshape.fill.filltype = fillformattype.none;
titleshape.shapestyle.linecolor.color = color.transparent;
titleshape.textframe.text = "技术方案汇报";
textrange titlerange = titleshape.textframe.textrange;
titlerange.latinfont = new textfont("微软雅黑");
titlerange.fontheight = 44;
titlerange.isbold = tristate.true;
titlerange.fill.solidcolor.color = color.fromargb(30, 60, 120);
titleshape.textframe.paragraphs[0].alignment = textalignmenttype.center;
// 副标题
iautoshape subtitleshape = coverslide.shapes.appendshape(
shapetype.rectangle,
new rectanglef(120, 280, 520, 50)
);
subtitleshape.fill.filltype = fillformattype.none;
subtitleshape.shapestyle.linecolor.color = color.transparent;
subtitleshape.textframe.text = "——基于 .net 平台的自动化方案";
textrange subrange = subtitleshape.textframe.textrange;
subrange.latinfont = new textfont("微软雅黑");
subrange.fontheight = 20;
subrange.fill.solidcolor.color = color.gray;
subtitleshape.textframe.paragraphs[0].alignment = textalignmenttype.center;
// ===== 第2页:内容页 =====
islide contentslide = ppt.slides.append();
// 页面标题
iautoshape pagetitle = contentslide.shapes.appendshape(
shapetype.rectangle,
new rectanglef(50, 40, 600, 50)
);
pagetitle.fill.filltype = fillformattype.none;
pagetitle.shapestyle.linecolor.color = color.transparent;
pagetitle.textframe.text = "核心功能模块";
textrange pagetitlerange = pagetitle.textframe.textrange;
pagetitlerange.fontheight = 28;
pagetitlerange.isbold = tristate.true;
// 项目列表
string[] items = { "数据采集模块", "分析处理引擎", "可视化输出", "报表自动生成" };
for (int i = 0; i < items.length; i++)
{
iautoshape itemshape = contentslide.shapes.appendshape(
shapetype.rectangle,
new rectanglef(80, 120 + i * 50, 500, 40)
);
itemshape.fill.filltype = fillformattype.none;
itemshape.shapestyle.linecolor.color = color.transparent;
itemshape.textframe.text = $"• {items[i]}";
itemshape.textframe.textrange.fontheight = 20;
}
// 保存文件
ppt.savetofile("presentation_demo.pptx", fileformat.pptx2019);
}
}
}
通过以上方法,可以在不安装 microsoft office 的环境下,以纯代码方式完成 powerpoint 文档的创建与编辑,适用于服务端批量生成、自动化报告输出等场景。实际项目中可结合业务数据,进一步扩展模板替换、图表动态绑定等功能。
到此这篇关于使用c#编程生成ppt演示文稿的操作方法的文章就介绍到这了,更多相关c#生成ppt演示文稿内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论