---------------------------------------------------前言---------------------------------------------------------------------------------

ABAP可以使用OLE与DOI两种方式实现操作EXCEL。使用OLE时,每个单元格的值和样式都需要写代码实现,特别是对于不规则的格式, 代码量巨大. 而DOI是从服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存。当然,也可以直接创建新的EXCEL文件往里面传递数据并设置格式(这样好像又走回老路了,不是我们要的, OLE与DOI的区别就好像是面向过程与面向对象的区别).

简单来说,DOI操作EXCEL主要有以下几步:

准备工作:上传Excel模板

第一步:下载Excel到本地

第二步:打开Excel文档

第三步:   写入数据

----------------------------------------------------正文-------------------------------------------------------------------------------------

准备工作:上传Excel模板:

1.输入Tcode: smw0 如图所示:

2.选择二进制数据选择,回车后进入查询界面,包: MI

3.点击执行:进入显示列表,点击新建图标:

4.输入对象名称与描述后点击打开文件选择框,,选择文件后,会提示选择包,

好了,可以写代码了(复制可以直接运行,前提是已经上传模板),

REPORT  zr04_ole_templet.

DATA:c_export_filename_xls   TYPE string VALUE 'ZRRFQ01_1.XLS', "导出模板默认文件名 '数据导入模板'
           c_objid_xls                       TYPE wwwdatatab-objid VALUE 'ZRRFQ01_1.XLS'.   "存放模板的对象id

DATA:  lo_objdata                       LIKE wwwdatatab,                                "Excel模板对象
             ls_destination                LIKE rlgrap-filename                           ,"下载保存的目标路径
             lc_path                            TYPE string,        "存储路径
             lc_fullpath                       TYPE string,       "文件完整路径
             li_rc                                  LIKE sy-subrc.   "返回值

DATA: excel_obj                         TYPE ole2_object,
           book_obj                          TYPE ole2_object,
           sheet_obj                        TYPE ole2_object,
           cell_obj                            TYPE ole2_object.

START-OF-SELECTION.

第一步: 下载Excel到本地
  PERFORM download_xls_template.

第二步:打开Excel文档
  PERFORM open_excel.

第三步:   写入数据
  PERFORM write_excel.

*&---------------------------------------------------------------------*
*&      Form  download_xls_template
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM download_xls_template.

* 获取保存路径
  CALL METHOD cl_gui_frontend_services=>get_desktop_directory
    CHANGING
      desktop_directory = lc_path.
  IF lc_path IS INITIAL.
    lc_path = 'C:\TEMP'.
  ENDIF.
  CONCATENATE lc_path '\' c_export_filename_xls INTO lc_fullpath.

*  检查模板是否存在
  SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata
  WHERE srtf2 = 0 AND relid = 'MI' AND objid = c_objid_xls.
  IF sy-subrc NE 0 OR lo_objdata-objid EQ space.
    MESSAGE e000(zpp001) WITH c_export_filename_xls.
  ENDIF.

*  下载模板
  ls_destination = lc_fullpath.
  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      key         = lo_objdata
      destination = ls_destination
    IMPORTING
      rc          = li_rc.
  IF li_rc NE 0.
    MESSAGE e001(zpp001) WITH c_export_filename_xls.
  ENDIF.
ENDFORM.                    "download_xls_template

*&---------------------------------------------------------------------*
*&      Form  open_excel
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM open_excel.

CREATE OBJECT excel_obj 'excel.APPLICATION'.
  IF sy-subrc NE 0.
    MESSAGE 'EXCEL创建错误' TYPE 'S' DISPLAY LIKE 'E'.
    STOP.
  ENDIF.
  CALL METHOD OF excel_obj 'WORKBOOKS' = book_obj.
  SET PROPERTY OF excel_obj 'VISIBLE' = 1.
  SET PROPERTY OF excel_obj 'SheetsInNewWorkbook' = 1.

*  打开excel文件 , (新建使用:CALL METHOD OF book_obj 'Add'   = sheet_obj)
  CALL METHOD OF  book_obj 'Open'   = sheet_obj
            EXPORTING  #1       = ls_destination.
  CALL METHOD OF  sheet_obj 'ACTIVATE'.
  FREE OBJECT sheet_obj.  "OK
ENDFORM.                    "open_excel

*&---------------------------------------------------------------------*
*&      Form  write_excel
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM write_excel.
  DATA: it_spfli LIKE spfli OCCURS 10 WITH HEADER LINE.
  DATA: h TYPE i. "行号
*取数据
  SELECT * FROM spfli INTO TABLE it_spfli UP TO 10 ROWS.
* 输出Excel表头,自定义格式的列等
  PERFORM fill_cell USING 1 1 1 'Flug'(001).
  PERFORM fill_cell USING 1 2 1 'Nr'(002).
  PERFORM fill_cell USING 1 3 1 'Von'(003).
  PERFORM fill_cell USING 1 4 1 'Nach'(004).
  PERFORM fill_cell USING 1 5 1 'Zeit'(005).
* 复制数据到Excel,针对固定格式
  LOOP AT it_spfli.
    h = sy-tabix + 1.
    PERFORM fill_cell USING h 1 0 it_spfli-carrid.
    PERFORM fill_cell USING h 2 0 it_spfli-connid.
    PERFORM fill_cell USING h 3 0 it_spfli-cityfrom.
    PERFORM fill_cell USING h 4 0 it_spfli-cityto.
    PERFORM fill_cell USING h 5 0 it_spfli-deptime.
  ENDLOOP.
  FREE OBJECT cell_obj.
ENDFORM.                    "write_excel

*&---------------------------------------------------------------------*
*&      Form  FILL_CELL
*&---------------------------------------------------------------------*
*   row:  行号,
*   col:  列号,
*   bold: 字体是否加粗,0,否,1是.
*   val:  填充值
*----------------------------------------------------------------------*
FORM fill_cell  USING row col bold val.
  CALL METHOD OF  excel_obj 'CELLS'   = cell_obj
    EXPORTING  #1        = row  #2        = col.
  SET PROPERTY OF cell_obj 'VALUE' = val.
  FREE OBJECT cell_obj.
ENDFORM.                    "FILL_CELL

效果图:

三步搞定ABAP DOI操作EXCEL相关推荐

  1. android 图片墙拼贴,三步搞定 用APP打造图片文字拼贴效果

    相信大家一定见过一种文字拼贴效果的图片,许多大小不一.字体不同.颜色各异的文字拼合出一幅完整的画面.如果你曾经也想自己制作这么一张高端大气上档次的独特图片,却苦于自己的PS水平不到家,那么一定不要错过 ...

  2. linux 无法定位程序,三步搞定无法定位程序输入点 于动态链接库上

    三步搞定无法定位程序输入点 于动态链接库上 发布时间:2018-09-17 09:24 来源:互联网 当前栏目:电脑教程 上网的时候突然咚的一声弹出一个错误提示框,上边写着 iexplore.exe ...

  3. Flash Builder4.7极其简单破解方法-三步搞定(亲测)

    资讯类型: 转载 来源页面: http://weibo.com/2101024913/yvmR0D9Df 资讯原标题: 资讯原作者: 丿卓越丶星辰 翻译词数: 词 我的评论: 对这篇文你有啥看法,跟贴 ...

  4. Flash Builder4.7极其简单破解方法-三步搞定

    Flash Builder4.7极其简单破解方法-三步搞定(亲测) 原方法适用于4.6版本,同样方法4.7完美破解,不敢独享 具体步骤如下: 1.到Adobe官网下载FlashBuilder 4.6, ...

  5. 漂亮的PPT模板:三步搞定年终报告

    漂亮的PPT模板:三步搞定年终报告 2013年年底悄然而至,有一个不得不做的难题,那就是如何做好年终报告?有没有想要吐槽的欲望,做完前要熬夜,做完后还被折磨.你是不是再也不想做PPT ,再也不会爱它了 ...

  6. caj文件怎么转换成pdf格式?三步搞定

    当我们需要查阅一些文献资料时,往往会遇到CAJ文件格式的问题.这种格式需要使用专业的阅读工具才能打开,让我们的阅读体验变得十分不便.为了解决这个问题,我们可以将CAJ文件转换成PDF文件格式.这样,无 ...

  7. pr cpu100%_打工度假签证拿PR三步搞定!高薪,稳定工作,分分钟成为人生赢家!...

    国内苦苦工作多年的996上班族, 想要换个新环境,丰富人生经历? 完全可以! 顺利拿到打工度假签 来澳洲打工就结束了嘛? 这只是第一步! 合法高薪工作之余, 你还有机会移民澳洲! 符合以下条件的 打工 ...

  8. excel表中怎么插入visio_快速制作组织架构图,还在用Visio就out了,Excel简单三步搞定...

    工作中相信绝大多数人都见过一种图表类型,那就是组织架构图.组织架构图经常用于企业内部部门结构.人员编制分工的展示.通过组织架构图,我们能够清晰的查看到各部门人员结构.业务等情况. 如上图所示,我们需要 ...

  9. NewBing国内成功申请操作教程(三步搞定)

    前言 需要使用魔法,没有魔法的朋友请移步 操作 第一步:申请微软账号 打开魔法,挂日本节点 申请outlook邮箱,国家选择日本 使用该账户登录 第二步:登录账号,进入skype在线网站 进入www. ...

最新文章

  1. 吴恩达机器学习笔记31-梯度检验(Gradient Checking)
  2. Touch Event
  3. Matplotlib 中文用户指南 7.2 Python shell 中使用 Matplotlib
  4. wxWidgets:wxColour类用法
  5. 分类与监督学习,朴素贝叶斯分类算法
  6. Maven 项目创建 找不到web.xml
  7. C++中如何读取一个数的位数_求1000以内的水仙花数
  8. 如何用控制台启动一个wcf服务
  9. oppoR17手机计算机的隐藏功能,OPPO R17 Pro隐藏了很多你不知道的黑科技,让你高效使用手机...
  10. chrome浏览器安装和使用
  11. 使用java的姿势完善【年、月、周】个人工作量总结
  12. fso 拒绝访问_CTBS问题及解决.docx
  13. 压摆率//电源抑制比//共模抑制比//直流增益、带宽和相位裕度//静态功耗和直流工作点
  14. 基于QtGUI的宠物小精灵对战游戏设计
  15. Mac系统 - 升级node版本
  16. python求1到100偶数和_python 求1-100之间的奇数或者偶数之和的实例
  17. aliases节点分析
  18. 【渝粤题库】陕西师范大学292021 初级宏观经济学 作业(高起专)
  19. 讯飞语音转写php版demo
  20. 谷歌:科技让世界更美好

热门文章

  1. java 单线程 并发_单线程_Java高并发专题系列_Java视频-51CTO学院
  2. 阿里云企业邮箱哪个代理商好
  3. python商业数据分析课程设计_商务数据分析实验室
  4. CG-62 压电式雨量传感器 工作原理 使用安装环境 高精度
  5. Android Studio真机测试
  6. django外键-left join
  7. 会编程的都来玩玩这个游戏吧,看看你的编程水平.
  8. 定时监控Ubuntu系统HDMI热插拔进行锁屏操作
  9. “九型人格”-你的团队用了吗
  10. 第21章,DNS服务