zoukankan      html  css  js  c++  java
  • jasper+ireport实现table控件用list作为数据源

    需求是主报表中加入两个或者两个以上的table,也是刚刚发现table可以水平放置。主报表的数据源是json,table的是list<String>,这里没有用javabean所以当你有一组数据的时候,建议你建立一个size的List,这样才不会丢失数据,这里贴出代码,知道拷贝翟铁就可以出结果。

    本文版权归__馋猫和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

    先给出效果图,效果图如下↓

    Java代码TableJsonTest.java如下↓

      1 package a.test.xmlfile;
      2 
      3 import java.io.BufferedReader;
      4 import java.io.ByteArrayInputStream;
      5 import java.io.FileInputStream;
      6 import java.io.IOException;
      7 import java.io.InputStream;
      8 import java.io.InputStreamReader;
      9 import java.util.ArrayList;
     10 import java.util.HashMap;
     11 import java.util.List;
     12 import java.util.Locale;
     13 
     14 import net.sf.jasperreports.engine.JRParameter;
     15 import net.sf.jasperreports.engine.JasperCompileManager;
     16 import net.sf.jasperreports.engine.JasperFillManager;
     17 import net.sf.jasperreports.engine.JasperPrint;
     18 import net.sf.jasperreports.engine.JasperReport;
     19 import net.sf.jasperreports.engine.design.JasperDesign;
     20 import net.sf.jasperreports.engine.query.JsonQueryExecuterFactory;
     21 import net.sf.jasperreports.engine.xml.JRXmlLoader;
     22 import net.sf.jasperreports.view.JasperViewer;
     23 
     24 public class TableJsonTest {
     25     public static String ReadFile(String Path) {
     26         BufferedReader reader = null;
     27         String laststr = "";
     28         try {
     29             FileInputStream fileInputStream = new FileInputStream(Path);
     30             InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
     31             reader = new BufferedReader(inputStreamReader);
     32             String tempString = null;
     33             while ((tempString = reader.readLine()) != null) {
     34                 laststr += tempString;
     35             }
     36             reader.close();
     37         } catch (IOException e) {
     38             e.printStackTrace();
     39         } finally {
     40             if (reader != null) {
     41                 try {
     42                     reader.close();
     43                 } catch (IOException e) {
     44                     e.printStackTrace();
     45                 }
     46             }
     47         }
     48         return laststr;
     49     }
     50 
     51     public static void main(String[] args) {
     52 
     53         List<String> nameList = new ArrayList<>();
     54         nameList.add("name1");
     55         nameList.add("name2");
     56         nameList.add("name3");
     57         nameList.add("name4");
     58         nameList.add("name5");
     59 
     60         List<String> ageList = new ArrayList<>();
     61         ageList.add("age1");
     62         ageList.add("age2");
     63         ageList.add("age3");
     64         ageList.add("age4");
     65         ageList.add("age5");
     66 
     67         List<String> codeList = new ArrayList<>();
     68         codeList.add("code1");
     69         codeList.add("code2");
     70         codeList.add("code3");
     71         codeList.add("code4");
     72         codeList.add("code5");
     73         codeList.add("code6");
     74 
     75         List<String> personList = new ArrayList<>();
     76         personList.add("person1");
     77         personList.add("person2");
     78         personList.add("person3");
     79         personList.add("person4");
     80         personList.add("person5");
     81         personList.add("person6");
     82         // 注意更改路径
     83         String s = ReadFile("F:\Users\Desktop\lib\tianjin.json");
     84         JasperDesign design;
     85         try {
     86             // 注意更改路径
     87             design = JRXmlLoader.load("F:\reportTest\tableTest.jrxml");
     88             HashMap<String, Object> paramsMap = new HashMap<String, Object>();
     89             // 第二种配置数据源的方式 InputStream
     90             InputStream is = new ByteArrayInputStream(s.getBytes("UTF-8"));
     91             paramsMap.put("JSON_INPUT_STREAM", is);
     92             paramsMap.put("ageList", ageList);
     93             paramsMap.put("nameList", nameList);
     94             paramsMap.put("codeList", codeList);
     95             paramsMap.put("personList", personList);
     96             // 配置其他参数
     97             paramsMap.put(JsonQueryExecuterFactory.JSON_LOCALE, Locale.ENGLISH);
     98             paramsMap.put(JRParameter.REPORT_LOCALE, Locale.US);
     99             // 加载模板
    100             JasperReport report = JasperCompileManager.compileReport(design);
    101             // 填充数据
    102             JasperPrint print = JasperFillManager.fillReport(report, paramsMap);
    103             // 预览显示
    104             JasperViewer.viewReport(print);
    105 
    106         } catch (Exception e) {
    107             // TODO Auto-generated catch block
    108             e.printStackTrace();
    109         }
    110     }
    111 
    112 }
    TableJsonTest

     报表文件tableTest.jrxml如下↓

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="tableTest" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" isFloatColumnFooter="true" uuid="0c826da3-1634-4cec-8a87-8b0603713c5a">
      3     <property name="ireport.zoom" value="1.0"/>
      4     <property name="ireport.x" value="0"/>
      5     <property name="ireport.y" value="0"/>
      6     <style name="table">
      7         <box>
      8             <pen lineWidth="1.0" lineColor="#000000"/>
      9         </box>
     10     </style>
     11     <style name="table_TH" mode="Opaque" backcolor="#F0F8FF">
     12         <box>
     13             <pen lineWidth="0.5" lineColor="#000000"/>
     14         </box>
     15     </style>
     16     <style name="table_CH" mode="Opaque" backcolor="#BFE1FF">
     17         <box>
     18             <pen lineWidth="0.5" lineColor="#000000"/>
     19         </box>
     20     </style>
     21     <style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
     22         <box>
     23             <pen lineWidth="0.5" lineColor="#000000"/>
     24         </box>
     25     </style>
     26     <style name="table 1">
     27         <box>
     28             <pen lineWidth="1.0" lineColor="#000000"/>
     29         </box>
     30     </style>
     31     <style name="table 1_TH" mode="Opaque" backcolor="#F0F8FF">
     32         <box>
     33             <pen lineWidth="0.5" lineColor="#000000"/>
     34         </box>
     35     </style>
     36     <style name="table 1_CH" mode="Opaque" backcolor="#BFE1FF">
     37         <box>
     38             <pen lineWidth="0.5" lineColor="#000000"/>
     39         </box>
     40     </style>
     41     <style name="table 1_TD" mode="Opaque" backcolor="#FFFFFF">
     42         <box>
     43             <pen lineWidth="0.5" lineColor="#000000"/>
     44         </box>
     45     </style>
     46     <subDataset name="Table Dataset 1" uuid="18c82022-8fbe-4952-87fb-71cf8c9b6351">
     47         <parameter name="ageList" class="java.util.List"/>
     48         <parameter name="nameList" class="java.util.List"/>
     49         <variable name="index" class="java.lang.Integer" calculation="Count">
     50             <variableExpression><![CDATA[$V{index}.valueOf( 01 )]]></variableExpression>
     51         </variable>
     52     </subDataset>
     53     <subDataset name="Table Dataset 2" uuid="3aea438c-0171-4117-8e08-60e643f9b7f5">
     54         <parameter name="codeList" class="java.util.List"/>
     55         <parameter name="personList" class="java.util.List"/>
     56         <variable name="index" class="java.lang.Integer" calculation="Count">
     57             <variableExpression><![CDATA[$V{index}.valueOf( 01 )]]></variableExpression>
     58         </variable>
     59     </subDataset>
     60     <parameter name="ageList" class="java.util.List"/>
     61     <parameter name="nameList" class="java.util.List"/>
     62     <parameter name="codeList" class="java.util.List"/>
     63     <parameter name="personList" class="java.util.List"/>
     64     <queryString language="json">
     65         <![CDATA[sales.item]]>
     66     </queryString>
     67     <field name="count" class="java.lang.String"/>
     68     <field name="project" class="java.lang.String"/>
     69     <field name="equipment" class="java.lang.String"/>
     70     <title>
     71         <band height="79" splitType="Stretch">
     72             <textField pattern="yyyy/MM/dd">
     73                 <reportElement x="73" y="59" width="200" height="20" uuid="21653315-fb23-462a-b6c3-c881b33e5879"/>
     74                 <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
     75             </textField>
     76             <textField pattern="HH.mm.ss">
     77                 <reportElement x="73" y="39" width="200" height="20" uuid="44e19c2e-cc04-4470-b335-a0ab04bb7660"/>
     78                 <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression>
     79             </textField>
     80         </band>
     81     </title>
     82     <columnHeader>
     83         <band height="20" splitType="Stretch">
     84             <staticText>
     85                 <reportElement x="73" y="0" width="100" height="20" uuid="47e6b88e-bec1-45a5-8ce9-cb9ae0b711f0"/>
     86                 <box>
     87                     <topPen lineWidth="1.0"/>
     88                     <leftPen lineWidth="1.0"/>
     89                     <bottomPen lineWidth="1.0"/>
     90                     <rightPen lineWidth="1.0"/>
     91                 </box>
     92                 <text><![CDATA[count]]></text>
     93             </staticText>
     94             <staticText>
     95                 <reportElement x="173" y="0" width="100" height="20" uuid="655c61ce-59d3-4dc9-893e-3e88c2ea975e"/>
     96                 <box>
     97                     <topPen lineWidth="1.0"/>
     98                     <leftPen lineWidth="1.0"/>
     99                     <bottomPen lineWidth="1.0"/>
    100                     <rightPen lineWidth="1.0"/>
    101                 </box>
    102                 <text><![CDATA[project]]></text>
    103             </staticText>
    104             <staticText>
    105                 <reportElement x="273" y="0" width="100" height="20" uuid="9ddc2b36-8df8-4bd9-95ff-7c5229397f07"/>
    106                 <box>
    107                     <topPen lineWidth="1.0"/>
    108                     <leftPen lineWidth="1.0"/>
    109                     <bottomPen lineWidth="1.0"/>
    110                     <rightPen lineWidth="1.0"/>
    111                 </box>
    112                 <text><![CDATA[equipment]]></text>
    113             </staticText>
    114         </band>
    115     </columnHeader>
    116     <detail>
    117         <band height="20" splitType="Stretch">
    118             <textField>
    119                 <reportElement x="73" y="0" width="100" height="20" uuid="064ef273-80ca-415b-a8ac-c920c89a9a3c"/>
    120                 <box>
    121                     <topPen lineWidth="0.75"/>
    122                     <leftPen lineWidth="0.75"/>
    123                     <bottomPen lineWidth="0.75"/>
    124                     <rightPen lineWidth="0.75"/>
    125                 </box>
    126                 <textFieldExpression><![CDATA[$F{count}]]></textFieldExpression>
    127             </textField>
    128             <textField>
    129                 <reportElement x="173" y="0" width="100" height="20" uuid="270b47b8-8435-49b3-afa2-5c78ed1209b8"/>
    130                 <box>
    131                     <topPen lineWidth="0.75"/>
    132                     <leftPen lineWidth="0.75"/>
    133                     <bottomPen lineWidth="0.75"/>
    134                     <rightPen lineWidth="0.75"/>
    135                 </box>
    136                 <textFieldExpression><![CDATA[$F{project}]]></textFieldExpression>
    137             </textField>
    138             <textField>
    139                 <reportElement x="273" y="0" width="100" height="20" uuid="5aa82e43-25e6-4cf1-8b61-9ed652c8bc66"/>
    140                 <box>
    141                     <topPen lineWidth="0.75"/>
    142                     <leftPen lineWidth="0.75"/>
    143                     <bottomPen lineWidth="0.75"/>
    144                     <rightPen lineWidth="0.75"/>
    145                 </box>
    146                 <textFieldExpression><![CDATA[$F{equipment}]]></textFieldExpression>
    147             </textField>
    148         </band>
    149     </detail>
    150     <columnFooter>
    151         <band height="295">
    152             <componentElement>
    153                 <reportElement key="table 1" style="table 1" stretchType="RelativeToTallestObject" x="0" y="0" width="285" height="138" isPrintWhenDetailOverflows="true" uuid="b1044ef3-a755-42af-8288-e405e052d8fa"/>
    154                 <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
    155                     <datasetRun subDataset="Table Dataset 2" uuid="aa932109-8a1e-4b4a-963f-9d3d27b0d141">
    156                         <datasetParameter name="codeList">
    157                             <datasetParameterExpression><![CDATA[$P{codeList}]]></datasetParameterExpression>
    158                         </datasetParameter>
    159                         <datasetParameter name="personList">
    160                             <datasetParameterExpression><![CDATA[$P{personList}]]></datasetParameterExpression>
    161                         </datasetParameter>
    162                         <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{codeList})]]></dataSourceExpression>
    163                     </datasetRun>
    164                     <jr:column width="90" uuid="45380ad9-3fb3-4e77-94e6-b135adec06d5">
    165                         <jr:columnHeader style="table 1_CH" height="30" rowSpan="1">
    166                             <staticText>
    167                                 <reportElement x="0" y="0" width="90" height="30" uuid="4b5aafe9-3993-4ab8-8258-fef3a832520b"/>
    168                                 <text><![CDATA[NO.]]></text>
    169                             </staticText>
    170                         </jr:columnHeader>
    171                         <jr:detailCell style="table 1_TD" height="20" rowSpan="1">
    172                             <textField>
    173                                 <reportElement x="0" y="0" width="90" height="20" uuid="d98deaa6-6efe-4778-acc0-a2275007794e"/>
    174                                 <textFieldExpression><![CDATA[$V{index}]]></textFieldExpression>
    175                             </textField>
    176                         </jr:detailCell>
    177                     </jr:column>
    178                     <jr:column width="90" uuid="542b5246-a72e-4bd4-aad2-fd72581733e9">
    179                         <jr:columnHeader style="table 1_CH" height="30" rowSpan="1">
    180                             <staticText>
    181                                 <reportElement x="0" y="0" width="90" height="30" uuid="d406af75-214a-481a-9902-00d83686d64f"/>
    182                                 <text><![CDATA[code]]></text>
    183                             </staticText>
    184                         </jr:columnHeader>
    185                         <jr:detailCell style="table 1_TD" height="20" rowSpan="1">
    186                             <textField>
    187                                 <reportElement x="0" y="0" width="90" height="20" uuid="f87906d8-ca12-476d-b842-9c81cdfa6acc"/>
    188                                 <textFieldExpression><![CDATA[""+$P{codeList}.get($V{index}-01)]]></textFieldExpression>
    189                             </textField>
    190                         </jr:detailCell>
    191                     </jr:column>
    192                     <jr:column width="90" uuid="9f2cdf79-d001-4d20-b51c-42191421bca6">
    193                         <jr:columnHeader style="table 1_CH" height="30" rowSpan="1">
    194                             <staticText>
    195                                 <reportElement x="0" y="0" width="90" height="30" uuid="1d835d3b-2c8d-4d15-8a0d-44af3fe660df"/>
    196                                 <text><![CDATA[person]]></text>
    197                             </staticText>
    198                         </jr:columnHeader>
    199                         <jr:detailCell style="table 1_TD" height="20" rowSpan="1">
    200                             <textField>
    201                                 <reportElement x="0" y="0" width="90" height="20" uuid="c0f78257-a44b-4575-a2b2-1dbcd1ce72a5"/>
    202                                 <textFieldExpression><![CDATA[""+$P{personList}.get($V{index}-01)]]></textFieldExpression>
    203                             </textField>
    204                         </jr:detailCell>
    205                     </jr:column>
    206                 </jr:table>
    207             </componentElement>
    208             <componentElement>
    209                 <reportElement key="table" style="table" stretchType="RelativeToTallestObject" x="285" y="0" width="270" height="138" isPrintWhenDetailOverflows="true" uuid="9df29de1-0e84-4220-9267-75e045eefccd"/>
    210                 <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
    211                     <datasetRun subDataset="Table Dataset 1" uuid="6e7a2173-23d9-469c-9f64-d7f6b45d893e">
    212                         <datasetParameter name="ageList">
    213                             <datasetParameterExpression><![CDATA[$P{ageList}]]></datasetParameterExpression>
    214                         </datasetParameter>
    215                         <datasetParameter name="nameList">
    216                             <datasetParameterExpression><![CDATA[$P{nameList}]]></datasetParameterExpression>
    217                         </datasetParameter>
    218                         <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{nameList})]]></dataSourceExpression>
    219                     </datasetRun>
    220                     <jr:column width="90" uuid="2d1eff98-3a41-4c3e-8271-8fefc1c47fad">
    221                         <jr:columnHeader style="table_CH" height="30" rowSpan="1">
    222                             <staticText>
    223                                 <reportElement x="0" y="0" width="90" height="30" uuid="3fa6bc74-6ac4-47c9-8cae-8c86fbc1d3be"/>
    224                                 <text><![CDATA[No]]></text>
    225                             </staticText>
    226                         </jr:columnHeader>
    227                         <jr:detailCell style="table_TD" height="20" rowSpan="1"/>
    228                     </jr:column>
    229                     <jr:column width="90" uuid="bc412dc8-a633-4698-af07-3418de941110">
    230                         <jr:columnHeader style="table_CH" height="30" rowSpan="1">
    231                             <staticText>
    232                                 <reportElement x="0" y="0" width="90" height="30" uuid="6965be42-36a4-49a6-8ec4-b48f6159c55f"/>
    233                                 <text><![CDATA[age]]></text>
    234                             </staticText>
    235                         </jr:columnHeader>
    236                         <jr:detailCell style="table_TD" height="20" rowSpan="1">
    237                             <textField>
    238                                 <reportElement x="0" y="0" width="90" height="20" uuid="61d33b77-b578-45e5-886c-6b1bbea4eef0"/>
    239                                 <textFieldExpression><![CDATA[""+$P{ageList}.get($V{index}-01)]]></textFieldExpression>
    240                             </textField>
    241                         </jr:detailCell>
    242                     </jr:column>
    243                     <jr:column width="90" uuid="06d5ec3f-f901-4651-b67d-82c9dc8ec575">
    244                         <jr:columnHeader style="table_CH" height="30" rowSpan="1">
    245                             <staticText>
    246                                 <reportElement x="0" y="0" width="90" height="30" uuid="61e1d91e-55e7-4598-83e5-fdf8c46dc11c"/>
    247                                 <text><![CDATA[name]]></text>
    248                             </staticText>
    249                         </jr:columnHeader>
    250                         <jr:detailCell style="table_TD" height="20" rowSpan="1">
    251                             <textField>
    252                                 <reportElement x="0" y="0" width="90" height="20" uuid="b06ae43f-cd55-4b09-917c-3aea38c9cabb"/>
    253                                 <textFieldExpression><![CDATA[""+$P{nameList}.get($V{index}-01)]]></textFieldExpression>
    254                             </textField>
    255                         </jr:detailCell>
    256                     </jr:column>
    257                 </jr:table>
    258             </componentElement>
    259         </band>
    260     </columnFooter>
    261 </jasperReport>
    tableTest

    json数据源文件tianjin.json如下

     1  { "sales": {
     2     "item": [
     3        {
     4         
     5         "equipment": "equipment1",
     6         "project": "project1",
     7         "count": "1"
     8       },
     9       {
    10         
    11         "equipment": "equipment2",
    12         "project": "project2",
    13         "count": "1"
    14       },
    15       {
    16         
    17         "equipment": "equipment3",
    18         "project": "project3",
    19         "count": "1"
    20       },
    21       {
    22         
    23         "equipment": "equipment4",
    24         "project": "project4",
    25         "count": "1"
    26       },
    27       {
    28         
    29         "equipment": "equipment5",
    30         "project": "project5",
    31         "count": "1"
    32       },
    33       {
    34         
    35         "equipment": "equipment6",
    36         "project": "project6",
    37         "count": "1"
    38       }
    39     ]
    40   }}
    tianjin

    本文版权归__馋猫和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    vue生命周期过程做了什么
    css_css3_实用属性_随时补充更新
    echarts的symbol引用本地图片写法
    无废话设计模式(1)--简单工厂、工厂方法、抽象工厂
    JavaWeb--Maven学习
    SpringCloud Alibaba实战 -引入服务网关Gateway
    从ReentrantLock看AQS (AbstractQueuedSynchronizer) 运行流程 抽象的队列式同步器
    架构的搭建(一)SpringCloud Alibaba
    配置中心之Nacos简介,使用及Go简单集成
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/chanmao--/p/6900254.html
Copyright © 2011-2022 走看看