ribafs/reports

使用开源软件Koolreport在PHP中生成报告。

dev-main 2021-07-03 18:20 UTC

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或更高版本和数据库,它就会直接连接到数据库并创建报告。实际上,它不与任何框架集成,而是与数据库集成。甚至在官方网站上也有一些用于集成某些框架的包,但我认为这样更灵活、更简单。我没有测试过,但应该可以与远程数据库一起使用,只需在连接中指定数据即可。

想生成报告而不输入代码吗?

我创建了一个小型的报告生成器,您不需要修改代码,只需在表单中输入数据库和报告的数据,然后点击发送,它就会显示报告。请查看

报告生成器

在官方网站上查看示例和其他资源

https://www.koolreport.com/

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