xml报表的简单开发

 

小编上线了,最近刚学了xml报表,结果蛮简单,过程蛮复杂的。在做xml报表是,首先必须在Word中添加 BI Publisher, 如下图:

 

小编在安装的时候首先在虚拟机中安装BI Publisher ,然后就遇到安装成功,但在Word中显示不了这个插件,然后提示说启动不了 ,然后小编到现在都还没解决,最先提示说没有。Net framework 4.0的版本,然后虚拟机中没有网络,最后在本机中安装了这个插件,然后就可以运行了。

  

再安装好之后就是写xml文件了,如下图

写完之后就是把xml文件导入到BI Publisher 中,然后添加相应的字段,添加完成后可以点击HTML进行预览。

 

之后若你要循环一个表的数据,目前我知道有两种方法:

  • 就是添加重复组,然后在对每一项中添加你要循环的父节点,然后就会在你要循环的字段前出现一个F ,在结尾中出现E,这是一对循环。
  • 也可以在表向导中添加循环,也是数据集写的就是你要循环的父节点中的子节点,把想要循环的字段,全部添加到右边,然后下一步,不用点分组,然后再点击下一步,你可以进行排序,也可以不排序,最后点击完成,完成循环。

 

 

最后就是在PS门户中,在报告工具中->BI发布器中 先添加数据来源,在数据来源添加的是你的xml文件,之后就是添加报告定义,在报告定义中添加的是你的rtf文件 之后就是在开发工具中,在创建好的组件peoplecode –>filedchang ,中写你的代码了。

peoplecode参考:

 


Local File &fileLog = GetFile("C:\Users\ADMINI~1\AppData\Local\Temp\RESUME.log", "w", "a", %FilePath_Absolute);

Local XmlNode &rootNode;
Local XmlDoc &xml;

&xml = CreateXmlDoc("<?xml version='1.0' encoding='UTF-8'?><ROOT/>");
Local XmlNode &docTypeNode = &xml.CreateDocumentType("", "", "");
&rootNode = &xml.CreateDocumentElement("Start", "", &docTypeNode);

Local XmlNode &infoNode = &rootNode.AddElement("RESUME");
Local XmlNode &textNode;

Local string &emplid = WH_EMPLID_WRK.EMPLID.Value;

Local SQL &sql = CreateSQL(SQL.WH_EMPLINF_SQL, &emplid);

Local array of any &arrData = CreateArrayAny();
While &sql.Fetch(&arrData)
   &textNode = &infoNode.AddElement("EMPLID").AddText(String(&arrData [1]));
   &textNode = &infoNode.AddElement("EMPLNAME").AddText(String(&arrData [2]));
   &textNode = &infoNode.AddElement("Marital").AddText(String(&arrData [3]));
   &textNode = &infoNode.AddElement("Birthday").AddText(String(&arrData [4]));
   
   Local XmlNode &childNode3, &childNode4;
   
   &childNode3 = &infoNode.AddElement("P_PHONE_EXP");
   Local SQL &sqlPhone = CreateSQL(SQL.WH_EMPLINF_SQL2, &emplid);
   Local array of any &arrPhone = CreateArrayAny();
   While &sqlPhone.Fetch(&arrPhone)
      
      &childNode4 = &childNode3.AddElement("SUBP_PHONE_EXP");
      
      &textNode = &childNode4.AddElement("Phonetype").AddText(String(&arrPhone [1]));
      &textNode = &childNode4.AddElement("Phone").AddText(String(&arrPhone [2]));
      
   End-While;
   
   Local XmlNode &childNode, &childNode2;
   
   &childNode = &infoNode.AddElement("P_WORK_EXP");
   Local SQL &sqlJob = CreateSQL(SQL.WH_EMPLINF_SQL1, &emplid);
   Local array of any &arrJob = CreateArrayAny();
   While &sqlJob.Fetch(&arrJob)
      
      &childNode2 = &childNode.AddElement("SUBP_WORK_EXP");
      
      &textNode = &childNode2.AddElement("P_EFFDTDATE").AddText(String(&arrJob [1]));
      &textNode = &childNode2.AddElement("P_DEPTID").AddText(String(&arrJob [2]));
      &textNode = &childNode2.AddElement("P_JOB").AddText(String(&arrJob [3]));
      &textNode = &childNode2.AddElement("P_DEPTTYPE").AddText(String(&arrJob [4]));
      
      
   End-While;
   
   
End-While;


Local string &xmlString = &xml.GenFormattedXmlString();

&fileLog.WriteLine(&xmlString);
&fileLog.Close();


/*生成xml文件*/
Local PSXP_RPTDEFNMANAGER:ReportDefn &oRptDefn = create PSXP_RPTDEFNMANAGER:ReportDefn("WH_EMPL");
&oRptDefn.Get();

Local string &filename = "new_1" | Year(%Date) | Month(%Date) | Day(%Date) | Hour(%Datetime) | Minute(%Datetime) | Second(%Datetime) | ".xml";

Local string &filePath = GetEnv("PS_HOME") | "/" | &filename;

Local File &file = GetFile(&filePath, "W", "UTF-8", %FilePath_Absolute);
If Not &file.IsOpen Then
   Error ("系统资源繁忙,请稍后重试");
End-If;
&file.WriteLine(&xmlString);
&file.Close();

&oRptDefn.SetRuntimeDataXMLFile(&filePath);
&oRptDefn.ReportFileName = "员工履历表";

/*打印员工履历*/
&oRptDefn.ProcessReport("WH_EMPL_1", "ZHS", %Date, "RTF");
CommitWork();

&oRptDefn.DisplayOutput();

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值