khoeclck / phppowerbi
一个用于从 PHP 直接操作 PowerBI 嵌入式报告的库
Requires
- khoelck/phpazureauth: ^1.2
README
PhpPowerBI 是一个简单的库,用于从 PHP 直接操作 PowerBI 嵌入式报告。它利用 microsoft/PowerBI-Javascript 中的 powerbi.js 文件来实际渲染报告。 它未包含在本存储库中,必须单独下载 此处。
依赖项
PhpPowerBI 依赖于 PhpAzureAuth 来生成 Azure 的认证令牌。如果您通过 Composer 安装,它将自动将其作为依赖项安装。上面提到的 powerbi.js 或 powerbi.min.js 文件也是必需的。
安装
推荐通过 composer 安装
Composer 安装
composer require khoelck/phppowerbi
手动安装
将 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.js 或 powerbi.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']);
?>
现在,您可以通过调用以下两种方法之一来嵌入报告
- ShowReport - 这将接受一个参数,即您希望附加报告的元素 ID,并将自动渲染它。
<div id="embeddedReport"></div>
<?php
$report->ShowReport("embeddedReport");
?>
- 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配置文件中进行配置。