使用 SAP UI5 sap.ui.export.Spreadsheet API 進行 Excel 匯出的一些限制

i042416 發表於 2022-11-27
Excel

開發人員只能匯出 sap.ui.export.EdmType 中列出的原始單元格資料型別,如下圖所示:

使用 SAP UI5 sap.ui.export.Spreadsheet API 進行 Excel 匯出的一些限制

Excel Export API 不支援 UI5 表格單元格中的圖示、影像、核取方塊和複雜控制元件。

也不支援資料繫結中的自定義格式化程式。

匯出表的大小受可用瀏覽器記憶體的限制。匯出大資料集可能會導致記憶體溢位錯誤。因此,請勿將 sap.ui.export.Spreadsheet 與在臺式計算機上包含超過 2,000,000 個表格單元格和在移動裝置上包含超過 100,000 個單元格的資料表一起使用。在這種情況下,請考慮專門的匯出解決方案。例如,MS Excel® 可以直接從 OData 服務匯入電子表格,無需任何 UI 的輔助。

匯出過程儘可能在工作執行緒(瀏覽器的 Web Worker)中執行。但是,對本機 XMLHttpRequest 事件的程式碼注入在工作環境中不可用。因此,如果應用程式使用 Mock Server來獲取表資料,則應將匯出設定中的 worker 引數設定為 false。

對於匯出層次級別資訊,最大層次深度為 8。此限制來自 Office Open XML 標準和可以開啟此類檔案的程式。 sap.ui.export.Spreadsheet 允許路由匯出更多層級,但如果層級深度超過值 8,則在開啟生成的檔案時它們可能無法正確顯示。

列配置必須至少包含一列才能執行匯出過程。如果沒有配置列,匯出將被取消。

如果在表中使用匯出,則不會匯出顯示聚合資料的任何行(即合計行)。

workbook.context 物件上的屬性 sheetName 和 metaSheetName 每個都限制為 31 個字元。如果它們的值超過此最大長度,則該值將被截斷。對於有 ABAP 開發經驗的程式設計人員來說,想必對這個限制並不會感到陌生。

一個小竅門:如果我們想自定義匯出的 Excel 儲存到本地的路徑,可以使用這個 beforeSave hook:

beforeSave 事件在生成的檔案儲存到檔案系統之前觸發。 此事件允許開發人員阻止關閉 ExportDialog 並將檔案儲存到本地裝置的預設操作。 如果預設情況下被阻止,事件處理程式負責關閉和銷燬對話方塊。