khoeclck/phppowerbi

一个用于从 PHP 直接操作 PowerBI 嵌入式报告的库

v1.4 2023-10-04 19:23 UTC

This package is auto-updated.

Last update: 2024-09-12 19:55:30 UTC


README

PhpPowerBI 是一个简单的库,用于从 PHP 直接操作 PowerBI 嵌入式报告。它利用 microsoft/PowerBI-Javascript 中的 powerbi.js 文件来实际渲染报告。 它未包含在本存储库中,必须单独下载 此处

依赖项

PhpPowerBI 依赖于 PhpAzureAuth 来生成 Azure 的认证令牌。如果您通过 Composer 安装,它将自动将其作为依赖项安装。上面提到的 powerbi.jspowerbi.min.js 文件也是必需的。

安装

推荐通过 composer 安装

Composer 安装

composer require khoelck/phppowerbi

PhpPowerBI 在 Packagist 上

手动安装

将 src 文件夹的内容复制到您的 include_path 中,并在您的认证脚本中包含以下库

require "includes/classes/PowerBI/PowerBIReport.php";
use Khoelck\PhpPowerBI\PowerBIReport;

初始配置

每个嵌入的报告都需要一个基于 Microsoft 提供的调用 PowerBI API 参数的 JSON 配置文件。这些参数。该文件应放置在您的 include_path 中,与 PowerBIConfig.php 文件一起。请参阅 EmbedExample.json 以获取示例。

当然,在调用 PHPPowerBI 的任何方法之前,请确保在您的页面上包含了 powerbi.jspowerbi.min.js 文件。

<script src="path/to/powerbi.js"></script>

用例

您想在您的 PHP 应用程序中嵌入 PowerBI 报告 - 但您不想使用安全的嵌入 iframe 选项,因为它要求用户登录。在登录时获取 Azure 令牌,然后调用 PowerBI API 来显示报告会更好。

在您的认证脚本中利用 AzureAuth API,它将令牌存储在您的 $_SESSION 变量中。然后,在调用 PowerBIRepot 构造函数时,传递 $_SESSION['Token'] 变量以访问和嵌入页面上您的报告。

嵌入报告

PowerBIReport 构造函数接受 4 个参数

  • 您的报告 ID GUID
  • 您的 Workspace ID GUID
  • 包含用于渲染报告的设置的 JSON 文件名称
  • 访问报告时要传递的 Azure 令牌
<?php
use Khoelck\PhpPowerBI\PowerBIReport;

// Create a report, assuming you've already obtained a token and added it to your session variable
$report = new PowerBIReport("eb85896e-f6ce-4303-b357-b3d6e7232ca9", "9467ec51-dcab-40ef-b2c3-7a4f41f835a8", "ModalEmbed.json", $_SESSION['AzureAuth']['Token']);
?>

现在,您可以通过调用以下两种方法之一来嵌入报告

  1. ShowReport - 这将接受一个参数,即您希望附加报告的元素 ID,并将自动渲染它。
<div id="embeddedReport"></div>

<?php
  $report->ShowReport("embeddedReport");
?>
  1. ShowConfig - 这将简单地创建一个包含所有必要信息的全局常量,以直接传递给 powerbi.embed 函数。Config 将附加到您传递给此方法的任何参数。如果您打算在调用 powerbi.bootstrap 之前执行某些操作,则可能需要使用此方法。例如,如果您想在一个模态或幻灯片组件中嵌入多个报告,则可以在这些元素上调用 powerbi.bootstrap,然后在报告应该显示时调用 powerbi.embed。这可以为您的嵌入报告添加更好的加载时间。以下是一个非常基本的示例
<?php
  $report->ShowConfig("embeddedReport");
?>

<div id="embeddedReport"></div>
<button type="button" id="show">Show Report</button>

<script>
  powerbi.bootstrap(
    document.getElementbyId("embeddedReport"),
    {
      type: 'report',
      embedUrl: embeddedReportConfig.embedUrl
    }
  );

  const btn = document.getElementById('show');
  btn.addEventListener('click', function() {
    powerbi.embed(document.getElementById('embeddedReport'), embeddedReportConfig);
  });
</script>

报告样式

您需要为报告容器添加CSS,但在JSON文件中还有其他选项需要配置。许多报告选项都可以在报告的JSON配置文件中进行配置。

相关包

PhpAzureAuth