report_reportlab - CSDN
精华内容
参与话题
  • 通过前面2次的学习,咱们已经可以将数据库中的区域信息和Cognos地图中的信息进行匹配(词典),并且可以展示基本的数据了 这回,我们来实现下在地图中,通过单击地图中的区域,跳转到该区域的明细中去 ...

    通过前面2次的学习,咱们已经可以将数据库中的区域信息和Cognos地图中的信息进行匹配(词典),并且可以展示基本的数据了

    这回,我们来实现下在地图中,通过单击地图中的区域,跳转到该区域的明细中去

    1. 新建中国地图报表

    比较熟练的同学应该知道,在Cognos中有个追溯定义,在这里是差不多的

    我们就来实现下,单击中国,跳转到中国地图中去

    我们首先来新建一张报表,拖一个地图,选择中国地图

    ,目前我们没有数据,先不管,空着的地图也可以

    2. 地图追溯

    下面我们回到世界地图,设置地图追溯

    我们先选中区域层:

    在属性栏中,找到地图追溯

    我们单击新建,会弹出一个搜索框

    ,我们找到中国,然后确定

    确定后,会弹出追溯定义的编辑页面

    ,这个我们是熟悉些的,

    下面,我们就开始设置追溯即可

    好了,到这里,我们就制作完成了,快运行下看看效果吧

    这时,我们把鼠标移到中国上,会变成一个“手型”,是可以点击的,我们单击后,报表会跳转到中国地图

    ,现在还是什么都没有,我们稍后完善下

    一个简单的在地图上追溯的功能我们就完成了



    展开全文
  • 这里随手记录一下小功能,在交叉表显示占比,之前遇到过一个问题,

    这里随手记录一下小功能,在交叉表显示占比,之前遇到过一个问题,当时没有实现忘记是为什么了。

    可以参考的报表:

    ReportStudio入门教程(七十三) - 计算占比(使用total)


    ReportStudio入门教程(七十四) - 计算占比(使用percentage)

    1. 基本报表

    现在,我们在表头上,显示个占比

    2. 新建数据项

    这里就是用函数算了下,for report 就是针对当前报表

    3. 拖到报表上

    4. 运行




    展开全文
  • report

    2018-03-26 11:19:10
    <!DOCTYPE html><html>&...OCLint Report</title><style type='text/css'> .priority1, .priority2, .priority3, .cmplr-error...
    <!DOCTYPE html><html><head><title>OCLint Report</title><style type='text/css'>                             .priority1, .priority2, .priority3,          .cmplr-error, .cmplr-warning, .checker-bug {     font-weight: bold;                           text-align: center;                      }                                            .priority1, .priority2, .priority3 {             color: #BF0A30;                          }                                            .priority1 { background-color: #FFC200; }    .priority2 { background-color: #FFD3A6; }    .priority3 { background-color: #FFEEB5; }    .cmplr-error, .cmplr-warning {                   background-color: #BF0A30;               }                                            .cmplr-error { color: #FFC200; }             .cmplr-warning { color: #FFD3A6; }           .checker-bug {                                   background-color: #002868;                   color: white;                            }                                            table {                                          border: 2px solid gray;                      border-collapse: collapse;                   -moz-box-shadow: 3px 3px 4px #AAA;           -webkit-box-shadow: 3px 3px 4px #AAA;        box-shadow: 3px 3px 4px #AAA;            }                                            td, th {                                         border: 1px solid #D3D3D3;                   padding: 4px 20px 4px 20px;              }                                            th {                                             text-shadow: 2px 2px 2px white;              border-bottom: 1px solid gray;               background-color: #E9F4FF;               }</style></head><body><h1>OCLint Report</h1><hr /><h2>Summary</h2><table><thead><tr><th>Total Files</th><th>Files with Violations</th><th>Priority 1</th><th>Priority 2</th><th>Priority 3</th><th>Compiler Errors</th><th>Compiler Warnings</th><th>Clang Static Analyzer</th></tr></thead><tbody><tr><td>48</td><td>8</td><td class='priority1'>0</td><td class='priority2'>0</td><td class='priority3'>53</td><td class='cmplr-error'>0</td><td class='cmplr-warning'>0</td><td class='checker-bug'>0</td></tr></tbody></table><hr /><table><thead><tr><th>File</th><th>Location</th><th>Rule Name</th><th>Rule Category</th><th>Priority</th><th>Message</th></tr></thead><tbody><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Views/SMHomeHeadTableViewCell.m</td><td>88:26</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'cycleScrollView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Views/SMHomeHeadTableViewCell.m</td><td>61:9</td><td>short variable name</td><td>naming</td><td class='priority3'>3</td><td>Length of variable name `lb` is 2, which is shorter than the threshold of 3</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMProductListViewController.m</td><td>36:20</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMProductListViewController.m</td><td>43:25</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMProductListViewController.m</td><td>43:72</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'section' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMProductListViewController.m</td><td>54:23</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMProductListViewController.m</td><td>54:72</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'indexPath' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>58:25</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'url' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>67:20</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>74:25</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>74:72</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'section' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>85:44</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'selectionList' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>89:39</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'selectionList' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>93:24</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'selectionList' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsViewController.m</td><td>69:5</td><td>short variable name</td><td>naming</td><td class='priority3'>3</td><td>Length of variable name `vc` is 2, which is shorter than the threshold of 3</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>73:12</td><td>unnecessary else statement</td><td>redundant</td><td class='priority3'>3</td><td></td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>49:20</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>58:43</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>62:25</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>81:24</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>86:23</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>91:24</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>91:72</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'section' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>95:23</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMPrdDetailViewController.m</td><td>95:73</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'section' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>126:12</td><td>unnecessary else statement</td><td>redundant</td><td class='priority3'>3</td><td></td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>120:16</td><td>unnecessary else statement</td><td>redundant</td><td class='priority3'>3</td><td></td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>77:20</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>88:24</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'selectionList' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>95:44</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'selectionList' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>99:39</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'selectionList' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>104:43</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>108:25</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>134:24</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>142:23</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>142:73</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'section' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>146:23</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>151:24</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMHomeViewController.m</td><td>151:72</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'section' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Tools/YDNetClient.m</td><td>55:9</td><td>short variable name</td><td>naming</td><td class='priority3'>3</td><td>Length of variable name `i` is 1, which is shorter than the threshold of 3</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Tools/YDNetClient.m</td><td>41:5</td><td>parameter reassignment</td><td>convention</td><td class='priority3'>3</td><td></td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/BaseClasees/YDWebViewController.m</td><td>46:18</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'webView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/BaseClasees/YDWebViewController.m</td><td>46:57</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'navigation' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/BaseClasees/YDWebViewController.m</td><td>46:94</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'error' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>81:12</td><td>unnecessary else statement</td><td>redundant</td><td class='priority3'>3</td><td></td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>76:16</td><td>unnecessary else statement</td><td>redundant</td><td class='priority3'>3</td><td></td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>43:20</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>52:43</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>56:25</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>89:24</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>101:23</td><td>unused method parameter</td><td>unused</td><td class='priority3'>3</td><td>The parameter 'tableView' is unused.</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>45:9</td><td>short variable name</td><td>naming</td><td class='priority3'>3</td><td>Length of variable name `vc` is 2, which is shorter than the threshold of 3</td></tr><tr><td>/Users/Xuan/Desktop/ShoppingMall/ShoppingMall/Classes/SMNewsDetailViewController.m</td><td>91:9</td><td>short variable name</td><td>naming</td><td class='priority3'>3</td><td>Length of variable name `lb` is 2, which is shorter than the threshold of 3</td></tr></tbody></table><hr /><p>Sun Mar 25 23:04:50 2018
    | Generated with <a href='http://oclint.org'>OCLint v0.13</a>.</p></body></html>


    展开全文
  • XDocReport的简单使用

    千次阅读 2018-12-02 18:37:15
    XDocReport介绍初步了解XDocReport适用范围源码地址模板引擎一个填充的简单例子需求设计设计填充模板最终效果图填充字段设置我对填充字段的理解图片填充设置代码编写maven依赖填充类模板加载设置域模拟填充数据开始...

    初步了解XDocReport

    适用范围

    XDocReport是一个用来进行文档填充和文档格式转换的java api。在一些项目中,我们可能需要对一份模板里的某些字段进行填充,比如电子合同中需要填写双方信息以及一些金额数据。这时候,我们就可以用XDocReport来实现我们的功能。如果需要把word文档转成pdf,也可以用XDocReport,但是其对中文支持不太好,可能需要用其它工具。所以这篇文章也主要介绍如何使用XDocReport进行文档填充。

    文档填充支持的格式包括docx和odt,docx可以使用Office创建和查看,odt可以使用openoffice和libreoffice创建和查看。两种文档在设计模板上会有些许不同,在代码上没有任何区别,下面会详细介绍。

    源码地址

    在git上可以找到XDocReport的源码。在其README.md里有详细的Getting Started。通过官方教程,可以非常快速且详细地了解其使用方法。

    模板引擎

    XDocReport使用的模板引擎是freemarker和velocity,如果想具体什么是模板引擎以及上述两者模板引擎有什么区别,可以找些文章看看。需要提醒的是,官方教程大多数采用的是velocity(当然也有介绍freemarker),但是我这采用的freemarker。二者的填充占位符有所不同,这点需要注意,如果设置反了自然就不会填充成功了。

    一个填充的简单例子

    需求设计

    这里我们先模拟下需求:完成一份项目文档,需要填充的内容包括项目文档的标题、项目信息、相关人员信息以及一个logo。这里涉及的填充包括字符串填充,pojo填充,list填充以及图片填充,基本可以满足99%的实际需求。接下去,我们需要设计模板,然后再根据模板设计代码,最后进行测试。

    设计填充模板

    最终效果图

    我先展示模板的最终图(freemarker的占位符):

    填充字段设置

    首先是字段占位符的设置。我们的文档是docx格式,用office打开后,在你需要填充的地方,先按ctrl+f9,是不是出现了一对有阴影的括弧?如果没出现,可能是因为开启了笔记本上F1-F12的快捷键。在括弧上右键,选择“编辑域”,然后选择“MergeField”(如果是中文的就找找看意思相近的,貌似是邮件合并)。接着在上面填写占位符,如果到时候在程序上选择freemarker模板引擎,那么占位符就是...,velocity,{...},占位符里填写占位的字符串。如果是velocity模板引擎,那么占位符就是,然后后面填写占位的字符串。由于我打算用freemarker,所以可以从图片里看到,我的都是${…}。总结一下就是,ctrl+f9 -> 邮件编辑域 -> MergeField -> 填写占位符。

    如果填充的文档是odt格式,那么只需要填写占位符就好了。

    我对填充字段的理解

    上面也说过,填充的数据会包括字符串、pojo、list,所以他们占位符里的字段其实是不太一样的。其实,可以理解成java传到模板里的数据就是一个对象,如果对象是string,那么填充的就是其本身,如title;如果对象里包括多个成员变量,那么填充的就是对象里的成员变量,如project. name 和 project. info;如果对象是个list,那么其实在模板里是一样的,但是在java程序里会有所不同。

    图片填充设置

    说完了字段的填充,最后再说下图片的填充。图片的话,先随便插入一张图片,然后点下图片,对图片插入书签,设置书签名。OK,这样模板就搞定了。

    代码编写

    maven依赖

    	<dependencies>
            <!--xdocreport必备的依赖-->
            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.document</artifactId>
                <version>2.0.1</version>
            </dependency>
            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.core</artifactId>
                <version>2.0.1</version>
            </dependency>
            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.template</artifactId>
                <version>2.0.1</version>
            </dependency>
            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.converter</artifactId>
                <version>2.0.1</version>
            </dependency>
            <!--模板引擎相关-->
            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId>
                <version>2.0.1</version>
            </dependency>
            <!--文档格式相关-->
            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.document.docx</artifactId>
                <version>2.0.1</version>
            </dependency>
        </dependencies>
    

    如果采用velocity引擎,或者文档格式为odt,那么就需要换成相应的依赖。

    填充类

    Project类

    	public class Project {
    	    private String name;
    	    private String info;
    	
    	    省略set、get和全参构造器
    	}
    

    Employee类

    	public class Employee {
    	    private String name;
    	    private String job;
    	    private String result;
    	
    	    //省略set、get和全参构造器
    	}
    

    模板加载

    		//1.通过freemarker模板引擎加载文档,并缓存到registry中
            InputStream in = new FileInputStream(
    							"E:\\project\\xdocreport\\file\\test.docx");
            IXDocReport report = XDocReportRegistry
                    .getRegistry()
                    .loadReport(in, TemplateEngineKind.Freemarker);
    

    这里指定了模板路径以及模板引擎。

    设置域

    		//2.设置填充字段、填充类以及是否为list。
            FieldsMetadata fieldsMetadata = report.createFieldsMetadata();
            fieldsMetadata.load("project", Project.class);
            fieldsMetadata.load("employees", Employee.class, true);
            fieldsMetadata.addFieldAsImage("logo");
            report.setFieldsMetadata(fieldsMetadata);
    

    结合之前写的模板里的填充字段,也就是域,可以发现

    1. title只是一个字符串,并不需要设置;
    2. project和employees的区别在于project是单个对象,而employees是多个对象的集合。所以这里employees要加个"true",表明它是个List。
    3. 图片设置和字段设置有所区别
    4. 这里设置的域的名字要和模板里的名字保持一致

    模拟填充数据

    		//3.模拟填充数据
    		String title = "项目开发报告";
            Project project = new Project("网站开发", "截至2018年年底");
            List<Employee> employees = new ArrayList<Employee>();
            employees.add(new Employee("张三", "产品", "任务完成"));
            employees.add(new Employee("李四", "开发", "任务完成"));
            IImageProvider logo = new FileImageProvider(
                                    new File("E:\\project\\xdocreport\\file\\1.jpg"),
                                            true);
            logo.setSize(200f, 100f);
    

    开始填充

    		//4.匹配填充字段和填充数据,进行填充
            IContext context = report.createContext();
            context.put("title", title);
            context.put("project", project);
            context.put("employees", employees);
            context.put("logo", logo);
            OutputStream out = new FileOutputStream(
                                new File("E:\\project\\xdocreport\\file\\test-out.docx"));
            report.process(context, out);
    

    测试结果

    更多内容…

    Getting Started的内容非常详细,还有能多内容没来得及看。

    第一次更新:2018.12.2

    展开全文
  • Ureport2 ---报表设计(1)

    万次阅读 2017-09-08 19:09:57
    一、概述:UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。相比UReport1,UReport2重写了全部代码,弥补了UReport1在功能及性能上的各种不足。...
  • C. Report

    2019-08-09 21:39:52
    题意:给出n个无序的数以及m个操作,每个操作由两个数组成,第一个数是操作的方式,第二个数 i 是操作的范围,若第一个数是1,则给 1-i 个数按升序排序,若第二个数是2,则给 1-i 个数按降序排列。...
  • UReport2介绍

    万次阅读 2018-06-25 11:03:40
    UReport2介绍​ UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意复杂的中国式报表。​ 在UReport2中,提供了全新的基于网页的报表设计器,可以在Chrome、Firefox、Edge等...
  • 全球变暖的数据

    2019-05-23 01:16:20
    西雅图的气温已经达到华氏90度。这不是抱怨,但人们绝对相信全球变暖正在发生,需要做出一些改变来解决它。但本文并不讨论关于气候变化问题,而是关于数据的问题。具体而言,这是关于非结构化数据的增长问题,如果...
  • 09 ORA系列:ORA-06553 PLS-306

    万次阅读 2018-07-28 11:42:59
    如果希望对常见的Oracle异常ORA报错解决方案有系统的了解,请看《ORACLE系列异常总结ORA》。   ORA-06553: PLS-306: wrong number or types of arguments in call to 'OGC_AREA' 调用area时,错误数值或者参数...
  • Log抓取和分析-BugReport

    万次阅读 2018-03-01 11:28:41
    参考文章: http://blog.csdn.net/createchance/article/details/51954142 Google为了方便Android开发人员...开发人员可以使用adb bugreport命令获取系统运行的所有log信息。命令如下:adb bugreport &gt; bug...
  • Devexpress XtraReport 设置页面大小单位

    万次阅读 2013-04-08 16:24:23
    今天做报表打印,研究怎么设置纸张大小,原理的项目里面用的单位是厘米,Devexpress XtraReport怎么也找不到,后来无意中发现有这么一个属性。。。 哭了,这里记录一下
  • Seal Report是统计报表中最好用,最常用的一个。它提供了一个完整的从其他任何数据库产生报表的架构。该产品主要关注于容易安装和报表设计,一旦安装好,报表很快就可以建立并且发布。该组件完全开源,使用C#语言...
  • AD10 report_drc.xsl不存在解决方法

    万次阅读 2014-02-08 15:08:03
    DRC检查时,遇到的问题,生成不了报告,软件提示...report_drc.xsl不存在。 现在终于找到了解决的方案。 由于软件安装是会将一些路径默认的安装到用户路径下,造成找不到对应的程序,只需要修改报告路径即可。
  • classification_report解释

    万次阅读 2018-07-22 15:39:33
    sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。  主要参数:  y_true:1维数组,或标签指示器数组/稀疏矩阵,目标值。  y_pred:1维...
  • To display the conditions report re-run your application with ‘debug’ enabled. 在网上看了很多有的说是jar包重复,有的说是Controller包和Application包处于平行位置。然后我都检查了,然后我出的错不属于...
  • Report Builder简单的使用操作

    万次阅读 2018-08-08 16:30:27
    Report Builder 使用Report Builder 新建模型文件 将建好的模型文件放到服务器上报表文件夹中 配置EBS请求界面 将报表配置到相应责任对应的请求组中 运行请求获取报表XML 文件用于开发报表模版 将保存好的...
  • 在开发环境的电脑上可生成报表,但是一到客户端就提示An error occurred during local report processing错误。 猜想是缺dll,补充上 Microsoft.ReportViewer.Common.dll Microsoft.ReportViewer.WinForms.dll ...
  • 解决安装完VS2017后,无法用ReportDesigner/ReportViewer打开.rdlc文件 VS2017初始安装后和VS2015一样,都没有ReportDesigner/ReportViewer,但是按照VS2015的安装ReportDesigner方法在Modify中却没有找到该插件。 ...
  • CrashReport(崩溃日志)分析方法

    万次阅读 2014-11-07 17:33:55
    最近迭代的一个版本,被苹果reject,居然说有beng'k
  • 面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> ...
1 2 3 4 5 ... 20
收藏数 332,105
精华内容 132,842
关键字:

report