应用报表主题

Power BI 报表主题 允许对整个报表应用设计更改。 例如,可以包括公司颜色,并更改图标集。 应用报表主题时,报表中的所有视觉对象都使用所选主题中的颜色和格式作为默认值。 有关主题设置及其设计方式的详细信息,请参阅 报表主题 JSON 文件格式

可以保存并发布应用了主题的报表。 应用的主题是此报表在 Power BI 服务或 Power BI 嵌入式分析中加载时的默认主题。

使用 Power BI 嵌入式分析的开发人员还可以嵌入应用自定义主题的报表,而不是报表的默认主题。 以这种方式应用主题会根据不同的设置将具有不同主题的相同报表加载到不同的用户。

报表主题对象

本部分介绍用于表示主题的报表主题对象。 可以将 IReportTheme 对象类型传递给嵌入式配置。

interface IEmbedConfiguration extends IEmbedConfigurationBase {
  ...
  theme?: models.IReportTheme;
}

报表主题对象应具有名为 themeJson的单个参数。 此字段应包含表示主题设置的 JSON 对象。 有关详细信息,请参阅 报表主题 JSON 文件格式 页。

interface IReportTheme {}
interface ICustomTheme extends IReportTheme {
  themeJson: any;
}

将主题应用于报表

加载报表后,还可以更改应用的主题。 加载报表后应用主题时,最终用户可以从列表中选择主题,并立即查看应用于报表的样式更改,而无需重新加载。

在加载时应用主题

如果要在报表加载时应用自定义主题,此示例非常有用。

// Parse the theme JSON file into an object
let themeJsonObject = parseJsonfile(path);
let embedConfig = {
    …
    theme: {
        themeJson: themeJsonObject
    }
};

let report = powerbi.embed(embedContainer, embedConfig);

在运行时应用主题

如果要在加载报表后更改主题,而不重新加载报表,则 apply 方法非常有用。

Power BI 客户端 报表 类将 applyTheme 方法定义为:

applyTheme(theme: models.IReportTheme): Promise<void>

applyTheme API 更改在运行时应用于报表的主题。

...
// Parse the theme JSON file into an object
let themeJsonObject = parseJsonfile(path); 

// Apply the theme
report.applyTheme({ themeJson: themeJsonObject });

创建报表时应用主题

可以使用应用于该报表的主题创建一个新的嵌入报表。 添加到报表的新视觉对象遵循主题样式。 另请参阅 创建、编辑和保存嵌入报表 页。

如果要将自定义主题应用于新报表,此示例非常有用。

// Parse the theme JSON file into an object
let themeJsonObject  = parseJsonfile(path);
let embedCreateConfiguration = {
  …
  theme: {
    themeJson: themeJsonObject 
  }
};

let report = powerbi.createReport(embedContainer, embedCreateConfiguration);

注意

parseJsonfile 是需要在应用程序代码上实现且不属于 SDK 的函数。

重置报表主题

如果要将报表主题重置为默认主题,但没有主题 JSON 文件,则重置方法非常有用。

Power BI 客户端 报表类resetTheme 方法定义为:

resetTheme(): Promise<void>

调用 resetTheme API 将返回到报表的默认主题。

// Apply the theme
report.resetTheme();

注意事项和限制

  • 使用上述 applyTheme API 会用新的 JSON 文件完全替代默认主题。 API 不会扩展默认主题的配置。
  • 应用主题不会像预期那样更改报表中的视觉对象时,有几次。 有关详细信息,请参阅报表主题颜色不粘附在报表时 情况。
  • 不能使用 API 应用主题并同时设置对比度级别。 如果配置这两个属性,API 将使用指定的对比度级别,但忽略主题设置。