智能生成PPT分析报告方法与流程

文档序号:17441067发布日期:2019-04-17 04:46阅读:362来源:国知局
本发明属于ppt生成
技术领域
:,特别是涉及一种智能生成ppt分析报告方法。
背景技术
::在现代化办公过程中,常采用ppt展示,直观易懂;ppt的制作,常需要办公人员话费很长时间,尤其是制作网页ppt;影响了现代化办公效率。本发明提出了一种智能生成ppt分析报告方法,通过建立ppt模板,只需要用前端约定好json数据格式向ppt模板中填充,不需要考虑排版和背景图片等复杂情况;方便操作、提高效率。技术实现要素:本发明的目的在于提供智能生成ppt分析报告方法,通过构建用于将ppt文件的元素存储到内存中的json数据对象,然后构建生成ppt模板对象,最后根据json数据对象存储到内存中的数据实现ppt模板对象,实现ppt的智能快速生成,解决了现有智能生成ppt分析报告操作繁琐、效率低的问题。为解决上述技术问题,本发明是通过以下技术方案实现的:本发明为智能生成ppt分析报告方法,包括如下:步骤一:建立包含content、page、index以及type的json数据对象,用于将ppt文件的元素存储到内存中;其中,所述page对应ppt文件中幻灯片的页码;所述index对应幻灯片中元素的加载顺序;所述content对应所述元素中的数据;所述type对应所述元素类型;所述元素类型包括table表格、text文本以及chart图;示例:{"content":"2018年1-8月公司主要财务指标情况-重要指标完成率","type":"text","page":"41","index":"2"};其中,当表头有合并行或列时,需要带上下标;body有合并列时也需要带上下标,不写下标默认1-1;例如:\"header\":[{\"index0\":\"业务板块->2-1\",\"index1\":\"营业收入同比分析(万元)->1-4\",\"index2\":\"归属于集团净利润同比分析(万元)->1-4\"},{\"index0\":\"2018年1-*月->1-1\",\"index1\":\"2017年同期->1-1\",\"index2\":\"变动额->1-1\",\"index3\":\"变动比率->1-1\",\"index4\":\"2018年1-*月->1-1\",\"index5\":\"2017年同期->1-1\",\"index6\":\"变动额->1-1\",\"index7\":\"变动比率->1-1\"},{\"index0\":\"业务板块\",\"index1\":\"2018年1-*月\",\"index2\":\"2017年同期\",\"index3\":\"变动额\",\"index4\":\"变动比率\",\"index5\":\"2018年1-*月\",\"index6\":\"2017年同期\",\"index7\":\"变动额\",\"index8\":\"变动比率\"}。当所述表格的表头有合并行时,被合并的单元格要有数据;示例:"{\"header\":[{\"index0\":\"业务板块->2-1\",\"index1\":\"营业收入同比分析(万元)->1-4\",\"index2\":\"归属于集团净利润同比分析(万元)->1-4\"},{\"index0\":\"2018年1-*月->1-1\",\"index1\":\"2017年同期->1-1\",\"index2\":\"变动额->1-1\",\"index3\":\"变动比率->1-1\",\"index4\":\"2018年1-*月->1-1\",\"index5\":\"2017年同期->1-1\",\"index6\":\"变动额->1-1\",\"index7\":\"变动比率->1-1\"},第一行的index0(\"index0\":\"业务板块->2-1\")合并了第二行的index0(\"index0\":\"2018年1-*月->1-1\"),但第二行仍要有index0存在,数据可以为空,或者第二行以index1开始,即在数据中被侵占的那个单元格需要空出来,合并列则无要求;图表不存在合并单元格,因此图表数据的header,也即表头不传。步骤二:建立ppt模板对象;其中,所述ppt模板对象包括幻灯片对象、幻灯片数量以及幻灯片索引page;所述幻灯片对象包括元素对象、元素数量以及元素索引index;所述幻灯片索引page以及元素索引index构成元素对象的唯一标识;所述元素对象包括文本框、图表以及表格;将ppt模板的页码page和ppt模板的xml文件中元素的加载顺序index组合配到前端数据中,一个page+index组合(唯一)指向模板中一个存在的元素,该元素可以是文本框、图表、表格,利用docx4j插件读取模板到内存,然后创建ppt模板对象;示例:创建presentationmlpackage对象:filefile=newfile(readpath);presentationmlpackagepptpkg=pptxutils.loadpptpackage(file,null);returnpptpkg。步骤三:根据json数据对象存储到内存中的数据实现ppt模板对象;示例:objectobj=commonfun.getttemfrompackage(pptpkg,page,index)。优选地,步骤三中根据json数据对象存储到内存中的数据实现ppt模板对象具体包括如下:若元素对象的类型为表格:根据page、index获取表格对象,根据json数据的第一行获取表格的列数,根据json数据的行数获取表格的行数,最终根据数据的行列数在模板表格的基础上重新划定表格的行列数,使表格行列数根据数据变动;根据数据的->a-b标志来判断是否需要合并单元格,1-1即无合并(数据中不携带1-1默认1-1),2-1则向下合并一行,1-2则向右合并一列,以此类推。有行合并时需要将被合并的单元格在数据中空出来(参见数据格式介绍),列合并则不需要。由于前端的数据表头会多一行,因此在第二行开始跳过1行数据:jsonrow=(jsonobject)json.get(i+1);最后根据数据的行和列进行循环嵌套遍历,替换单元格数据;若元素对象的类型为文本框:获取所述文本框中的文本段落,通过文本框中的文本段落实现ppt模板对象对应的文本框对象;首先根据page和index获取元素对象,判断是否属于文本框对象cctextbody<p:txbody>,再根据文本框对象获取文本框中的段落元素集合:listm<cttextparagraph>tps=textbody.getp();<a:p>;清空段落样式和内容:tps.cleat(),最后将文本json数据插入文本段落中:regular.sett(str)。若元素对象的类型为表格:获取所述表格对应的json数据,通过表格对应的json数据实现ppt模板对象对应的表格对象;根据page、index获取表格对象,根据json数据的第一行获取表格的列数,根据json数据的行数获取表格的行数,最终根据数据的行列数在模板表格的基础上重新划定表格的行列数,使表格行列数根据数据变动。若元素对象的类型为图表:首先获取slide.xml文件中与chart.xml文件关联的id;示例:silde.getrelationshipspart().getpart(ctrelid.getid());<c:chartr:id=”rid2”>;再根据id找到对应的chart.xml文件来修改excle文件;最终获取到chart.xml文件,将json数据进行填充替换;示例:chartchart=(chart)pptpkg.getparts().get(f.getpartname());最终获取到chart.xml文件,将json数据进行填充替换。最后再替换slide.xml中的数据即可。另由于图表中一般不存在合并单元格问题,因此图表的表头header不需要传,使用模板上的表头即可。本发明具有以下有益效果:本发明通过构建用于将ppt文件的元素存储到内存中的json数据对象,然后构建生成ppt模板对象,最后根据json数据对象存储到内存中的数据实现ppt模板对象,实现ppt的智能快速生成,不需要考虑排版和背景图片等复杂情况;方便操作、提高效率。当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明的智能生成ppt分析报告方法的流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。请参阅图1所示,本发明为智能生成ppt分析报告方法,包括如下:步骤一:建立包含content、page、index以及type的json数据对象,用于将ppt文件的元素存储到内存中;其中,page对应ppt文件中幻灯片的页码;index对应幻灯片中元素的加载顺序;content对应元素中的数据;type对应元素类型;元素类型包括table表格、text文本以及chart图;示例:{"content":"2018年1-8月公司主要财务指标情况-重要指标完成率","type":"text","page":"41","index":"2"};其中,当表头有合并行或列时,需要带上下标;body有合并列时也需要带上下标,不写下标默认1-1;例如:\"header\":[{\"index0\":\"业务板块->2-1\",\"index1\":\"营业收入同比分析(万元)->1-4\",\"index2\":\"归属于集团净利润同比分析(万元)->1-4\"},{\"index0\":\"2018年1-*月->1-1\",\"index1\":\"2017年同期->1-1\",\"index2\":\"变动额->1-1\",\"index3\":\"变动比率->1-1\",\"index4\":\"2018年1-*月->1-1\",\"index5\":\"2017年同期->1-1\",\"index6\":\"变动额->1-1\",\"index7\":\"变动比率->1-1\"},{\"index0\":\"业务板块\",\"index1\":\"2018年1-*月\",\"index2\":\"2017年同期\",\"index3\":\"变动额\",\"index4\":\"变动比率\",\"index5\":\"2018年1-*月\",\"index6\":\"2017年同期\",\"index7\":\"变动额\",\"index8\":\"变动比率\"}。当表格的表头有合并行时,被合并的单元格要有数据;示例:"{\"header\":[{\"index0\":\"业务板块->2-1\",\"index1\":\"营业收入同比分析(万元)->1-4\",\"index2\":\"归属于集团净利润同比分析(万元)->1-4\"},{\"index0\":\"2018年1-*月->1-1\",\"index1\":\"2017年同期->1-1\",\"index2\":\"变动额->1-1\",\"index3\":\"变动比率->1-1\",\"index4\":\"2018年1-*月->1-1\",\"index5\":\"2017年同期->1-1\",\"index6\":\"变动额->1-1\",\"index7\":\"变动比率->1-1\"},第一行的index0(\"index0\":\"业务板块->2-1\")合并了第二行的index0(\"index0\":\"2018年1-*月->1-1\"),但第二行仍要有index0存在,数据可以为空,或者第二行以index1开始,即在数据中被侵占的那个单元格需要空出来,合并列则无要求;图表不存在合并单元格,因此图表数据的header,也即表头不传。步骤二:建立ppt模板对象;其中,ppt模板对象包括幻灯片对象、幻灯片数量以及幻灯片索引page;幻灯片对象包括元素对象、元素数量以及元素索引index;幻灯片索引page以及元素索引index构成元素对象的唯一标识;元素对象包括文本框、图表以及表格;将ppt模板的页码page和ppt模板的xml文件中元素的加载顺序index组合配到前端数据中,一个page+index组合(唯一)指向模板中一个存在的元素,该元素可以是文本框、图表、表格,利用docx4j插件读取模板到内存,然后创建ppt模板对象;示例:创建presentationmlpackage对象:filefile=newfile(readpath);presentationmlpackagepptpkg=pptxutils.loadpptpackage(file,null);returnpptpkg。步骤三:根据json数据对象存储到内存中的数据实现ppt模板对象;示例:objectobj=commonfun.getttemfrompackage(pptpkg,page,index)。优选地,步骤三中根据json数据对象存储到内存中的数据实现ppt模板对象具体包括如下:若元素对象的类型为表格:根据page、index获取表格对象,根据json数据的第一行获取表格的列数,根据json数据的行数获取表格的行数,最终根据数据的行列数在模板表格的基础上重新划定表格的行列数,使表格行列数根据数据变动;根据数据的->a-b标志来判断是否需要合并单元格,1-1即无合并(数据中不携带1-1默认1-1),2-1则向下合并一行,1-2则向右合并一列,以此类推。有行合并时需要将被合并的单元格在数据中空出来(参见数据格式介绍),列合并则不需要。由于前端的数据表头会多一行,因此在第二行开始跳过1行数据:jsonrow=(jsonobject)json.get(i+1);最后根据数据的行和列进行循环嵌套遍历,替换单元格数据;若元素对象的类型为文本框:获取文本框中的文本段落,通过文本框中的文本段落实现ppt模板对象对应的文本框对象;首先根据page和index获取元素对象,判断是否属于文本框对象cctextbody<p:txbody>,再根据文本框对象获取文本框中的段落元素集合:listm<cttextparagraph>tps=textbody.getp();<a:p>;清空段落样式和内容:tps.cleat(),最后将文本json数据插入文本段落中:regular.sett(str)。若元素对象的类型为表格:获取表格对应的json数据,通过表格对应的json数据实现ppt模板对象对应的表格对象;根据page、index获取表格对象,根据json数据的第一行获取表格的列数,根据json数据的行数获取表格的行数,最终根据数据的行列数在模板表格的基础上重新划定表格的行列数,使表格行列数根据数据变动。若元素对象的类型为图表:首先获取slide.xml文件中与chart.xml文件关联的id;示例:silde.getrelationshipspart().getpart(ctrelid.getid());<c:chartr:id=”rid2”>;再根据id找到对应的chart.xml文件来修改excle文件;最终获取到chart.xml文件,将json数据进行填充替换;示例:chartchart=(chart)pptpkg.getparts().get(f.getpartname());最终获取到chart.xml文件,将json数据进行填充替换。最后再替换slide.xml中的数据即可。另由于图表中一般不存在合并单元格问题,因此图表的表头header不需要传,使用模板上的表头即可。值得注意的是,上述系统实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中。以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属
技术领域
:技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1