FineReport 综合教程:从入门到精通
FineReport 是帆软软件出品的一款企业级 Web 报表工具,以其“拖拽式”的直观操作、强大的中国式复杂报表(如分组、分栏、多源、套打)制作能力以及优秀的数据可视化功能而闻名,它不仅是一个报表工具,更是一个商业智能(BI)平台,可以轻松构建数据决策系统。
第一部分:入门篇 - 基础概念与环境搭建
什么是 FineReport?
- 核心定位:一款专业的企业级 Web 报表工具。
- 主要功能:
- 制作各类报表:包括复杂的表格报表、卡片式报表、主子报表、分栏报表、中国式复杂报表等。
- 数据可视化:内置丰富的图表组件,支持与报表无缝结合,制作炫酷的仪表盘。
- 数据分析:支持参数查询、钻取、联动、排序、筛选等交互分析功能。
- 零代码/低代码:通过拖拽组件即可完成报表设计,大大降低开发门槛。
- 应用场景:企业日常业务报表(销售、财务、HR)、数据分析看板、大屏数据可视化、自助式数据分析平台等。
FineReport 的架构
理解其架构有助于你更好地使用它:
- 设计器:在本地安装的桌面客户端,用于报表模板的设计、制作和调试。
- 决策平台:部署在服务器上的 Web 应用,用于发布、管理和展示报表。
- 数据库:报表的数据来源,如 MySQL, Oracle, SQL Server, PostgreSQL 等。
- 用户:通过浏览器访问决策平台,查看和交互报表。
环境搭建
第一步:下载安装包 访问 FineReport 官网,下载最新版的“Windows 安装包”,这个包已经集成了 Tomcat(Web 服务器),无需单独配置。
第二步:安装与启动
- 解压安装包。
- 双击
fr文件(或在命令行中进入解压目录,运行fr.bat)。 - 等待启动,浏览器会自动打开登录页面。
第三步:登录与验证
- 用户名/密码:默认为
admin/admin。 - 验证:成功登录后,你会看到 FineReport 的决策平台首页,这表明你的单机环境已经搭建完成。
第二部分:核心概念篇 - 报表设计的基石
在开始制作报表前,必须理解 FineReport 的几个核心概念:
模板
在 FineReport 中,你设计的每一个报表文件(.cpt)都被称为一个“模板”,模板定义了报表的样式、数据结构和交互逻辑。
数据集
数据集是连接报表与数据的桥梁,它定义了报表从哪个数据库的哪张表中获取数据,以及如何获取(即 SQL 语句)。
- 类型:支持 SQL 查询、存储过程、API 接口等多种数据源。
- 设计器位置:在左侧的“数据集”面板中管理。
单元格
单元格是报表设计区的最小单位,它不仅仅是用来放文字和数字的,还可以:
- 显示数据(绑定数据集字段)。
- 设置样式(字体、颜色、边框)。
- 添加公式。
- 作为组件的容器(如图表、图表)。
报表元素
报表元素是构成报表的基本组件,你可以通过从右侧“元素”面板中拖拽到设计区来添加它们。
- 常用元素:
- 单元格:最基础的元素。
- 用于显示静态文本。
- 图表:用于数据可视化。
- 图表:一个强大的容器,可以在其中放置多个图表、表格等,实现复杂布局。
- 参数控件:如下拉框、按钮,用于实现交互。
分页与分片
- 分页:当数据量很大时,报表需要分页显示,FineReport 会根据你设置的“分页预览”或“分页符”自动分页。
- 分片:这是一个高级概念,用于将一张大报表拆分成多个小报表进行处理,解决大数据量下的性能瓶颈。
第三部分:实战篇 - 从零开始制作你的第一张报表
我们将以一个最简单的“产品销售清单”为例,走完整个流程。
步骤 1:准备数据源
假设我们有一个 MySQL 数据库,其中有一张 product_sales 表,结构如下:
| product_id | product_name | sale_date | amount |
|--------------|----------------|-------------|----------|
| 1 | 手机A | 2025-10-01 | 5000 |
| 2 | 笔记本B | 2025-10-01 | 8000 |
| 1 | 手机A | 2025-10-02 | 6000 |
在 FineReport 设计器中:
- 点击菜单栏
服务器->管理数据连接。 - 添加一个新的 MySQL 数据连接,填写正确的 IP、端口、数据库名、用户名和密码。
- 测试连接成功后,保存。
步骤 2:创建数据集
- 在左侧的“数据集”面板中,右键点击,选择
新建数据集。 - 数据类型选择
SQL。 - 在下方的 SQL 编辑框中输入:
SELECT * FROM product_sales。 - 点击
预览数据按钮,如果能正确看到数据,说明数据集创建成功。
步骤 3:设计报表布局
- 在右侧的“元素”面板中,拖拽 4 个“标签” 和 4 个“单元格” 到设计区的 A1, B1, C1, D1 和 A2, B2, C2, D2 位置。
- 修改 A1, B1, C1, D1 单元格中的文本为:“产品ID”、“产品名称”、“销售日期”、“销售金额”。
- 选中 A2, B2, C2, D2 单元格,在右侧的“属性”面板中,设置它们的边框样式为“全部”。
步骤 4:绑定数据
这是最关键的一步!
- 选中 A2 单元格。
- 在右侧“属性”面板的“数据”选项卡中,找到“数据列”一项。
- 点击下拉框,选择
product_id字段。 - 同理,将 B2 单元格绑定
product_name,C2 绑定sale_date,D2 绑定amount。
步骤 5:预览报表
- 点击设计器工具栏上的 分页预览 按钮(一个带页码的图标)。
- 如果一切顺利,你将看到一张完整的数据报表!
恭喜!你已经成功制作了你的第一张 FineReport 报表!
第四部分:进阶篇 - 让报表“活”起来
一张静态的报表价值有限,FineReport 的强大之处在于其交互能力。
参数查询
让用户可以自己选择查询条件。
- 操作:
- 在“参数”面板中,右键新建一个参数,
p_date,类型为“日期”。 - 在“数据集”面板中,双击你的数据集,修改 SQL 语句为:
SELECT * FROM product_sales WHERE sale_date = '${p_date}'。 - 在报表的某个位置(如页眉)拖入一个“日期控件”,并将其与
p_date参数绑定。 - 分页预览,你会发现报表上方多了一个日期选择框,选择不同日期,报表数据会随之改变。
- 在“参数”面板中,右键新建一个参数,
图表与联动
将表格与图表结合,并通过点击实现联动。
- 操作:
- 在设计区拖入一个 图表(如柱状图)。
- 为图表配置数据:在图表的“数据”配置中,选择数据集,并设置“类别”为
product_name,“系列”为amount。 - 确保你的表格也绑定了同样的数据集。
- 选中图表,在“属性”面板的“事件”选项卡中,找到“点击”事件。
- 点击“添加”,在弹出的窗口中,选择“改变过滤条件”,将过滤条件设置为
product_name = {图表点击类别}。 - 分页预览,点击图表中的某个柱子,表格会自动筛选出该产品的数据。
中国式复杂报表
- 分组报表:通过“分组”功能,将数据按某个字段(如产品类别)进行分组汇总,并可以添加分组小计和总计。
- 分栏报表:使用“分栏”功能,将报表内容在页面上横向排列,类似于杂志排版。
- 主子报表:在一个主报表中嵌入一个子报表,常用于“订单-订单详情”这类一对多场景。
第五部分:部署与发布篇
当你完成报表设计后,需要将其部署到服务器上供他人使用。
发布模板
- 在设计器中,点击工具栏的 发布 按钮。
- 选择要发布的模板(如我们刚才做的
产品销售清单.cpt)。 - 选择发布到决策平台的哪个目录(如“我的报表”)。
- 点击“发布”。
独立部署
如果你需要将 FineReport 部署到自己的服务器上(如 Linux 服务器):
- 从官网下载
linux版本的安装包。 - 将其上传到服务器并解压。
- 修改
tomcat相关的配置文件(如setenv.sh),配置 JVM 内存大小。 - 启动
./fr.sh。 - 之后就可以通过
http://你的服务器IP:端口号/webroot/decision访问决策平台了。
第六部分:学习资源与路径规划
官方资源(首选)
- FineReport 帮助文档:最权威、最全面的资料,遇到任何问题,第一反应应该是查帮助文档,地址:
https://help.fanruan.com/finereport/doc-view-1.html - FineReport 示例中心:包含了上百个各行各业的报表和仪表盘模板,是学习最佳实践的绝佳来源,地址:
https://example.fanruan.com/ - FineReport 视频教程:官方提供了大量视频教程,从入门到精通,非常系统,地址:
https://v.fanruan.com/ - FineReport 社区:可以提问、交流经验、获取最新动态,地址:
https://bbs.fanruan.com/
学习路径建议
- 第1周:入门与基础
- 目标:掌握环境搭建、核心概念、数据集配置。
- 行动:跟着官方“快速入门”教程,亲手制作 3-5 张简单的明细表和分组表。
- 第2-3周:交互与可视化
- 目标:熟练掌握参数、图表、钻取、联动等交互功能。
- 行动:尝试模仿示例中心中的仪表盘,将多个图表和报表组合在一起,并实现联动效果。
- 第4周:高级与部署
- 目标:学习中国式复杂报表技巧,了解模板的部署和权限配置。
- 行动:制作一张包含主子报表、分栏、套打的复杂报表,并学习如何将其发布到服务器。
- 长期:实践与精通
- 目标:结合实际业务需求,解决复杂问题,并探索 FineReport 的高级功能(如决策报表、JavaScript 扩展等)。
- 行动:在工作中不断应用,多逛社区,学习他人的优秀案例。
希望这份详细的教程能为你开启 FineReport 的大门,祝你学习愉快!
