SAP 下载EXCEL DOI使用OLE功能(DOI获取OLE对象)
SAP下载Excel可通过OLE技术实现,但由于OLE的下载速度较慢,对于数据量大的时候影响用户体验,所以最新使用DOI技术。
DOI主要使用了接口I_OI_DOCUMENT_PROXY和I_OI_SPREADSHEET,但由于SAP封装的类方法有限,有些特殊要求无法满足,好在DOI底层其实也是使用了OLE对象,所以我们可以获取OLE对象实现SAP未封装的功能,譬如复制sheet、设置列宽等等。
DOI获取OLE对象可调用接口I_OI_DOCUMENT_PROXY的方法GET_DOCUMENT_HANDLE得到HANDLE-OBJ。然后获取HANDLE-OBJ的Application属性即为Office应用对象,获取Office应用对象的ActiveWorkbook属性即为Excel对象。
核心代码如下:
CALL METHOD gr_document->get_document_handleIMPORTINGerror = lr_errorhandle = lr_handle.CALL METHOD lr_error->raise_messageEXPORTINGtype = 'E'.GET PROPERTY OF lr_handle-obj 'Application' = lr_excel.GET PROPERTY OF lr_excel 'ActiveWorkbook' = lr_workbook.
示例功能:复制模板Sheet并根据需求复制对应列
*&---------------------------------------------------------------------*
*& Form frm_add_sheet
*&---------------------------------------------------------------------*
*& 增加Sheet
*&---------------------------------------------------------------------*
*& --> IV_KTEXT_COL 科室列数
*& <-- CV_NAME Sheet名
*&---------------------------------------------------------------------*
FORM frm_add_sheet USING iv_ktext_col TYPE iCHANGING cv_name TYPE char50.DATA: lr_error TYPE REF TO i_oi_error,lr_handle TYPE cntl_handle,lr_excel TYPE ole2_object,lr_workbook TYPE ole2_object,lr_sheet TYPE ole2_object,lr_range TYPE ole2_object.CALL METHOD gr_document->get_document_handleIMPORTINGerror = lr_errorhandle = lr_handle.CALL METHOD lr_error->raise_messageEXPORTINGtype = 'E'.GET PROPERTY OF lr_handle-obj 'Application' = lr_excel.GET PROPERTY OF lr_excel 'ActiveWorkbook' = lr_workbook.IF cv_name = TEXT-t02.
* 重命名汇总SheetIF g_first_day = g_last_day.cv_name = g_first_day.ELSE.cv_name = g_first_day && '-' && g_last_day.ENDIF.CALL METHOD OF lr_workbook 'Sheets' = lr_sheetEXPORTING#1 = 1.SET PROPERTY OF lr_sheet 'Name' = cv_name.ELSE.
* 复制模板SheetCALL METHOD OF lr_workbook 'Sheets' = lr_sheetEXPORTING#1 = 1.CALL METHOD OF lr_sheet 'Copy'EXPORTING#1 = lr_sheet.SET PROPERTY OF lr_sheet 'Name' = cv_name.ENDIF.CALL METHOD OF lr_sheet 'Select'.* 科室分列导出IF gv_expand IS NOT INITIAL.
* 新增科室列DO iv_ktext_col - 1 TIMES.
* 复制科室列CALL METHOD OF lr_excel 'Columns' = lr_rangeEXPORTING#1 = 6.CALL METHOD OF lr_range 'Select'.CALL METHOD OF lr_range 'Copy'.CALL METHOD OF lr_range 'Insert'.ENDDO.ENDIF.FREE lr_handle.FREE lr_excel.FREE lr_workbook.ENDFORM.
SAP 下载EXCEL DOI使用OLE功能(DOI获取OLE对象)相关推荐
- SAP 下载excel提示 请和系统管理员联系.缺少下列模板:sap_sm.xls
一.运行程序:BCALV_BDS_IMPORT_SAP_TEMPLATE,在Client000 Copy一个. 二.运行Tcode OAER,参数为: Class name: ALVLAYOUTTEM ...
- Delphi 的绘图功能[5] - 获取 Canvas 对象
在窗体上添加 Panel1.PaintBox1 和 Button1, 代码如下: procedure TForm1.Button1Click(Sender: TObject); varcvs: TCa ...
- SAP ABAP EXCEL 下载模板并导入(数据批导)
SAP ABAP EXCEL 下载模板并导入(数据批导) 文章目录 SAP ABAP EXCEL 下载模板并导入(数据批导) 前言 上传 EXCEL 模板 下载 EXCEL 模板 定义屏幕 初始化设置 ...
- java导出功能无法下载excel
java导出功能无法下载excel 开始使用ajax请求,项目不报错,但是浏览器也没有Excel文件下载,查找代码好久都没有解决 原因:Ajax请求只是个"字符型"的请求,即请求的 ...
- 前端下载excel文件功能的三种方法
1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...
- java下载excel实现合并单元格功能
在下载excel中偶尔会出现需要合并单元格的情况再导出,代码如下: // 1.创建工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 标题合并单元格设 ...
- SAP UI5 应用开发教程之一百零二 - SAP UI5 应用的打印(Print)功能实现详解试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
- Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)
Excel的导入V2优化版 有些时候文件上传这一步骤由前端来处理,只将上传后的 URL 传输给后端(可以参考上一文中的图片上传功能),也就是导入请求中并不会直接处理 MultipartFile 对象, ...
- django下载excel,使用django-excel插件
django下载Excel,使用django-excel插件 由于目前的资料多是使用pandas或xlwt库实现的.其实没有那么的麻烦,因为django有相对应的插件django-excel. 该插件 ...
最新文章
- 电脑硬件检测_好用的电脑硬件型号有哪些_江西南昌顺同谦科技|电脑||笔记本|...
- systemctl与mysql多实例_mysql mariadb 多版本多实例 开机启动
- 《操作系统》CPU如何区分正在运行的是内核程序or应用程序?
- VS2013出现“无法找到“xxx.exe”的调试信息,或者调试信息不匹配”错误解决方案
- 使用matlab画半透明椭圆
- macOS修改Homebrew镜像
- SQL:PostgreSQL设置自增序列
- 基于J2EE规范的中间件——EJB开发实例2
- 三段式状态机的写法总结
- matlab版深度学习入门之旅----体验过后的个人记录
- [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.23
- python3 selenium xpath 下载斗鱼颜值主播头像 入门demo
- c语言实验报告总结通用版,C语言实训心得体会
- web学生网页设计作业源码——国际足联世界杯(HTML+CSS)
- Microsoft 提供的 USB 驱动程序
- 计算机专业是不是天坑专业,工科中的三大“天坑”专业,就业前景不太乐观,入坑需谨慎!...
- pdcp层的作用_LTE协议栈总体架构、PDCP层及RLC层概述
- 大二Web课程设计 HTML+CSS制作苹果商城网站 Apple商城 8个页面
- 如何删除鼠标右键的显示的快捷键或功能?
- vue数据更新,页面不更新