OLE使用
ABAP操作EXCEL有多重方法,今天记录一下OLE,具体步骤如下:
1. 首先要上载EXCEL模板 事物代码:SMW0,具体步骤参考 本博客 http://www.cnblogs.com/caizjian/p/8806419.html
2.下载EXCEL模板:
*===指定文件存放本地路径
DATA: lv_folder TYPE string.
DATA: lv_title TYPE string VALUE '指定文件存放本地目录'.
CALL METHOD cl_gui_frontend_services=>directory_browse
EXPORTING
window_title = lv_title "弹出窗标题
"initial_folder =
CHANGING
selected_folder = lv_folder "得到文件夹
EXCEPTIONS
cntl_error =
error_no_gui =
not_supported_by_gui =
OTHERS = .
IF sy-subrc <> .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. DATA:
ls_wwwdata_item LIKE wwwdatatab, "
lv_file TYPE rlgrap-filename VALUE 'IT需求单', "
lv_objid TYPE wwwdatatab-objid VALUE 'ZABAP002_IT.XLSX'. *===指定本地文件存放路径
CONCATENATE lv_folder '/' lv_file '_' gs_it-action_no '.XLSX' INTO lv_file. *===下载文档
DATA: ls_wwwdata TYPE wwwdata. SELECT SINGLE *
INTO ls_wwwdata
FROM wwwdata
WHERE objid = lv_objid
AND srtf2 = ( SELECT MAX( srtf2 ) FROM wwwdata WHERE objid = lv_objid ). MOVE-CORRESPONDING ls_wwwdata TO ls_wwwdata_item. CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' "
EXPORTING
key = ls_wwwdata_item
destination = lv_file.
OLE步骤:
*===定义OLE变量
DATA:excel TYPE ole2_object,
workbook TYPE ole2_object,
sheet TYPE ole2_object,
cell TYPE ole2_object. *===正在处理提示
PERFORM frm_process_prompt USING lv_file. "lv_file是文件路径 *===打开EXCEL
PERFORM frm_excel_open USING lv_file. *===EXCEL赋值
PERFORM frm_excel_value USING lt_lines. "LT_LINES 是传输的数据table
*===释放对象
PERFORM frm_excel_free.
下面展示各FORM:
frm_process_prompt
FORM frm_process_prompt USING p_file TYPE rlgrap-filename.
DATA: l_dis() TYPE c.
CONCATENATE '正在处理文件:' p_file INTO l_dis.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = l_dis.
ENDFORM.
打开excel: frm_excel_open
FORM frm_excel_open USING p_file TYPE rlgrap-filename.
CREATE OBJECT excel 'EXCEL.APPLICATION'.
IF sy-subrc <> .
MESSAGE 'Excel开打失败!.' TYPE 'S'.
STOP.
ELSE.
SET PROPERTY OF excel 'VISIBLE' = .
CALL METHOD OF excel 'WORKBOOKS' = workbook. "新产生一个Excel
CALL METHOD OF workbook 'OPEN'
EXPORTING
# = p_file. "要打开的Excel的路径
GET PROPERTY OF excel 'ACTIVECELL' = sheet.
ENDIF.
CALL METHOD OF excel 'WORKSHEETS' = sheet
EXPORTING
# = 'SHEET1'.
CALL METHOD OF sheet 'ACTIVATE'.
ENDFORM.
给excel赋值:frm_excel_value
FORM frm_excel_value USING lt_lines TYPE STANDARD TABLE. DATA ls_lines TYPE tline.
DATA lv_value TYPE char10.
DATA lv_deatil TYPE string.
*打开第一个Sheet
CALL METHOD OF excel 'WORKSHEETS' = sheet
EXPORTING
# = .
CALL METHOD OF sheet 'ACTIVATE'. PERFORM frm_cell_set USING gs_it-action_no. "需求编号 PERFORM frm_cell_set USING gs_it-rq_name. "修改顾问 PERFORM frm_cell_set USING gs_it-ymodule. "所属模块 CLEAR lv_value.
lv_value = gs_it-zdays.
PERFORM frm_cell_set USING lv_value. "工时/人天 PERFORM frm_cell_set USING gs_it-priority. "优先级 CLEAR lv_value.
WRITE gs_it-podate TO lv_value.
PERFORM frm_cell_set USING lv_value. "计划完成日期 LOOP AT lt_lines INTO ls_lines.
CONCATENATE lv_deatil ls_lines-tdline INTO lv_deatil.
ENDLOOP. PERFORM frm_cell_set USING lv_deatil. "需求说明 *=====保存
GET PROPERTY OF excel 'ACTIVESHEET' = sheet. GET PROPERTY OF excel 'ACTIVEWORKBOOK' = workbook. CALL METHOD OF workbook 'SAVE'.
ENDFORM. " FRM_EXCEL_VALUE
释放对象:frm_excel_free
FORM frm_excel_free .
FREE: excel,workbook,sheet,cell.
CLEAR gs_it.
ENDFORM. " FRM_EXCEL_FREE
OLE使用的更多相关文章
- ODBC、OLE DB、 ADO的区别
转自:http://blog.csdn.net/yinjingjing198808/article/details/7665577 一.ODBC ODBC的由来 1992年Microsoft和Syba ...
- 选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。
异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. ...
- 不注册COM在Richedit中使OLE支持复制粘贴
正常情况下在Richedit中使用OLE,如果需要OLE支持复制粘贴,那么这个OLE对象必须是已经注册的COM对象. 注册COM很简单,关键问题在于注册时需要管理员权限,这样一来,如果希望APP做成绿 ...
- OLE DB Command transformation 用法
OLE DB Command transformation component 能够引用参数,逐行调用sqlcommand,This transformation is typically used ...
- MS SQL 错误:The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "test" was unable to begin a distributed transaction.
一同事在测试服务器(系统:Windows 2008 R2 Standard 数据库:SQL SERVER 2008 R2)通过链接服务器test使用分布式事务测试时出错,出错信息如下: set ...
- Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxxxxx".
在SQL SERVER 2008 R2下用Windows 身份认证的登录名创建了一个访问ORACLE数据库的链接服务器xxxxx,测试成功,木有问题,但是其它登录名使用该链接服务器时,报如下错误: 消 ...
- 魔改——MFC SDI 支持 内嵌 EXCEL OLE
==================================声明================================== 本文版权归作者所有 未经作者授权 请勿转载 保留法律追究的 ...
- 如何读取Access里的OLE类型的图片
身份证一类读卡器读取的照片信息,保存在Access数据库中一般为OLE型字段,图片为BMP格式,因为是用其读卡器写入的,其数据类型为常二进制数据. 再用报表或EXCEL读取这些图片时,如果将该图片字段 ...
- SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur
参见:http://msdn.microsoft.com/zh-cn/library/ms191188(SQL.105).aspx Ole Automation Procedures 选项 [本主题为 ...
- 没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务
在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 O ...
随机推荐
- js获取后台传给前台的值
1.后台传给前台的方法 String rulemodeid=req.getParameter("rulemodeid"); req.setAttribute("rulem ...
- RabbitMQ 使用参考
http://www.zouyesheng.com/rabbitmq.html 安装 基本概念 基本形式 持久化 调度策略 5.1. fanout 5.2. direct 5.3. topic 5.4 ...
- WebServer_参考
参考:http://blog.csdn.net/cjsafty/article/details/9323425 这里顺便记录下几个页面 lajphttps://code.google.com ...
- Kettle实现从mysql中取2张表数据关联的数据,并写入到mongodb中
1 建立转换,并设置DB连接到mysql 选中DB连接:连接类型选择MySQL,输入主机名称,数据库名称,端口号,用户名,密码 输入连接名称,点击确定.(可以先点击测试,测试一下是否连接成功) 如下图 ...
- ScrollView-基本设置
一: 掌握两点: 1. ScrollView必须有一个确定的高度才能正常工作,因为它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作).要给一个ScrollView确定一 ...
- Es性能优化
1. Es中10亿级别的数据量,如何提高查询效率 (1) 性能优化关键:file system cache a. 不要期待随手挑一个参数,就可以万能的应对所有性能慢的场景 b. es依赖于底层的fil ...
- 部署 --- Docker
Docker学习 介绍 : Docker速度更快.性能更高.操作更易.我们开发的不同的程序APP是需要在操作系统中单独的环境中隔离运行的. 为了能让我们不同的程序可以在隔离的环境中运行:我们可以使用虚 ...
- 【miscellaneous】海康相机RTSP连接代码分析
海康相机RTSP连接代码分析 最近在做海康相机rtsp连接获取音视频的工作,现在介绍一下分析过程和源码. [源码在我上传的共享资料中: http://download.csdn.net/detail/ ...
- 【miscellaneous】多播(组播)原理分析
为什么要使用多播: 网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和 ...
- #内存不够,swap来凑# Linux上创建SWAP文件/分区
转自:https://www.vmvps.com/how-to-create-a-swap-file-on-the-linux-os.html 很久很久以前,电脑的内存是个珍贵东西,于是乎就有了swa ...