使用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 ...
随机推荐
- pip安装MySQL-python报错
pip install MySQL-pythonerror: command 'gcc' failed with exit status 1 yum install -y python-develpi ...
- ThreadLocal类详解:原理、源码、用法
以下是本文目录: 1.从数据库连接探究 ThreadLocal 2.剖析 ThreadLocal 源码 3. ThreadLocal 应用场景 4. 通过面试题理解 ThreadLocal 1.从数据 ...
- hibernate不同版本获取获取sessionFactory
hibernate4时,我们采用以下方式获取会话工厂: // 1. 解析我们在hibernate.cfg.xml中的配置 Configuration configuration = new Confi ...
- Java 中类型转换
int -> String int i=12345; String s=""; 第一种方法:s=i+""; 第二种方法:s=String.valueOf( ...
- iPhone6/6 Plus兩款大屏智能機
蘋果終於順應時代潮流,於今年推出了iPhone6/6 Plus兩款大屏智能機.但很快就有人開始懷念老款iPhone的“一手掌控”,畢竟不是所有人都有一雙大手.不過近期就有傳言稱,蘋果將於明年重新推出一 ...
- SDOI 2016 征途 决策单调性
题目大意:有一个数列,将其分成m段,求最小方差 先弄出n^3的dp,打出决策点,然后发现决策点是单调递增的,决策单调性搞一搞就可以了 #include<bits/stdc++.h> #de ...
- poj3187-Backward Digit Sums(枚举全排列)
一,题意: 输入n,sum,求1~n的数,如何排列之后,相邻两列相加,直到得出最后的结果等于sum,输出1~n的排列(杨辉三角) 3 1 2 4 //1~n 全排列中的一个排列 4 3 6 7 ...
- 一个App完成入门篇(七)- 完成发现页面
第七章是入门篇的倒数第二篇文章了,明天整个APP将进入收官. 本节教程主要要教会大家使用二维码扫描和用do_WebView组件加在html页面. 导入项目 do_WebView组件 扫描功能 自定义事 ...
- [Voice communications] 声音的滤波
本系列文章主要是介绍 Web Audio API 的相关知识,以及 web语音通信 中会遇到的一些问题,阐述可能存在错误,还请多多斧正! 通过设备获取音频流会不可避免的渗入一些杂音,这些杂音可能来自你 ...
- 从天猫和支付宝身上学习opcity与rgba
不知道什么时候,一个双层透明的对话框悄然流行了起来. 我们在各大网站上都能见到类似这样的对话框: 这样的聚焦更明显,用户体验更好,也显得更加的高大上. 先说点题外话,这种布局如何用CSS+DIV去实现 ...