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

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

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

jasper+ireport实现table控件用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

相关文章:

  • 2021-12-03
  • 2021-11-23
  • 2021-09-29
  • 2021-09-17
  • 2021-09-28
  • 2022-12-23
  • 2022-12-23
  • 2022-01-01
猜你喜欢
  • 2022-12-23
  • 2021-09-02
  • 2021-05-02
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2022-12-23
相关资源
相似解决方案