將編頁報告匯出至 Microsoft Excel (報表產生器)
適用於: Microsoft 報表產生器 (SSRS) Power BI Report Builder SQL Server Data Tools 中的報表設計師
當您使用 Power BI 或 SQL Server Reporting Services (SSRS)時,您可以使用 Excel 轉譯延伸模組將編頁報表導出至 Microsoft Excel。 Excel 中匯出數據行的寬度會模擬報表中數據行的寬度。 但是您可以重新建構報表數據,或在活頁簿中進一步處理報表數據。
本文討論匯出程式的各個層面,例如互動式功能的轉譯器支援,以及在數據格中放置數據。 也涵蓋 Excel 和轉譯器的限制。
匯出格式
Excel 轉譯延伸模組會將報表導出為 Office Open XML 格式。 轉譯器產生的檔類型是 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,擴展名為.xlsx。
您可以透過變更裝置資訊設定,變更此轉譯器的某些預設設定。 如需詳細資訊,請參閱 Excel 裝置資訊設定。
如需如何以 Excel 格式匯出報表的資訊,請參閱匯出編頁報表(報表產生器)。
重要
當您定義 類型的 String
報表參數時,使用者會看到可以接受任何值的文字框。 如果報表參數未係結至查詢參數,而且參數值會包含在報表中,則有安全性風險。 具體而言,報表使用者可以輸入表達式語法、腳本程序代碼或 URL 做為參數值。 因此,使用者可以輸入惡意腳本或惡意連結。 如果報表導出至 Excel,其他使用者就可以檢視它。 如果他們選取轉譯的參數內容,他們可能會不小心執行惡意腳本或前往惡意網站。
若要減輕不小心執行惡意指令碼的風險,請只從信任的來源開啟轉譯的報表。 如需安全性報告之相關詳細資訊,請參閱 保護報表與資源安全。
Excel 限制
由於 Excel 及其檔案格式的功能,Excel 會限制導出的報表。 下列限制的影響最大:
- 欄寬上限為 255 個字元或 1726.5 點。 轉譯器不會驗證資料行寬度低於限制。
- 單元格中的字元數上限為32,767。 如果超出這個限制,轉譯器會顯示錯誤訊息。
- 資料列高度的上限為 409 點。 如果數據列的內容導致數據列高度超過 409 點,Excel 單元格會顯示最多 409 點的部分文字量。 單元格內容的其餘部分仍位於單元格內,最多允許 32,767 個字元。
- 由於數據列高度上限為 409 點,如果報表中儲存格的定義高度大於 409 點,Excel 會將儲存格內容分割成多個數據列。
- Excel 中未定義工作表的最大數目。 但記憶體和磁碟空間等外部因素可能會導致套用限制。
- 在大綱中,Excel 的巢狀結構最多只允許七個層級。
- 大綱的可用性取決於控制另一個項目可見度之報表專案的位置。 在下列案例中無法使用大綱:
- 控件報表專案不在上一個或下一個數據列中,相對於要展開或折疊的專案。
- 控件報表專案不在正在展開或折疊之項目的數據行中。
如需 Excel 限制的詳細資訊,請參閱 Excel 規格和限制。
文字輸入框和文字
下列限制適用於文字方塊和文字:
- 是運算式的文字輸入框值不會轉換為 Excel 公式。 每個文字方塊的值都會在報表處理期間進行評估。 評估的運算式會當做每個 Excel 資料格的內容來匯出。
- 每個文本框都會在一個 Excel 單元格內轉譯。 對於字型大小、字型臉部、裝飾和字型樣式,單元格文字支援格式設定。
- Excel 不支援超行文字格式設定。
- Excel 會將大約 3.75 點的預設填補加入到資料格的左側和右側。 如果文本框的邊框間距小於 3.75 點,且方塊不夠寬,無法容納文字,則文字可能會換行至 Excel 中的新行。 若要解決此問題,請在報表中增加文字方塊的寬度。
影像
下列限制適用於影像:
- Excel 不支援個別資料格的背景影像,因此會忽略報表項目的背景影像。
- Excel 轉譯延伸模組僅支援報表主體的背景影像。 如果報表主體背景影像顯示在報表中,該影像會轉譯為工作表的背景影像。
矩形
下列限制適用於矩形:報表頁尾中的矩形不會匯出至 Excel。 但是報表主體、Tablix 單元格和其他類似元件的矩形會轉譯為 Excel 單元格的範圍。
報表首和頁尾
下列限制適用於報表頁首和頁尾:
- Excel 頁首和頁尾區段最多支援 256 個字元,包括標記。 轉譯延伸模組會在 256 個字元處截斷字串。
- SSRS 不支援報表頁首和頁尾的邊界。 在 Excel 中,這些邊界值會設定為零。
- 當您列印導出至 Excel 的報表時,印表機設定可能會影響轉譯。 具體而言,如果報表中的頁首或頁尾包含多個數據列,您可能不會在列印輸出中看到多個數據列。
- 頁首或頁尾中的文本框會維持其格式設定,但在匯出至 Excel 時不會維持其對齊方式。 當報表轉譯為 Excel 時,會修剪前置和尾端空格,這會變更對齊方式。
合併的儲存格
下列限制適用於合併儲存格:如果合併儲存格,文字就不會正確包裝。
Excel 轉譯器基本上是一個配置轉譯器。 其目標是在 Excel 工作表中盡可能仔細地複寫轉譯報表的配置。 因此,儲存格可能會合併在工作表中,以保留報表版面配置。 合併的儲存格可能會導致問題,因為 Excel 中的排序功能需要以特定方式合併儲存格,才能正常運作。 例如,如果您想要排序單元格範圍,Excel 會要求範圍中的每個合併儲存格的大小與範圍中的其他合併儲存格相同。
減少 Excel 工作表中合併的儲存格數目,可讓您更輕鬆地排序工作表。 下列幾點可協助您將匯出程式期間合併的儲存格數目降到最低。
- 單元格合併最常見的原因是專案未對齊左邊或右側。 您通常可以藉由排入所有報表專案的左右邊緣,以及提供相同的寬度來解決問題。
- 即使您對齊所有專案,某些數據行仍會在罕見的情況下合併。 轉譯程式期間的內部單位轉換和四捨五入可能會導致單元格合併。 在報表定義語言 (RDL) 中,您可以指定各種單位的位置和大小,例如英吋、圖元、公分和點。 在內部,Excel 會使用點。 因此,在轉譯期間,英吋和公分會轉換成點。 若要在轉譯期間將轉換作業降至最低,以及捨入的可能不透明度,請考慮指定整個點中的所有度量。 一英吋等於 72 點。
報表資料列群組和資料行群組
當您將數據列群組或數據行群組導出至 Excel 時,包含空白儲存格的報表。 下圖顯示將通勤距離上數據列分組的報表。 每個通勤距離都可以包含一個以上的客戶。
當您將報表導出至 Excel 時,通勤距離只會出現在 [通勤距離] 資料行的一個單元格中。 設計報表時,您可以將文字對齊數據列群組的頂端、中間或底部。 該對齊方式會決定值在匯出報表中的第一個、中間或最後一個單元格中。 群組中該數據行中的其他儲存格是空的。 包含客戶名稱的 [名稱] 資料行沒有空白儲存格。
下圖顯示將報表導出至 Excel 之後的報表。 空白儲存格在影像中呈現灰色,但陰影不是導出報表的一部分。
將包含數據列群組或數據行群組的報表匯出至 Excel 之後,您必須先修改報表,才能在數據透視表中顯示匯出的數據。 您必須將群組值新增至遺漏的儲存格。 然後工作表會變成具有所有儲存格值的平面數據表。 下圖顯示更新的工作表。
如果您為了將報表導出至 Excel 的特定用途而建立報表,以便進一步分析報表數據,請考慮不要將報表中的數據列或數據行分組。
Excel 轉譯器
下列 XML 程式代碼顯示 RSReportServer 和 RSReportDesigner 組態檔中 Excel 轉譯延伸模組的 元素:
<Extension Name="EXCELOPENXML" Type="Microsoft.ReportingServices.Rendering.ExcelOpenXmlRenderer.ExcelOpenXmlRenderer,Microsoft.ReportingServices.ExcelRendering"/>
Excel 轉譯器具有下列預設值和限制:
屬性 | 值 |
---|---|
每個工作表的資料行上限 | 16,384 |
每個工作表的資料列上限 | 1,048,576 |
工作表中允許的色彩數目 | 約為 1600 萬 (24 位元色彩) |
ZIP 壓縮的檔案 | ZIP 壓縮 |
預設字型家族 | Calibri |
預設字型大小 | 11 點 |
預設資料列高度 | 15 點 |
因為報表會明確設定數據列高度,因此預設數據列高度只會影響匯出至 Excel 期間自動調整大小的數據列。
Excel 中的報表項目
當您將報表導出至 Excel 時,下列元件會轉譯為 Excel 單元格的範圍:子報表、矩形、報表主體和數據區域。 文本框、影像、圖表、數據橫條、走勢圖、地圖、量測計和指標會在一個 Excel 單元格內呈現。 但是該儲存格可能會與其他儲存格合併。 報表其餘部分的配置會決定是否發生合併。
影像、圖表、走勢圖、數據橫條、地圖、量測計、指標和線條都位於一個 Excel 單元格內,但它們位於數據格方格的頂端。 線條會轉譯為資料格框線。
圖表、走勢圖、數據橫條、地圖、量測計和指標會匯出為影像。 它們所描述的資料不會與其一起匯出。 除非將資料包含在報表內資料區的資料行或資料列中,否則 Excel 活頁簿中無法使用資料。
如果您想要使用圖表、走勢圖、數據橫條、地圖、量測計和指標的數據,您可以將報表導出至 CSV 檔案,或從報表產生符合 Atom 規範的數據摘要。 如需詳細資訊,請參閱將編頁報表導出至 CSV 檔案(報表產生器),以及從報表產生數據摘要(報表產生器)。
頁面大小
Excel 轉譯延伸模組會使用頁面高度和寬度設定來判斷 Excel 工作表的紙張設定。 Excel 會嘗試讓 PageHeight
和 PageWidth
屬性設定符合其中一個常用的紙張大小。
如果找不到相符項目,Excel 會針對印表機使用預設的頁面大小。 如果頁面寬度小於頁面高度,方向會設定 Portrait
為 。 否則,方向會設定為 Landscape
。
工作表標籤名稱
當您將報表導出至 Excel 時,分頁符號會建立報表頁面,並將每個頁面匯出至不同的工作表。 如果您提供報表的初始頁面名稱,Excel 活頁簿的第一個工作表就會有這個名稱。 由於活頁簿中的每個工作表都必須有唯一的名稱,因此從兩個開始的整數會附加至每張工作表的頁面名稱。 例如,如果初始頁面名稱是 [依會計年度的銷售報表],第二張工作表會依會計年度命名為 Sales Report (2)。 第三個報表會依會計年度 (3) 命名為銷售報表,依此命名。
如果分頁符號所建立的所有報表頁面都提供新的頁面名稱,則每個工作表都有相關聯的頁面名稱。 但是,如果這些頁面名稱不是唯一的,工作表會以與初始頁面名稱相同的方式命名。 例如,如果兩個群組的頁面名稱是 NW 的 Sales,一個工作表索引標籤就會有 NW 的名稱,另一個 NW 的 Sales (2) 。
如果報表未提供分頁符號的初始頁面名稱或頁面名稱,工作表索引標籤的預設名稱 為 Sheet1、 Sheet2 等等。
SSRS 提供屬性,您可以針對報表、數據區、群組和矩形設定。 這些屬性可協助您建立報表,以您想要的方式導出至 Excel。 如需詳細資訊,請參閱編頁報表中的分頁 (Microsoft 報表產生器)。
文件屬性
Excel 轉譯器會將下列中繼資料寫入到 Excel 檔。
報表元素屬性 | 描述 |
---|---|
建立時間 | 執行報表的日期和時間,當做 ISO 日期/時間值。 |
作者 | Report.Author |
描述 | Report.Description |
LastSaved | 執行報表的日期和時間,當做 ISO 日期/時間值。 |
頁首和頁尾
轉譯頁首的方式取決於裝置資訊 SimplePageHeaders
設定:
- 根據預設,
SimplePageHeaders
會設定為 False。 在此情況下,標頭會轉譯為 Excel 工作表上位於該方格頂端的儲存格方格。 - 如果
SimplePageHeaders
設定為 True,則標頭會轉譯為 Excel 工作表標題區段。
不論設定的值 SimplePageHeaders
為何,頁尾一律會轉譯為 Excel 工作表頁尾區段。
由於 Excel 的限制,文字框是唯一可在 Excel 頁首和頁尾區段中轉譯的報表項目類型。
Excel 頁首和頁尾區段最多支援 256 個字元,包括標記。 如果超過此限制,Excel 轉譯器會移除開頭為頁首或頁尾字串結尾的標記字元,以減少字元總數。 如果移除所有標記字元,而且長度仍然超過最大值,則會從結尾開始截斷字串。
SimplePageHeader 設定
當裝置資訊
SimplePageHeaders
設定設為 False 時,包含標頭的工作表數據列會變成鎖定的數據列。 您可以在 Excel 中凍結或取消凍結窗格。如果列印標題的 Excel 設定已設定為列印這些標題列,則除了檔地圖封面表之外,每個工作表頁面上都會列印這些標題。
在 報表產生器 頁首 屬性視窗:
- 如果未 選取第一頁 的 [列印],標頭就不會新增至第一個報表頁面。
- 如果未 選取 [在最後一頁 列印],標頭就不會新增至最後一個報表頁面。
互動性
在 Excel 中支援某些互動項目。 下列各節討論互動。
顯示與隱藏
Excel 在匯出報表專案時,管理隱藏和顯示報表專案的方式有一個限制。 包含可展開和折疊之報表專案的群組、數據列和數據行會轉譯為 Excel 大綱。 但 Excel 會跨整個數據列或欄展開和折疊數據列和數據行。 因此,報表專案可以折疊而無法折疊。 此外,Excel 的大綱符號可能會變得雜亂與重疊的外框。
若要解決這些問題,Excel 轉譯延伸模組會使用下列大綱規則:
可以展開和折疊最接近左上角的報表專案,也可以在 Excel 中展開和折疊。 與其他與左上方專案共用垂直或水準空間的報表項目無法在Excel中展開或折疊。
若要判斷數據區是否由數據列或數據行折疊,會將兩個專案的位置納入考慮:
- 控制可見性的報表專案
- 可以展開和折疊的數據區域
套用的規則取決於這兩個項目的相對位置:
- 如果控制可見性的專案出現在展開和折疊的專案上方或下方,則專案會依數據列折疊。
- 如果控制可見度的專案出現在展開和折疊的專案旁邊,則專案會依數據行折疊。
- 如果控制可見性的項目在展開和折疊的專案上方和旁邊出現相同的距離,則專案會依數據列折疊。
若要判斷轉譯報表中放置自動小計的位置,轉譯延伸模組會檢查動態成員的第一個實例。 如果對等靜態成員立即出現在其上方,則會假設動態成員是小計。 系統會設定大綱來表示該資料是摘要資料。 如果沒有動態成員的靜態同層級,執行個體的第一個執行個體就是小計。
由於 Excel 限制,大綱最多只能巢狀到七個層級。
文件引導模式
如果報表中有任何文件地圖卷標存在,則會將文件引導模式轉譯為 Excel 封面工作表。 工作表名為 文件對應,且位於活頁簿中的第一個索引標籤位置。
DocumentMapLabel
報表專案或群組的 屬性會決定文件引導模式中的標籤。 卷標會依報表中出現的順序列出,從第一個數據行的第一個數據列開始。 每個文件引導模式標籤資料格都會縮排報表中出現的層級深度。 系統會在接續的資料行中放置標籤來表示每個縮排層級。 Excel 最多支援 256 層的大綱巢狀層級。
文件引導模式大綱會轉譯為可折疊的 Excel 大綱。 大綱結構會與文件引導模式的巢狀結構相符。 大綱的展開和折疊狀態會從第二層級開始。
地圖的根節點是報表名稱,或其檔名沒有 .rdl 擴展名。 該名稱不是互動式名稱。
轉譯器會針對文件地圖連結使用10點 Arial 字型。
鑽研連結
文本框中出現的鑽研鏈接會轉譯為轉譯文字之單元格中的 Excel 超連結。 影像或圖表的鑽研連結會轉譯為影像上的 Excel 超連結。 當您選取鑽研連結時,它會開啟客戶端的預設瀏覽器,並移至目標的 HTML 檢視。
超連結
文本框中出現的超連結會轉譯為轉譯文字之單元格中的 Excel 超連結。 影像或圖表的超連結會轉譯為影像上的 Excel 超連結。 當您選取超連結時,它會開啟客戶端的預設瀏覽器,並移至目標 URL。
互動式排序
在 報表產生器 中,您可以選取報表中的按鈕,以變更數據表和矩陣顯示數據列和數據行的順序。 Excel 不支援這種類型的互動式排序。
書籤
文本框中的書籤連結會轉譯為轉譯文字之單元格中的 Excel 超連結。 影像或圖表的書籤連結會轉譯為影像上的 Excel 超連結。 當您選取書籤時,它會移至呈現書籤報表專案的 Excel 單元格。
在運行時間變更報告
在某些情況下,您需要報表才能轉譯成多種格式。 如果無法建立報表版面配置,以轉譯所有必要格式的方式,您可以使用 RenderFormat
內建的全域值。 當您使用此值時,可以在運行時間有條件地變更報表外觀。 如此一來,您可以根據所使用的轉譯器來隱藏或顯示報表專案,以取得每個格式的最佳結果。 如需詳細資訊,請參閱編頁報告中的全域和使用者參考 (Report Builder)。
針對匯出至 Excel 進行疑難排解
當您使用虛擬服務帳戶和執行帳戶時,匯出至 Excel 可能會失敗。 具體而言,登錄機碼存取可能會遭到拒絕。
若要解決此問題,您可以授與虛擬用戶帳戶分支下受影響登錄專案之執行帳戶的讀取許可權。 例如,其中一個可能的登錄項目是 HKEY_USERS\S-1-5-80-4050220999-2730734961-1537482082-519850261-379003301\Software\Microsoft\Avalon.Graphics
。 然後,您必須重新啟動電腦。