C# 程序输出PPT文档
1、首先获取PPT输出的引用dll,Aspose.Pdf.dll和Aspose.Slides.dll,添加引用到程序类中。创建一个窗口,添加按钮,点击进行输出PPT的操作。


2、双击按钮添加点击事件,如果不要填充数据,则模板正常输出,如果填充数据,则书写填充数据代码;按钮代码如下:
private void button6_Click(object sender, EventArgs e)
{
//读取模板PPT
Aspose.Slides.Presentation pres = new Aspose.Slides.Presentation("测试模板.ppt");
Aspose.Slides.Slides slds = pres.Slides;
string A00s = "1,2,3,4";
//填充数据
FillData(pres, A00s,"21");
pres.Write("测试输出.ppt");
MessageBox.Show("文件生成成功!");
}

3、克隆复制模板页,代码如下:
private void FillData(Presentation pre, string A00s,string resumeType)
{
Slides slds = pre.Slides;
int A00Start = 0;
int A00End = 0;
int j = 1;
if (resumeType == "22")
{
A00End = 1;
j = 2;
}
//人员数量
string[] arrids = A00s.Split(',');
//按人数克隆模板
ClonePersonBaseInfoSlide(pre, A00s,resumeType, 1);
if (arrids.Length > 0)
{
for (int i = 0; i < arrids.Length; i++)
{
//填充简历页内容
int z = A00Start;
while (z <= A00End)
{
int k = j *i + z;
FillMeetTopicData(pre, slds[k]);
z += 1;
}
}
}
}
4、填充数据分为两步:一、是否需要克隆复制模板页,即模板输出一页或多页;二、对模板页进行数据填充
5、克隆复制模板页,代码如下:
private void ClonePersonBaseInfoSlide(Presentation pre, string A00s,string resumeType, int start)
{
string[] arrids = A00s.Split(',');
//克隆模板
/*************注意:PPT页码从1开始************/
/*************注意:PPT页码从1开始************/
/*************注意:PPT页码从1开始************/
int startPosition = start + 1;
int A00Start = start;
int A00End = start;
//拷贝页数
int copyEnd = 1;
if (resumeType == "22")
{
//如果是22,则拷贝两页
copyEnd = 2;
}
if (arrids.Length >= 1)
{
//从第二人开始,即复制基本信息页,也复制简历页
for (int i = 1; i < arrids.Length; i++)
{
//记录人员的开始页码
A00Start = startPosition;
//克隆人员简历信息页
int k = 0;
while (k < copyEnd)
{
startPosition += 1;
pre.CloneSlide(pre.Slides[k], startPosition);
k += 1;
}
//记录人员的结束页码
startPosition = pre.Slides.Count;
A00End = startPosition;
startPosition += 1;
}
}
}
6、人员信息数据填充,代码如下:
private void FillMeetTopicData(Presentation pre, Aspose.Slides.Slide sld)
{
Aspose.Slides.Shapes sps = sld.Shapes;
try{
string a = sld.FindShape("PersonPhoto") + "";
if (a != "") {
string picPath = @"DefaultPerson.jpg";
if (!File.Exists(picPath))
{
picPath = @"DefaultPerson.jpg";
}
int picPId = pre.Pictures.Add(new Picture(pre, picPath));
((PictureFrame)sld.FindShape("PersonPhoto")).PictureId = picPId;
}
}
catch(Exception e){
throw new ApplicationException("" + e);
}
foreach (Aspose.Slides.Shape sp in sps)
{
Aspose.Slides.TextFrame tf = sp.TextFrame;
if (tf != null)
{
if (tf.Text == "Name" || tf.Text == "Name1")
{
tf.Paragraphs[0].Portions[0].Text = "胡XX,";
}
if (tf.Text == "XRZW" || tf.Text == "XRZW1")
{
tf.Paragraphs[0].Portions[0].Text = "男,19XX年X月出生,中共党员,大学本科(四川XX大学XX工程专业),北京XXXX有限公司董事长,主要从事物联网大数据领域工作,参与项目X项,拥有实用新型专利X件、软件著作权X件。";
}
if (tf.Text == "SEX" || tf.Text == "SEX1")
{
tf.Paragraphs[0].Portions[0].Text = "男";
}
if (tf.Text == "XMCY" || tf.Text == "XMCY1")
{
tf.Paragraphs[0].Portions[0].Text = "中共党员,大学本科(四川XX大学XX工程专业),北京XXXX有限公司董事长,主要从事物联网大数据领域工作";
}
}
}
}
