檔案下載 API
檔案下載 API 可讓使用者將資料從自訂視覺效果下載到其存放裝置上的檔案。 下載視覺效果需要在系統管理員全域切換中提供使用者同意和系統管理員權限。 這是獨立設定,不受組織的匯出及共用租用戶設定中所套用的下載限制影響。
注意
檔案下載 API 有三種方法:
exportVisualsContent
可從 API 4.5 版取得status
可從 API 4.6 版取得。exportVisualsContentExtended
可從 API 5.3 版取得。- 若要了解您正在使用哪個版本,請檢查 pbiviz.json 檔案中的
apiVersion
。
使用檔案下載 API 匯出成下列類型的檔案:
- .txt
- .csv
- .json
- .tmplt
- .xml
- .xlsx
下載開始之前,會出現一個視窗,要求確認視覺效果是否來自信任的來源。
如何使用檔案下載 API
若要使用檔案下載 API,請將宣告新增至視覺效果功能中的權限陣列。
檔案下載 API 有三種方法:
- status:可從 API 4.6 版取得
exportVisualsContent
:可從 API 4.5 版取得exportVisualsContentExtended
:可從 API 5.3 版取得。
這兩種方法之間的差異是傳回值。
status
方法
status 方法會傳回檔案下載 API 的狀態:
- PrivilegeStatus.DisabledByAdmin:租用戶系統管理員切換控制已關閉
- PrivilegeStatus.NotDeclared:視覺效果在權限陣列中不具有本機存放區的宣告
- PrivilegeStatus.NotSupported:不支援 API。 如需詳細資訊,請參閱限制。
- PrivilegeStatus.Allowed:支援及允許 API。
exportVisualsContent
方法
exportVisualsContent
方法有四個參數:
- content:字串
- filename:字串
- fileType:string - 匯出成 .pdf 或 .xlsx 檔案時,
fileType
參數應該是base64
- fileDescription:字串
這個方法會傳回將針對布林值解析的承諾。
exportVisualsContentExtended
方法
exportVisualsContentExtended
方法也有四個參數:
- content:字串
- filename:字串
- fileType:string - 匯出成 .pdf 或 .xlsx 檔案時,
fileType
參數應該是base64
- fileDescription:字串
這個方法會傳回承諾,其會以包含下列參數的 ExportContentResultInfo
類型結果進行解析:
- downloadCompleted – 如果下載成功完成。
- filename – 匯出的檔案名稱。
範例:檔案下載 API
以下是如何將自訂視覺效果的內容下載成 Excel 檔案和文字檔的範例。
import IDownloadService = powerbi.extensibility.IDownloadService;
...
export class Visual implements IVisual {
...
private downloadService: IDownloadService;
...
constructor(options: VisualConstructorOptions) {
this.downloadService = options.host.downloadService;
...
const downloadBtn: HTMLElement = document.createElement("button");
downloadBtn.onclick = () => {
let contentXlsx: string = ...;//content in base64
let contentTxt: string = ...;
this.downloadService.exportVisualsContent(contentTxt, "mytxt.txt", "txt", "txt file").then((result) => {
if (result) {
//do something
}
}).catch(() => {
//handle error
});
this.downloadService.exportVisualsContent(contentXlsx, "myfile.xlsx", "base64", "xlsx file").then((result) => {
if (result) {
//do something
}
}).catch(() => {
//handle error
});
this.downloadService.exportVisualsContentExtended(contentXlsx, "myfile.xlsx", "base64", "xlsx file").then((result) => {
if (result.downloadCompleted) {
//do something
console.log(result.fileName);
}
}).catch(() => {
//handle error
});
};
// if you are using API version > 4.6.0
downloadBtn.onclick = async () => {
try {
const status: powerbi.PrivilegeStatus = await this.downloadService.exportStatus();
if (status === powerbi.PrivilegeStatus.Allowed) {
const result = await this.downloadService.exportVisualsContent('aaaaa','a.txt', 'text/plain', 'aa');
// handle result
} else {
// handle if the API is not allowed
}
} catch (err) {
//handle error
}
}
}
}
考量與限制
- API 僅支援 Power BI 服務和 Power BI Desktop
- 下載檔案的大小限制為 30 MB。
- 此 API 是具特殊權限的 API。