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(Prese荏鱿胫协ntation 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有限公司董事长,主要从事物联网大数据领域工作"; } } } }