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 ...
随机推荐
- 短信的内容提供者Uri和短信表结构
* sms表 * address :手机号码 * date :收发短信的时间 * read :短信的阅读状态 1,已读 0,未读 * type :收发短信的类型 1,收到短信 2,发出短信 * bod ...
- [Ubuntu]18终止程序运行
方法: 一.使用命令 killall (使用方便,但要知道卡死应用程序的名称) 二.使用 gnome-system-monitor (不知道卡死应用程序的名称,也可以慢慢找出) 操作步骤: step ...
- JAVA 自定义对象集合 List<T> 根据自定义字段去重
1.拥有自定义对象 MyUser @Data public class MyUser { private String userName; private String passWord; } 2.编 ...
- rpm -qa|grep jdk
转:http://blog.csdn.net/u012110719/article/details/42002221 RPM是RedHat Package Manager(RedHat软件包管理工具) ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-7.授权登录获取微信用户个人信息实战
笔记 7.授权登录获取微信用户个人信息实战 简介:讲解使用授权码code获取用户个人信息接口 关键点:看微信文档,字段尽量用拷贝 1.通过code获取access_token ...
- 1.ini读写操作
一.使用 TIniFile implementationvar ini:tinifile; path:string; {ini文件路径} section,key:string;{表示 ...
- Java泛型(4):泛型与匿名内部类
泛型同样也可以使用在匿名内部类中. 下面的例子是对 Java泛型(3):泛型方法 中例(2)的修改. public interface Generator<T> { T next(); } ...
- Springboot学习—CommandLineRunner接口(转载)
前言 Spring boot的CommandLineRunner接口主要用于实现在应用初始化后,去执行一段代码块逻辑,这段初始化代码在整个应用生命周期内只会执行一次. 如何使用CommandLineR ...
- Golang的goroutine协程和channel通道
一:简介 因为并发程序要考虑很多的细节,以保证对共享变量的正确访问,使得并发编程在很多情况下变得很复杂.但是Go语言在开发并发时,是比较简洁的.它通过channel来传递数据.数据竞争这个问题在gol ...
- python 读取文件夹中所有同类型的文件 并用pandas合并
import globimport osimport pandas as pd read_path = 'D:/Data' # 要读取的文件夹的地址read_excel = glob.glob(os. ...