使用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文件的更多相关文章

  1. Spire.DOC生成表格测试

    首先,很感谢Jack对我的信任,让我来写一个评测,在此对Jack说一声抱歉,由于本人愚钝,并且最近项目比较紧张,把评测这个事情脱了一个月之久,由于往后的日子可能更忙,所以今晚抽空只能只写了一个小程序来 ...

  2. C# 将PowerPoint文件转换成PDF文件

    PowerPoint的优势在于对演示文档的操作上,而用PPT查看资料,反而会很麻烦.这时候,把PPT转换成PDF格式保存,再浏览,不失为一个好办法.在日常编程中和开发软件时,我们也有这样的需要.本文旨 ...

  3. 使用C#程序处理PowerPoint文件中的字符串

    最近, 有同事偶然发现Microsoft  Office PowerPoint可以被看作是一个压缩包,然后通过WinRAR解压出来一组XML文件.解压出来的文件包括: 一个索引文件名称为:[Conte ...

  4. springMVC(4)---生成excel文件并导出

    springMVC(4)---生成excel文件并导出 在开发过程中,需要将数据库中的数据以excel表格的方式导出. 首先说明.我这里用的是Apache的POI项目,它是目前比较成熟的HSSF接口, ...

  5. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  6. SQL*Plus生成html文件

    最近使用SQL*Plus命令生成html文件,遇到一些有意思的知识点,顺便记录一下,方便以后需要的时候而这些知识点又忘记而捉急.好记性不如烂笔头吗! 为什么要用SQL*Plus生成html文件?   ...

  7. vim保存文件时,生成.un~文件

    在用vim保存文件时,文件夹下生成.un~文件 怎么删除这些文件呢 在网上搜索的答案: http://stackoverflow.com/questions/15660669/what-is-a-un ...

  8. WPF根据Oracle数据库的表,生成CS文件小工具

    开发小工具的原因: 1.我们公司的开发是客户端用C#,服务端用Java,前后台在通讯交互的时候,会用到Oracle数据库的字段,因为服务器端有公司总经理开发的一个根据Oracle数据库的表生成的cla ...

  9. 简单生成svg文件

    this.fileSaveSync = function (file, data) { var fs = require('fs-extra'); fs.writeFileSync(file, dat ...

随机推荐

  1. echarts3 -arcgis echarts.js修改

     在echarts.js中修改修改 clone 方法    其中 source instance of Array 修改为Object.prototype.toString.call(source)  ...

  2. 安卓中的Model-View-Presenter模式介绍

    转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0425/2782.html 英文原文:Introduction to M ...

  3. Android Gson解析

    目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),解析速度最快的是Gson,下载地址:https://co ...

  4. CSS基础篇之背景、过渡动画

    background-origin(背景原点) 设置元素背景图片的原始起始位置.必须保证背景是background-repeat为no-repeat属性才能生效. background-origin: ...

  5. 正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法

    正在运行的android程序,按home键之后退回到桌面,在次点击程序图标避免再次重新启动程序解决办法 例如:一个android程序包含两个Activity,分别为MainActivity和Other ...

  6. MVC学习一:EF

    目录 一.EF修改和删除的多种方法 二.标准查询where 三.include 四.skip take 五.反射获取实例属性 六.EF DLL数据访问帮助类 一.EF修改和删除的多种方法 方法1:官方 ...

  7. 辛巴学院-Unity-剑英陪你零基础学c#系列(三)计算与类型

    辛巴学院:正大光明的不务正业. 中秋节快乐,每逢佳节倍思亲,尤其是那素未谋面的老婆,对吧,屌丝们.   今天我们来探索一下C#里面奇怪的计算,奇怪的类型. 奇怪的计算 当我刚刚接触计算机编程的时候,一 ...

  8. JavaScript常见原生DOM操作API总结

    [TOC] 最近面试的时候被这个问题给卡了,所以抽时间好好复习一下. 几种对象 Node Node是一个接口,中文叫节点,很多类型的DOM元素都是继承于它,都共享着相同的基本属性和方法.常见的Node ...

  9. 几个常用Json组件的性能测试

    上一篇文章中我已经介绍了JsonBuilder方案的整体思路以及一个版本的雏形代码,他现在已经是可以使用的了,但是因为是实时反射的,所以效率并不高. 鉴于几位博友对Json转换组件的性能有兴趣,我先放 ...

  10. 跟我一起数据挖掘(21)——redis

    什么是Redis Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工 ...