C# 程序输出PPT文档

2025-11-01 22:47:26

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

C# 程序输出PPT文档

C# 程序输出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("文件生成成功!");

        }

C# 程序输出PPT文档

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有限公司董事长,主要从事物联网大数据领域工作";

 

                    }

                }

 

               

 

               

 

            }

 

        }

C# 程序输出PPT文档

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢