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使用的更多相关文章

  1. ODBC、OLE DB、 ADO的区别

    转自:http://blog.csdn.net/yinjingjing198808/article/details/7665577 一.ODBC ODBC的由来 1992年Microsoft和Syba ...

  2. 选择目录,选择文件夹的COM组件问题。在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式。请确保您的 Main 函数带有 STAThreadAttribute 标记。 只有将调试器附加到该进程才会引发此异常。

    异常: 在可以调用 OLE 之前,必须将当前线程设置为单线程单元(STA)模式.请确保您的 Main 函数带有 STAThreadAttribute 标记. 只有将调试器附加到该进程才会引发此异常. ...

  3. 不注册COM在Richedit中使OLE支持复制粘贴

    正常情况下在Richedit中使用OLE,如果需要OLE支持复制粘贴,那么这个OLE对象必须是已经注册的COM对象. 注册COM很简单,关键问题在于注册时需要管理员权限,这样一来,如果希望APP做成绿 ...

  4. OLE DB Command transformation 用法

    OLE DB Command transformation component 能够引用参数,逐行调用sqlcommand,This transformation is typically used ...

  5. 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 ...

  6. Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxxxxx".

    在SQL SERVER 2008 R2下用Windows 身份认证的登录名创建了一个访问ORACLE数据库的链接服务器xxxxx,测试成功,木有问题,但是其它登录名使用该链接服务器时,报如下错误: 消 ...

  7. 魔改——MFC SDI 支持 内嵌 EXCEL OLE

    ==================================声明================================== 本文版权归作者所有 未经作者授权 请勿转载 保留法律追究的 ...

  8. 如何读取Access里的OLE类型的图片

    身份证一类读卡器读取的照片信息,保存在Access数据库中一般为OLE型字段,图片为BMP格式,因为是用其读卡器写入的,其数据类型为常二进制数据. 再用报表或EXCEL读取这些图片时,如果将该图片字段 ...

  9. SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur

    参见:http://msdn.microsoft.com/zh-cn/library/ms191188(SQL.105).aspx Ole Automation Procedures 选项 [本主题为 ...

  10. 没有活动事务 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务

    在windows2003下执行分布式事务的时候出现如下情况. 一. 问题现象在执行分布式事务时,在sql server 2005下收到如下错误: 链接服务器"xxxxxxx"的 O ...

随机推荐

  1. Hibernate3核心API-Session接口

    Session是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作.此对象的生命周期很短.Sessio ...

  2. Android下文件访问的权限

    * 默认情况下,Android中,应用程序的文件时私有的,其他应用程序不可以读取私有的文件 * 底层用的时Linux文件的权限 - rw- rw- ---                - :文件   ...

  3. java设计模式中的动态代理

    Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...

  4. Redis在Linux上面安装

    1 下载Redis:https://redis.io/download 下载完成之后:redis-4.0.11.tar.gz 2 将下载的压缩包传到linux对应文件夹下面(笔者上传到/opt/下面) ...

  5. 《A Survey on Transfer Learning》迁移学习研究综述 翻译

    迁移学习研究综述 Sinno Jialin Pan and Qiang Yang,Fellow, IEEE 摘要:   在许多机器学习和数据挖掘算法中,一个重要的假设就是目前的训练数据和将来的训练数据 ...

  6. linux硬件驱动

    今天被问到了一个新问题:linux需不需要安装驱动,就像windows装完系统之后需要安装最新驱动一样? 说实话以前真没想过,都是装完系统update一下就直接用了. 谷歌了一下,发现其实也是需要安装 ...

  7. APP安全_Android渗透环境

    Android渗透 移动APP大多通过WEB API服务的方式与服务端进行交互,这种模式把移动安全和web安全绑在一起.常见的web漏洞在移动APP中也存在,比如SQL注入,文件上传,中间件/serv ...

  8. MySQL_数据库命令

    Mysql基础命令 开启MySQL服务:net start mysql 关闭MySQL服务:net stop musql 进入mysql:mysql -h localhost -u root -p 1 ...

  9. FTL-SLC&MTC&TLC

    1.博客 SLC.. http://diybbs.zol.com.cn/67/231_661182.html 2.FTL --作者在普及了一些FTL基本知识后,主要分析了在linux上实现的途径 ht ...

  10. android简易跑马灯

    重点:焦点的选择(返回true使得焦点不被选择) MarqueeText.java package com.example.demo02; import android.content.Context ...