怎样自动把报表插入到词文档中

  

  在很多业务场景中需要在词文档中嵌入报表。比如下图这个报告:   

  

  怎样自动把报表插入到词文档中   

  

  这是一个某大学年度毕业生就业报告,其中表格和统计图的数据来自数据库,如果通过报表工具,制作这样的表格和统计图是轻而易举的事情,但如果要把这些报表和统计图做到词报告里就麻烦很多。以往有两个办法:一个是每次做好报表和统计图之后,导出为词,再手工复制粘贴到词报告中;第二个是把整个报告都做成一个报表模板,然后再一起导出为词。方法一,纯手工操作效率低;方法二,报表工具排版能力有限,生成的字版面效果不够完美。   

  

  那么,还有什么好办法呢?   

  

  通常这类报告都有规定的模板样式,只是要定期替换里面的个别信息,比如上图所示的文档编号,报告时间,标题里的年度,图片,每个章节下的报表和统计图,这些信息是动态变化的,而其他文字描述部分以及整体样式都是固定不变的,所以,如果能把报表嵌入词文档做成流水线式的自动化过程,那就是一件两全其美,事半功倍的事情。   

  

  润乾报表就提供了把报表嵌入词的功能,实现步骤如下:   

  

        1,制作词模板,将需要插入内容的位置设置好书签   

  

  怎样自动把报表插入到词文档中   

  

  比如我们开篇看到的大学毕业生就业报告,我们可以先做成如上图所示的词模板,图示绿色线框位置就是需要定期更新的部分,预先在这些位置插入书签(比如书签名为:编号,时间,标志,年度,报表,统计图),以此标记要插入到词的内容对应插入到什么位置。   

  

        2,制作报表,这一步就不详述了。   

  

        3、调用润乾报表的raqsoft.report.view.oxml.word。DocxChanger里的方法,将图片,文本,报表等内容插入到指定书签位置,生成新单词的报告。   

  

  ,如:   

  

  <代码>//设置报表授权文件文件警察=新文件(“c:/tmp/report5.lic");>   

  <代码>   FileInputStream lis=new FileInputStream(警察);>   

  <代码>   序列。readLicense(序列。P_RPT, lis);>   

  <代码>   文件f=新文件(“E:/test.docx");,,,,,,,,,,,,,,//模板文件=新文件(“D:/out.docx");,,,,,,,,,,,,//输出文件……>   

  <代码>   FileOutputStream安全系数=new FileOutputStream(的);>   

  <代码>   DocxChanger dc=new DocxChanger (f,安全系数);//实例化DocxChanger//在书签“编”号、“时间”、“年度”处插入文字dc.insertText(“编号“,“12345678“);>   

  <代码>   dc.insertText(“时间“,“20170730“);>   

  <代码>   dc.insertText(“年度“,“2017“);//在书签“标志”处插入图片文件文件f1=新文件(“d:/logo.png");dc.insertImage (“logo", f1);//在书签报“表”、“统计图”处插入报表和统计图文件f2=新文件(“d:/毕业去向.rpx");FileInputStream fis=new FileInputStream (f2);>   

  <代码>   “报告=ReportUtils.read (fis);>   

  <代码>   fis.close ();>   

  <代码>   上下文语境=new上下文();,,>   

  <代码>   发动机引擎=新引擎((ReportDefine)报告,上下文);>   

  <代码>   报告=engine.calc ();dc.insertReport(“报表“,报告);>   

  <代码>   文件f3=新文件(“d:/留学.rpx");>   

  <代码>   FileInputStream fis2=new FileInputStream (f3);>   

  <代码>   IReport report2=ReportUtils.read (fis2);>   

  <代码>   fis2.close ();>   

  <代码>   上下文context2=new上下文();,>   

  <代码>   引擎engine2=新引擎((ReportDefine) report2 context2);>   

  <代码>   report2=engine2.calc ();>   

  <代码>   dc.insertReport(“统计图“,report2);//执行所有修改动作,然后关闭输出文件流>

怎样自动把报表插入到词文档中