C#程序可以输出Word文档,可以输出PDF格式文档,还可以输出PPT文档,此处使用WinForm窗体程序简略介绍PPT程序的输出。

工具/原料

  • VS2012
  • PPT模板文件

方法/步骤

  1. 1

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

  2. 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. 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. 4

    填充数据分为两步:一、是否需要克隆复制模板页,即模板输出一页或多页;二、对模板页进行数据填充

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

     

                        }

                    }

     

                   

     

                   

     

                }

     

            }

    END

注意事项

  • 克隆模板时,可以根据实际需要,修改循环次数,确定克隆页数
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。