C# 程序输出PPT文档

2025-12-10 18:14:34

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。
猜你喜欢