2

我在使用 xdocreport 库时使用以下模板填充表 在此处输入图像描述

我正在使用的 Java 代码如下所示:

            InputStream in = GenerateStakeholderReport.class.getResourceAsStream( "StakeholderReport_Template.docx" );
        IXDocReport report = XDocReportRegistry.getRegistry().loadReport( in, TemplateEngineKind.Velocity );
        FieldsMetadata metadata = report.createFieldsMetadata();
        metadata.load( "stakeholders", StakeHolder.class, true );
        IContext context = report.createContext();
        Project project = new Project( "Project 1", "A project for Oragisational Change",
                                       "System Implementation", "Bob Yardley","Peter");
        context.put( "project", project );
        List<StakeHolder> stakeholders = new ArrayList<StakeHolder>();
        stakeholders.add( new StakeHolder( "01", "External", "President", "Head Quarter", "High", "5000", "Key Infulencer" ) );
        stakeholders.add( new StakeHolder( "02", "Internal", "CEO", "Head Quarter", "High", "2500", "Key Infulencer"  ) );
        context.put( "stakeholders", stakeholders );
        OutputStream out = new FileOutputStream( new File( "StakeHolderReport_Out.docx" ) );
        report.process( context, out );

我得到的输出不是我所期望的;未填充表行(应该有 2 行)。此外,没有显示两个列标题

在此处输入图像描述

我究竟做错了什么?

4

2 回答 2

0

尝试添加@before-row到第一个 MergeField 之前,然后#foreach...添加到@after-row最后一个 MergeField 之前#end

看到这个:https ://github.com/opensagres/xdocreport/wiki/ODTReportingJavaMainListFieldAdvancedTable

于 2020-10-01T13:31:24.510 回答
0

您将 foreach 放在列中。你必须排队。

  1. 删除 foreach 和第一列的末尾。
  2. 在表的标题和正文之间创建一条线。
  3. 将 foreach 代码放在这一行。--> #foreach(利益相关者中的$s)
  4. 在表格的页脚中创建一行并将“结束”放在那里。---> #结束
于 2020-11-04T20:14:54.170 回答