ribafs / reports
使用开源软件Koolreport在PHP中生成报告。
Requires
- php: >=5.4
- koolreport/core: ^5.0.0
This package is auto-updated.
Last update: 2024-09-18 20:28:24 UTC
README
需求
- PHP 5.6
- Composer
创建什么类型的报告?
与Laravel、CakePHP以及任何PHP程序(如Java、Python、nodejs框架或使用这些语言创建的程序)兼容,只要使用支持的数据库(见下文)并安装了PHP 5.4或更高版本。Koolreport直接连接到数据库以创建报告,且独立于程序。
创建具有多种类型图表的可定制报告。直接从数据库(可以是MySQL、Oracle、PostgreSQL、SQL Server、CSV、Excel等)中拉取数据。
只需安装PHP 5.4或更高版本和数据库,它就会直接连接到数据库并创建报告。实际上,它不与任何框架集成,而是与数据库集成。甚至在官方网站上也有一些用于集成某些框架的包,但我认为这样更灵活、更简单。我没有测试过,但应该可以与远程数据库一起使用,只需在连接中指定数据即可。
想生成报告而不输入代码吗?
我创建了一个小型的报告生成器,您不需要修改代码,只需在表单中输入数据库和报告的数据,然后点击发送,它就会显示报告。请查看
在官方网站上查看示例和其他资源
Koolreport是一个非常受欢迎的工具,并且得到了创建它的社区和公司的良好支持。当我们有疑问并在Google上搜索时,会出现大量的链接。
我创建的报告截图
使用MySQL和PostgreSQL创建报告
我带来了两个示例,使用了柱状图和饼图,并自定义了列颜色,支持MySQL和PostgreSQL(在最后)。其中一个示例生成饼图,下面是一个柱状图,即CarsByDate。
在学习过程中,我创建了一些简单且高度定制的示例,包括柱状图、条形图和饼图(但还有其他类型)。我自定义了条形图,为每个条形指定了不同的颜色。请查看以下内容。我还提供了两个现成的示例,这是我学习的结果,位于示例文件夹中。
数据库 - cars
CREATE TABLE `colors` ( `id` int NOT NULL AUTO_INCREMENT, `color` varchar(50) DEFAULT NULL, `date` date DEFAULT NULL, `value` int DEFAULT NULL, PRIMARY KEY (`id`) ); INSERT INTO `colors` (`id`, `color`,`date`, `value`) VALUES (1, 'preto','2005-05-25', 10000), (2, 'preto','2005-05-28', 15000), (3, 'preto','2005-06-15', 16000), (4, 'branco','2005-06-15', 10000), (5, 'branco','2005-06-15', 15000), (6, 'branco','2005-06-16', 55000), (7, 'vermelho','2005-07-18', 52000), (8, 'vermelho','2005-07-18', 10000), (9, 'vermelho','2005-07-21', 40000);
需要选择两个字段,它们将代表垂直和水平列。
我选择了以下内容
- color - 水平
- value - 垂直
这将按颜色分组记录,并在水平方向显示。
我们也可以选择date和value,那么它将按日期的月份分组
mkdir /var/www/html/projeto
安装库
访问您下载并解压缩项目的目录,并执行以下操作
composer install
使用示例
现在您已经安装了库,您可以使用示例文件夹中的示例。
例如,只需将示例/CarsByDate中的3个文件复制到
vendor/koolreport
创建数据库cars并将示例文件夹中的cars.sql脚本导入
https://github.com/ribafs/reports/tree/main/exemplos
然后在CarsByDate.php文件中的settings()函数中配置数据库
通过浏览器调用
https:///projeto/vendor/koolreport
或者按照以下步骤创建每个文件。
创建报告CarsByColor
cd vendor/koolreport/
在这个文件夹中创建以下文件
- CarsByColor.php
- CarsByColor.view.php
- index.php
注意:它们已经在示例文件夹中存在
也就是说,这3个文件都位于vendor/koolreport文件夹内。
index.php
<?php // index.php: Just a bootstrap file require_once "CarsByColor.php"; $carsByColor = new CarsByColor; $carsByColor->run()->render();
CarsByColor.php
调整以下数据库数据
<?php require_once dirname(__FILE__)."/../autoload.php"; use \koolreport\KoolReport; use \koolreport\processes\Filter; use \koolreport\processes\TimeBucket; use \koolreport\processes\Group; use \koolreport\processes\Limit; use \koolreport\processes\Custom; class CarsByColor extends KoolReport { function settings() { return array( "dataSources"=>array( "cars_color"=>array( "connectionString"=>"mysql:host=localhost;dbname=cars", "username"=>"root", "password"=>"", "charset"=>"utf8" ), ) ); } protected function setup() { $this->src('cars_color') ->query("SELECT color,value FROM colors") ->pipe(new Custom(function($row){ $row["color"] = strtolower($row["color"]); return $row; })) ->pipe(new Group(array( "by"=>"color", "sum"=>"value" ))) ->pipe($this->dataStore('cars_by_color')); } }
CarsByColor.view.php
<?php use \koolreport\widgets\koolphp\Table; use \koolreport\widgets\google\ColumnChart; ?> <div class="report-content"> <div class="text-center"> <h1>Cars by Color</h1> <p class="lead">This report show cars by color</p> </div> <?php ColumnChart::create(array( "dataStore"=>$this->dataStore('cars_by_color'), "columns"=>array( "color"=>array( "label"=>"Cor", "type"=>"string", ), "value"=>array( "label"=>"Valor", "type"=>"number", "prefix"=>"$", ) ), "width"=>"100%", )); ?> <?php Table::create(array( "dataStore"=>$this->dataStore('cars_by_color'), "columns"=>array( "color"=>array( "label"=>"Cor", "type"=>"string", ), "value"=>array( "label"=>"Valor", "type"=>"number", "prefix"=>"$", ) ), "cssClass"=>array( "table"=>"table table-hover table-bordered" ) )); ?> </div> <hr> <h3>Cars by color</h3> <p>Aqui descreva o relatório</p>
查看
https:///projeto/vendor/koolreport
图表类型
类型设置在 *.view.php 文件中
柱状图
在文件开头包含所需的库
use \koolreport\widgets\google\BarChart; // Gráfico de barras
使用
BarChart::create(array(
柱状图
在文件开头包含所需的库
use \koolreport\widgets\google\ColumnChart; // Gráfico de colunas
使用
ColumnChart::create(array(
饼图
在文件开头包含所需的库
use \koolreport\widgets\google\PieChart; // Gráfico de pizza
使用
PieChart::create(array(
将鼠标悬停在图表上,我们会获得更多信息。
我们还有
- DonutChart
- AreaChart
更多关于图表类型的信息
https://www.koolreport.com/docs/google_charts/overview/
更改图表颜色
更改柱状图颜色
<?php ColumnChart::create(array( "colorScheme"=>array( "#e7717d", "#c2cad0", "#c2b9b0", "#7e685a", "#afd275"), "dataStore"=>$this->dataStore('cars_by_color'), "columns"=>array( "color"=>array( "label"=>"Cor", "type"=>"string", ), "value"=>array( "label"=>"Valor", "type"=>"number", "prefix"=>"$", ) ), "width"=>"100%", )); ?>
更改每根柱子的颜色
<?php ColumnChart::create([ "dataSource"=>$this->dataStore("cars_by_color"), "columns"=>[ "color", "value"=>[ "style"=>function($row) { switch($row["color"]) { case "branco": return "color: #aaa"; case "preto": return "color: #000"; case "vermelho": return "color: #F00"; } } ] ], "width"=>"100%", ]); ?>
与 PostgreSQL 一起使用
在 PostgreSQL 中创建数据库并导入 cars_pg.sql 脚本
然后编辑 CarsByColor.php 文件并更改函数
function settings()
{
// Configuração do banco
return array(
"dataSources"=>array(
"cars_date"=>array(
"connectionString"=>"pgsql:host=localhost;dbname=cars",
"username"=>"postgres",
"password"=>"postgres",
"charset"=>"utf8"
),
)
);
}
现在可以通过浏览器调用。
此仓库
https://github.com/ribafs/reports
反馈
如果您尝试或有任何错误或建议,我会非常感谢您提供反馈。请使用 issue 来提交错误或建议
许可
MIT