首页 > 其他分享 >SAP UI5 SmartTable 控件本地运行时进行 Excel 导出的单步调试

SAP UI5 SmartTable 控件本地运行时进行 Excel 导出的单步调试

时间:2022-11-20 20:04:37浏览次数:48  
标签:控件 导出 Excel batch SmartTable UI5 export SAP

点击 SmartTable 控件生成的表格控件的 Export to Excel 时,遇到如下错误消息:

The following error has occurred during export:

Unexpected server response:

SmartTable 基于的是 OData V4 的模型了:

Excel export 操作,触发的是一个 batch 请求:


--batch_aaedc4df-e8bd-48e9-8f7b-daf23bd75db4
Content-Type: application/http
Content-Transfer-Encoding: binary

GET Products?$format=json&$select=ProductId%2cPrice%2cCurrencyCode%2cName%2cCategory&$skip=0&$top=14 HTTP/1.1
sap-contextid-accept:header
Accept:application/json
Accept-Language:en-US
DataServiceVersion:2.0
MaxDataServiceVersion:2.0
X-Requested-With:XMLHttpRequest
x-csrf-token:42424242424242424242424242424242

--batch_aaedc4df-e8bd-48e9-8f7b-daf23bd75db4--

步骤 147 的 Mock Server,没有针对这个 batch 请求进行实现。

因此返回 404 Not Found 错误:

对应的 excel button:

实现的源文件:https://sapui5.hana.ondemand.com/resources/sap/ui/export/SpreadsheetExport-dbg.js

SAP UI5 已经默认使用 web worker 技术在另一个线程里触发 excel 导出的请求了。

如果 worker 参数是 false,默认在主线程里触发,这样可能会阻塞主线程,影响用户体验。

Web Worker:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

我现在的团队要做购物车里商品清单的 Excel 导出功能,这让我马上联想到 SAP UI5 的 Table Excel 导出功能。

很多有用的信息都在 SAP UI5 源代码的注释里。这些注释有的会出现在 SAP UI5 官网,有的不会。

首先使用 Core.loadLibrary("sap.ui.export", true); 加载 Excel 导出相关的 library:

还是异步加载:

ExportUtils:

ExportHandler.prototype.getExportInstance 什么时候被调用?

218 行代码得不到触发:

刷新一次后,调用栈又变了:

我发现使用浏览器刷新按钮,和在地址栏里敲回车,在 Chrome 开发者工具里重新加载新设置的调试器的行为还不太一样:

isMobileTable 的 flag 默认为 true:调用 this._oTable.getColumns(true)

通过 columns 的 aggregation,获取表格 columns 的内容:

获得 label 和 width 等信息:

插入 aSheetColumns 数组:

最后的 setting 从这里来:

标签:控件,导出,Excel,batch,SmartTable,UI5,export,SAP
From: https://blog.51cto.com/jerrywangsap/5860810

相关文章

  • C# 自定义控件 UserControl 绑定
    主界面<Windowx:Class="MyWPFSimple2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.mic......
  • WPF自定义控件之消息提示
    创建消息提示控件internalclassMessage:ContentControl{publicintTime{get;set;}[Bindable(true)]publicMessageTypeMes......
  • 【WPF】ComboBox控件
    ComboBox控件属性IsTextSearchEnabled="True":自动补充数据IsTextSearchCaseSensitive=true;自动补充数据,区分大小写IsDropDownOpen="True":combobox自动打开下拉框......
  • django中实现excel的下载功能
    利用python中的xlsxwriter库,注意该库只能创建excel.而不支持读取和修改,也不支持XLS格式。1.urls.pyfromdjango.contribimportadminfromdjango.urlsimportpath,i......
  • 【Excel~基础】解决msoffice高低版本兼容问题
    问题描述现今的office高版本可以兼容低版本文件,例如office2016可以兼容2010,甚至是2003版本的excel文件,但低版本却无法打开高版本的excel文件。例如Excel2016格式的数......
  • Android 使用ui控件 【文本显示控件,按钮控件】
    目录注意事项创建控件监控按钮按下修改文本展示控件的内容注意事项1创建控件后一定要设置控件id2控件的修改必须在主线程中创建控件在清单文件中创建控件,我是通过可......
  • Mest SQL(1)---利用Python将Excel数据表导入MySQL数据库
    【最终呈现效果】【原始Excel数据表】【代码实现及注释】importpandasaspdimporttimeimportreti=time.strftime('%Y_%m_%d_%H%M%S',time.localtime())myexcel=r'G:\M......
  • php使用phpSpreadsheet读写excel
    本文转载自https://www.cnblogs.com/ryuma/p/14586372.html 和 https://www.cnblogs.com/woods1815/p/11372007.htmlphpSpreadsheet  GitHub:https://github.com/PH......
  • laravel导出excel文件
    导出多个sheet//ExportMulSheets.phpnamespaceApp\Exports;useMaatwebsite\Excel\Concerns\Exportable;useMaatwebsite\Excel\Concerns\WithMultipleSheets;cl......
  • delphi TMS FlexCel 取消合并单元格
    TMSFlexCel取消合并单元格属性和方法TXlsFile.UnMergeCellsprocedureUnMergeCells(constfirstRow:Integer;constfirstCol:Integer;constlastRow:Integer;co......