使用Free Spire.Presentation生成PowerPoint文件
使用Free Spire.Presentation生成PowerPoint文件
前言
之前有写过一篇使用Free Spire.XLS生成图表的文章,朋友圈内反应还不错,都希望我能继续写下去,把类似的产品都介绍一下。正好我前段时间把Spire的产品都过了一遍,趁着还算熟悉,写点文章分享一下自己的心得。这次介绍的是使用Free Spire.Presentation生成一个简单的PowerPoint文件。
准备
首先从官方网站上下载Free Spire.Presentation组件,安装后有一个Sample Center,类似功能展示的一个程序,有实例代码和相关dll文件,可编译运行,非常方便;当然,如果你只是想下载dll文件,可以使用nuget获取,命令如下:
PM> Install-Package FreeSpire.Presentation
步骤
1. 创建一个PowerPoint文档,默认会生成一张新的幻灯片。
Presentation ppt = new Presentation();
ISlide slide = ppt.Slides[0];
2. 使用图片来填充幻灯片的背景。
//需要设置Type为Custom, 否则无效
slide.SlideBackground.Type = BackgroundType.Custom;
slide.SlideBackground.Fill.FillType = FillFormatType.Picture;
slide.SlideBackground.Fill.PictureFill.Picture.EmbedImage = ppt.Images.Append(Image.FromFile("bg.jpg"));
slide.SlideBackground.Fill.PictureFill.FillType = PictureFillType.Stretch;
3. 接下来填充一段文本,并设置相关的样式。这里要说明一下,如果不进行样式的设置,生成文本的颜色、字体、大小等会很奇怪。
RectangleF textRect = new RectangleF(295, 26, 129, 30);
IAutoShape shape = slide.Shapes.AppendShape(ShapeType.Rectangle, textRect);
shape.Fill.FillType = FillFormatType.None;
shape.Line.FillType = FillFormatType.None;
TextParagraph tp = new TextParagraph();
TextRange tr = new TextRange("National Report");
tr.Format.LatinFont = new TextFont("Arial Narrow");
tr.Format.FontHeight = 18f;
tr.Fill.FillType = FillFormatType.Solid;
tr.Fill.SolidColor.Color = Color.Black;
tp.TextRanges.Append(tr);
4. 插入一个表格并填充数据,然后设置表格的样式。我使用的数组在一个二维数组里,正好对应表格的行列。由于代码过长,这里只贴关键部分:
ITable table = ppt.Slides[0].Shapes.AppendTable(ppt.SlideSize.Size.Width / 2 - 275, 90, widths, heights);
//填充数据
for (int i = 0; i < 13; i++)
{
for (int j = 0; j < 5; j++)
{
table[j, i].TextFrame.Text = dataStr[i, j];
//设置字体
table[j, i].TextFrame.Paragraphs[0].TextRanges[0].LatinFont = new TextFont("Arial Narrow");
//居中显示文本
table[j, i].TextFrame.Paragraphs[0].Alignment = TextAlignmentType.Center;
}
}
//使用内建的表格样式
table.StylePreset = TableStylePreset.MediumStyle4Accent1;
5. 设置页脚的内容。
ppt.SetFooterText("Free Spire.Presentation");
//默认不可见,下同
ppt.SetFooterVisible(true);
ppt.SetSlideNoVisible(true);
ppt.SetDateTimeVisible(true);
6. 保存到本地并打开。
ppt.SaveToFile("Result.pptx", FileFormat.Pptx2010);
System.Diagnostics.Process.Start("Result.pptx");
生成的PowerPoint文件如下图:

总结
网上操作PowerPoint的组件不多,Free Spire.Presentation的优势在于免费易用,功能相较Commercial版本略有不足,而且做多只能处理10张幻灯片,不过对于普通使用者来说已经足够了。
使用Free Spire.Presentation生成PowerPoint文件的更多相关文章
- Spire.DOC生成表格测试
首先,很感谢Jack对我的信任,让我来写一个评测,在此对Jack说一声抱歉,由于本人愚钝,并且最近项目比较紧张,把评测这个事情脱了一个月之久,由于往后的日子可能更忙,所以今晚抽空只能只写了一个小程序来 ...
- C# 将PowerPoint文件转换成PDF文件
PowerPoint的优势在于对演示文档的操作上,而用PPT查看资料,反而会很麻烦.这时候,把PPT转换成PDF格式保存,再浏览,不失为一个好办法.在日常编程中和开发软件时,我们也有这样的需要.本文旨 ...
- 使用C#程序处理PowerPoint文件中的字符串
最近, 有同事偶然发现Microsoft Office PowerPoint可以被看作是一个压缩包,然后通过WinRAR解压出来一组XML文件.解压出来的文件包括: 一个索引文件名称为:[Conte ...
- springMVC(4)---生成excel文件并导出
springMVC(4)---生成excel文件并导出 在开发过程中,需要将数据库中的数据以excel表格的方式导出. 首先说明.我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口, ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- SQL*Plus生成html文件
最近使用SQL*Plus命令生成html文件,遇到一些有意思的知识点,顺便记录一下,方便以后需要的时候而这些知识点又忘记而捉急.好记性不如烂笔头吗! 为什么要用SQL*Plus生成html文件? ...
- vim保存文件时,生成.un~文件
在用vim保存文件时,文件夹下生成.un~文件 怎么删除这些文件呢 在网上搜索的答案: http://stackoverflow.com/questions/15660669/what-is-a-un ...
- WPF根据Oracle数据库的表,生成CS文件小工具
开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...
- 简单生成svg文件
this.fileSaveSync = function (file, data) { var fs = require('fs-extra'); fs.writeFileSync(file, dat ...
随机推荐
- Python之路Day17-jQuery
本节内容: jQuery 参考:http://jquery.cuishifeng.cn/ 模块 <==>类库 Dom/Bom/JavaScript的类库 版本:1.x 1.12 2. ...
- android 通过uri获取bitmap图片并压缩
很多人在调用图库选择图片时会在onActivityResult中用Media.getBitmap来获取返回的图片,如下: Uri mImageCaptureUri = data.getData(); ...
- tab22
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ZK 使用jfreeChart
前台: <?page title="Grid使用" contentType="text/html;charset=UTF-8"?> <zk x ...
- 2016NOIP总结
从暑假开始学OI到现在,也已经过了4个月.说实话真是快啊...感觉没学什么东西就要去比赛了.怎么说呢,感觉自己真的是个菜鸡啊为什么就要去比赛呢.当初来到这里,是凭着兴趣来的,第一天能打那么多道题(19 ...
- touchstart、touchmove、touchend 实现移动端上的触屏拖拽
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 高通AR和友盟SDK的AndroidManifest.xml合并
高通AR和友盟SDK的AndroidManifest.xml合并 因为高通的AR在android中一开始就要启动,所有主Activity要设置为高通的Activity,即android:name=&q ...
- Android课程---简单的音乐播放器
第一个:用Activity实现 activity_music_play1.xml <?xml version="1.0" encoding="utf-8" ...
- sessionStorage/localStorage 本地存储
if(!sessionStorage.getItem('vote2')||sessionStorage.getItem('vote2')==NaN)sessionStorage.setItem(' ...
- C++ 控制台代码输出控制
在C++控制台应用程序中可以控制控制台输出的字体颜色和 接受任意按键退出 #ifndef CONSOLE_UTILS_H #define CONSOLE_UTILS_H #include <wi ...