使用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. 执行mysqld_safe报错:mysqld does not exist or is not executable

    执行mysqld_safe报错: [root@edu data]# /usr/local/mysql5.7/bin/mysqld_safe --user=mysql160427 12:41:28 my ...

  2. ubuntu14.04上Virtualbox安装win7(使用Ghost镜像安装,启用USB设备支持,设置共享目录)

    由于某些软件只有windows版本,于是只好安装个虚拟机win7 /**************************安装*************************************/ ...

  3. JQuery的父、子、兄弟节点查找方法

    jQuery.parent(expr)           //找父元素 jQuery.parents(expr)          //找到所有祖先元素,不限于父元素 jQuery.children ...

  4. 安装zookeeper

    从zookeeper官方网站下载安装包:zookeeper-3.4.9.tar.gz 解压安装 tar xvf zookeeper-3.4.9.tar.gz -C /usr/java cd /usr/ ...

  5. Microsoft Avro介绍

    Microsoft发布了他们自己对Apache Avro通信协议的实现.Avro被描述为"紧凑的二进制数据序列化格式,类似于Thrift或者Protocol Buffers",同时 ...

  6. ENode框架Conference案例分析系列之 - 复杂情况的读库更新设计

    问题背景 Conference案例,是一个关于在线创建会议(类似QCon这种全球开发者大会).在线管理会议位置信息.在线预订某个会议的位置的,这样一个系统.具体可以看微软的这个项目的主页:http:/ ...

  7. 自己动手写一个简单的MVC框架(第一版)

    一.MVC概念回顾 路由(Route).控制器(Controller).行为(Action).模型(Model).视图(View) 用一句简单地话来描述以上关键点: 路由(Route)就相当于一个公司 ...

  8. MySQL 对比数据库表结构

    200 ? "200px" : this.width)!important;} --> 介绍 本章主要介绍怎样对比数据库的表结构的差异,这里主要介绍使用mysqldiff工具 ...

  9. java基础-多线程执行

    package Thanqi; public class TestApple implements Runnable{ //苹果的数量 private int count = 5; //拿苹果 //s ...

  10. JS数字计算精度误差的解决方法

    本篇文章主要是对javascript避免数字计算精度误差的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助. 如果我问你 0.1 + 0.2 等于几?你可能会送我一个白眼,0.1 + 0. ...