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 ...
随机推荐
- 九十九:CMS系统之ajax提交修改密码的数据
顺便实现ajax提交的时候默认提交csrf_token var http = { 'get':function (args) { args['method'] = 'get'; this.ajax(a ...
- 在SuSE安装wifidog认证服务器和网关
在SuSE安装认证服务器和网关 在openSuSE 10.3安装wifidog 认证服务器和网关在同台设备中安装完毕.以下是openSuSE的详细安装指南.这个安装是非常初级的,所以请验证或更正. - ...
- MongoDB Input
Configure Connection Tab Host name(s) or IP address(es):网络名称或者地址.可以输入多个主机名或IP地址,用逗号分隔.还可以通过将主机名和端口号与 ...
- Pycharm 编辑器快捷键
必备技能:IDEA一定要懂的32条快捷键 这些IntelliJ IDEA键盘快捷键可以让你专注于编写代码,让你的双手在键盘上起舞. 1,搜索文件名: ↑ Shift 快速连续按两下 2,显示便捷提 ...
- Python之网络模型与图形绘制工具networkx
笔记 # https://www.jianshu.com/p/e543dc63454f import networkx as nx import matplotlib.pyplot as plt ## ...
- maven 依赖原则
maven 依赖原则 ###间接依赖路径最短优先 a->b->c1.0 a->e->f->c1.1 ====>c1.0 申明顺序优先 <!-- test1 - ...
- Windows10内置Linux子系统初体验
http://www.jianshu.com/p/bc38ed12da1dhttp://www.jianshu.com/p/bc38ed12da1d WSL 前言 前段时间,机子上的win10又偷偷摸 ...
- gitbook组织管理书写
1.git 强大的版本管理工作,也适合对书写内容的更新管理. 2.markdown git管理文本,所以书写要从docx格式转变成markdown. 而typora是一个比较好用markdown书写工 ...
- 5种Redis数据结构详解
本文主要和大家分享 5种Redis数据结构详解,希望文中的案例和代码,能帮助到大家. 转载链接:https://www.php.cn/php-weizijiaocheng-388126.html 2. ...
- C语言递归之对称二叉树
题目描述 给定一个二叉树,检查它是否是镜像对称的. 示例 二叉树 [1,2,2,3,4,4,3] 是对称的. / \ / \ / \ [1,2,2,null,3,null,3] 则不是镜像对称的. / ...