FineReport 报表模板生成+导出Excel表格

 

跟spring boot 整合 :https://blog.csdn.net/zhanglixin_1984/article/details/79194145

看官方的文档纠结了一天,好东西,这个怎么下手,但是还是想总结一下。

FineReport报表技术,给我的感觉跟IReport报表的思路差不多,所以我就抱着这种试试的心态去尝试,在我搜集资料加看官方文档之后,觉得更像了!!!

FineReport报表软件是一款纯java编写的,集数据展示(报表)和数据录入(单表)功能与一身的企业级web报表工具,可以简单的应用多业务的系统数据,集中数据于一张报表,还有类EXCEL的设计模式,EXCEL+绑定数据列的形式支持SHEET和跨SHEET的计算(跟IReport的功能有点相似,但是比较强大),完美兼容EXCEL公式,支持导入现有的Excel表样制作报表。

数据的支持:

支持的数据库有:Orcal、sql server 、DB2、my sql 等主流的关系型数据库

文本数据源:包括Excel文件、Txt文件等存储在文件中的数据

下面进入正题:主要讲解两个方面,模板的生成+于模板整合导出Excel表格

1,模板的生成

     1.1:新建模板   -- 打开安装完成的软件,点击图中所指的按钮,即可完成表格的新建

                 

     1.2: 数据库的配置

  

1.3:数据的获取和数据的添加   -- 数据是从数据库中获取,这里我以Orcal数据库为例

                        

         

       

点击保存之后,会在左下角显示你保存的sql语句

                                          

上图点击确定之后,就会显示数据,可自行完成

模板设计(此处跟IReport是一样的,首先从数据库中查询出数据,然后在进行数据的设置)

2,代码编写

 

  1. package com.fr.io;        
  2.         
  3. import java.io.BufferedReader;        
  4. import java.io.File;        
  5. import java.io.FileInputStream;        
  6. import java.io.FileOutputStream;        
  7. import java.io.InputStreamReader;        
  8. import java.io.OutputStream;        
  9. import java.util.Arrays;        
  10. import com.fr.base.FRContext;        
  11. import com.fr.general.ModuleContext;  
  12. import com.fr.dav.LocalEnv;    
  13.     
  14. import com.fr.io.exporter.ExcelExporter;    
  15. import com.fr.main.TemplateWorkBook;      
  16. import com.fr.main.workbook.ResultWorkBook;  
  17. import com.fr.report.module.EngineModule;  
  18. import com.fr.stable.StableUtils;    
  19. import com.fr.stable.WriteActor;  
  20.        
  21.          
  22.  public class ExportBatch {        
  23.      public static void main(String[] args) {        
  24.          try {        
  25.              // 定义报表运行环境,用于执行报表        
  26.              String envpath = "D:\\FineReport_7.1\\WebReport\\WEB-INF";        
  27.              FRContext.setCurrentEnv(new LocalEnv(envpath));      
  28.      ModuleContext.startModule(EngineModule.class.getName());      
  29.     // 读取环境下的模板文件      
  30.     TemplateWorkBook workbook = TemplateWorkBookIO.readTemplateWorkBook(FRContext.getCurrentEnv(),      
  31.         "doc\\Primary\\DetailReport\\Details.cpt");      
  32.     // 读取用于保存的参数值的txt文件      
  33.     File parafile = new File(envpath + "\\para.txt");      
  34.     FileInputStream fileinputstream;      
  35.     fileinputstream = new FileInputStream(parafile);      
  36.     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileinputstream));      
  37.     // 定义保存参数的map,用于执行报表      
  38.     java.util.Map paramap = new java.util.HashMap();      
  39.     /*   
  40.      * 遍历参数值所在txt文件,txt文件中参数保存形式为 para1,para2 江苏,陈羽 江苏,安娜 首先取出第一行保存参数名称   
  41.      * 遍历每个参数组合,如para1=江苏、para2=陈羽,根据参数执行模板,并将结果导出excel excel文件名为名称+导出编号   
  42.      */      
  43.     // 读第一行,保存参数名称      
  44.     String lineText = bufferedReader.readLine();      
  45.     lineText = lineText.trim();      
  46.     String[] paraname = StableUtils.splitString(lineText, ",");      
  47.     System.out.println(Arrays.toString(paraname));      
  48.     // 遍历每个参数组合,执行模板,导出结果      
  49.     int number = 0;      
  50.     while ((lineText = bufferedReader.readLine()) != null) {      
  51.         lineText = lineText.trim();      
  52.         String[] paravalue = StableUtils.splitString(lineText, ",");      
  53.         for (int j = 0; j < paravalue.length; j++) {      
  54.             paramap.put(paraname[j], paravalue[j]);      
  55.         }      
  56.         ResultWorkBook result = workbook.execute(paramap,new WriteActor());    
  57.         OutputStream outputstream = new FileOutputStream(new File("E:\\ExportEg" + number + ".xls"));      
  58.         ExcelExporter excelexporter = new ExcelExporter();      
  59.         excelexporter.export(outputstream, result);      
  60.         // 最后要清空一下参数map,用于下次计算      
  61.         paramap.clear();      
  62.         number++;      
  63.         outputstream.close();    
  64.         }   
  65.     ModuleContext.stopModules();  
  66.     } catch (Exception e) {      
  67.         e.printStackTrace();      
  68.     }      
  69.           }      
  70. }  

上面的做法会因为帆软报表软件的运行而在查询的时候,很慢,最常用的就是在sql的查询语句中将要传入的参数直接变成形参,然后在调用的时候,形参直接在请求中传递过去,就可以直接执行SQL语句然后查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/46291.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统计报表用的什么软件(制作报表必备的3款软件)

最近因为工作需要&#xff0c;我接触使用了几款报表软件&#xff0c;觉得还不错&#xff0c;推荐给大家使用。 VeryReport VeryReport采用Java编写&#xff0c;B/S结构&#xff0c;无需安装客户端&#xff0c;使用浏览器即可做报表设计。易学易用&#xff0c;轻松解决中国式复…

ChatGPT介绍,与BERT区别及在公司使用方向

浅析ChatGPT ChatGPT介绍 ChatGPT 是OpenAI公司推出人工智能聊天机器人程序。ChatGPT能够以流畅的自然语言跟人聊天&#xff0c;还能根据聊天的上下文进行互动&#xff0c;其答案体现了很强的自然语言理解、信息综合和推理能力&#xff0c;以及其模型中蕴含的丰富的知识。Cha…

ChatGPT会取代MySQL DBA吗?(译自Percona)

让权威网站Percona来回答这个很多人都在关心的问题。 原文网址&#xff1a;ChatGPT 不会取代 MySQL DBA - 关于静态加密的问题示例 - Percona 数据库性能博客 作者&#xff1a;Edwin Wang 译者&#xff0c;姚远 ChatGPT是目前科技界最热门的话题&#xff0c;有人甚至说Chat…

被Chatgpt碾压的打工人与大学生,准备反击!

最近一段时间&#xff0c;chatgpt可谓如火如荼&#xff0c;它的出现引发各行各业的震动&#xff0c;有人利用它实现了一夜暴富&#xff0c;有企业将它纳进人才招聘的技能要求中&#xff0c;国内各大厂商也纷纷下场推出自家的AI大模型&#xff0c;从第一代到GPT-4&#xff0c;所…

神坛上的插画师真的高薪且自由吗?

插画师的定义:就是以绘画插画为职业的人,主要工作包括替书籍、杂志、报纸、说明书、小说、教科书等刊物绘制插画、封面,也从事绘画贺卡、海报、广告、喷画、幽默画等。分为电子插画和纯手绘。 那么,手绘插画师的收入怎么样呢?封面一般1千到8百,内页100-500左右。每个公司…

插画师必备的6个宝藏网站

1、pinterest https://www.pinterest.es/ 国外网站&#xff0c;需要梯子&#xff0c;里面有超多优秀插画作品&#xff0c;非常值得收藏。 ​ 2、花瓣网 https://huaban.com/ 国内素材网站&#xff0c;很多设计、插画、摄影等作品&#xff0c;可以拿来做参考。 ​ 3、站酷网…

插画师培训怎么选,5大插画师培训班排名

插画师培训哪里好&#xff0c;给大家推荐5大插画师培训班排名&#xff0c;各有优势和特色&#xff0c;提供大家选择&#xff01; 一&#xff1a;5大插画师培训班排名 1、轻微课&#xff08;五颗星&#xff09; 主打课程有日系插画、游戏原画、古风插画、动漫漫画&#xff0c;以…

ubantu报错: 正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程3228(aptd)

1. 问题描述 有时候终端运行时会进行如下报错&#xff1a; 2. 问题原因 一般出现这种原因是因为文件上锁或者被占用 3. 解决方法 sudo rm /var/cahe/apt/archives/lock sudo rm /var/lib/dpkg/lock运行代码块后&#xff0c;结果如下所示&#xff1a; 出现“…没有那个文件目…

Linux “无法获得锁 /var/lib/dpkg/lock-frontend - open“

问题 在Linux下使用sudo apt install命令时如果出现提示&#xff1a;<mark>无法获得锁 /var/lib/dpkg/lock-frontend - open</mark> 原因 出现这个问题的原因可能是有另外一个程序正在运行&#xff0c;由于它在运行时&#xff0c;会占用软件源更新时的系统锁&…

html 标签置顶,html 标签

a anchor 锚点 超链接Document 百度一下 href属性&#xff1a;超链接指定跳转网页地址 title属性&#xff1a;提示 target属性&#xff1a;_self 在当前页打开_页面 _blank_在新页面打开Document 百度一下 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿…

android的前端开发环境搭建,Android开发环境搭建

可以在以下任一操作系统上进行Android应用程序开发 - Microsoft Windows XP或更高版本。 带有Intel芯片的Mac OS X 10.5.8或更高版本。 Linux包括GNU C库2.7或更高版本。 所有开发Android应用程序所需的工具都是免费的&#xff0c;可以从网上下载。 以下是开始进行Android应用程…

计算机网络工程师 一共几级,2020年计算机软考网络工程师中级多少分过

原标题&#xff1a;2020年计算机软考网络工程师中级多少分过 计算机软考中级合格线是多少&#xff1f;每年报名软考中级资格考试的考生有很多&#xff0c;那么软考中级的及格分数线是多少呢&#xff1f;每年报名软考中级资格考试的考生有很多&#xff0c;近几年软考中级各资格的…

计算机管理 网络连接服务,WZC服务未开启无法连接网络 解决方法及步骤

而最近同事的电脑上不了网&#xff0c;电脑桌面右下角的无线小电脑打上了红叉(如图1所示),根据了解发现每次开机都这样。重起也没用&#xff0c;只是上次关机前优化了一下电脑。 (图1 桌面右下角的无线小电脑图标) 解决因为未开启WZC服务而引起的无线网络上不了问题&#xff1a…

工商管理系计算机上几门课,工商管理专业学什么 主要课程有哪些

工商管理专业是目前的热门专业之一&#xff0c;那么&#xff0c;工商管理专业主要学习什么课程呢&#xff1f;下面小编整理了一些相关信息&#xff0c;供大家参考&#xff01; 工商管理主要学习内容 工商管理专业是时下比较热火的一个专业&#xff0c;严格来说&#xff0c;这是…

计算机电源 80plus,电源基础篇:电源要如何选择?80PLUS是什么意思?要选全模组吗?...

电源的作用相当于人体的心脏&#xff0c;它的好坏直接决定了电脑能不能正常稳定运行与使用寿命&#xff0c;电源是给各大硬件提供功率的装置&#xff0c;它是将我们的家用交流电转化为低压的直流电&#xff0c;最后再供给其它硬件使用&#xff0c;很多朋友最关心的电脑硬件一般…

内置网页服务器开发,内置服务

什么是内置服务&#xff1f; 内置服务以多种形式展现服务器内部状态&#xff0c;提高你开发和调试服务的效率。brpc通过HTTP协议提供内置服务&#xff0c;可通过浏览器或curl访问&#xff0c;服务器会根据User-Agent返回纯文本或html&#xff0c;你也可以添加?console1要求返回…

连接opc服务器显示没有接口,Matrikon OPC常见问题及解决方案(三)

Matrikon OPC常见问题及解决方案(三) 问题和解决方案(三) 多个HASP连接到并行端口&#xff0c;但只有第一个被识别 问题一&#xff1a;Matrikon有多个HASP硬件密钥连接到并行端口&#xff0c;但软件只能识别第一个。 解决方案&#xff1a;来自同一供应商的HASP密钥无法链接在一…

联想t系列服务器,联想更新2019年款ThinkPad X与T系列笔记本电脑产品

访问购买页面: ThinkPad X390 今年的ThinkPad产品线毫无疑问都提供第八代的英特尔酷睿i7处理器。 ThinkPad X390在12英寸笔记本电脑的机身上采用了13英寸显示屏&#xff0c;因为其边框尺寸减小了50&#xff05;。它还提供全球LTE和英特尔Wi-Fi 6 Gig 通信支持能力。同时包括Thi…

教你用故事打造个人ip人设

那些成功打造个人IP的人都是擅长讲故事的。虽然他们使用的是真人出场形式&#xff0c;并且对着相机讲述故事&#xff0c;但你不知道的是&#xff0c;这背后投入了非常大量的工作。这些个人IP的创作者不是通过简单的搬运或者伪造原创来呈现内容&#xff0c;而是通过逐步串联故事…

ChatGPT生成Python学习路线思维导图,人人可编程的时代来了

大家好&#xff0c;最近开始使用ChatGPT作为自己编程助手&#xff0c;作为先进的大语言模型&#xff0c;彻底改变了编写代码的方式。您可以通过自然语言与ChatGPT进行互动&#xff0c;它可以为您提供定制的学习材料&#xff0c;帮助您根据自己的技能水平和学习进度进行学习。检…