乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel使用教程-使用ABAP操作Excel的几种方法

excel使用教程-使用ABAP操作Excel的几种方法

作者:乔山办公网日期:

返回目录:excel表格制作

这篇文章本来不在我计划之内,因为最近一个朋友微信上问到我这个问题,但我平时在SAP研究院工作中从没遇到过需要用ABAP操作Excel的需求,因此也没有太多技术实现细节可以分享给大家,只能泛泛写一些。




用ABAP操作Excel这个需求算是比较常见,所以Jerry希望这篇文章能起到抛砖引玉的效果。在这个话题上有多年工作经验的朋友们,欢迎留言,指出Jerry文章中不足或者错误之处。




在SAPGUI里根据关键字OLE搜索,能找到通过ABAP操作Excel的一种办法:






这段文档说的比较清楚,微软的Word和Excel等Office应用,提供了一种所谓automation的接口,暴露的公有类的方法和属性可以被其他应用消费。




作为ABAP应用开发人员,我们通过调用OLE对象的方法CALL METHOD, GET PROPERTY,SET PROPERTY等来访问微软Word和Excel的automation接口,代码看起来像这样:






上面这个函数RH_START_EXCEL_DATA_OLE调用微软Excel的automation接口,新建一个Excel workbook,然后准备把ABAP内表里的数据写到Excel里。




你也许会问,我咋知道Excel里有哪些公有的类和方法可以被ABAP调用呢?


在Excel里点击右键,选择View Code:






打开Microsoft Visual Basic Object Brower,所有可用的类和方法都列在这里了,上面ABAP代码第218行调用的workbook的open方法在列表里也能找到。






这个解决方案只在windows平台有效,并且需要运行SAPGUI的Presentation Server上安装有微软的Excel应用。




我们采用OLE的方式操作Excel时,打开Windows操作系统的任务管理器,会发现一个以/automation -Embedding参数启动的Excel进程。






这里的-Embedding参数,来自OLE的全称:Object Linking and Embedding里的一部分,OLE是微软的一项非常古老的技术了。






微软和SAP两位大佬,Bill Gates和Hasso Plattner 1993年的照片:






关于OLE,Jerry知道的就只有这么一点了,在SAP研究院里如今我们还是会和微软的技术打交道,比如微软的Azure.






如果Jerry没记错的话, 微软Office从2007版本开始, 采用新的支持Office Open XML标准的格式来管理Excel和Word等文件。




Jerry 2014年在SAP成都研究院CRM开发团队负责CRM Document Builder这个模块,当时编写过使用ABAP操作Word文档的代码。




以Word为例,下图是我创建了一个最简单的Word文档,包含了一个Header区域,一个由三行彩色文字组成的段落,还有一张图片。






我们把这个Word文档的扩展名从.docx改成.zip, 然后双击,就可以用解压软件比如winrar打开。




于是发现这一个最简单的按照Office Open XML协议实现的Word文档,实际上由如此多的xml和文件夹构成。






使用SAP标准的类CL_DOCX_DOCUMENT读取Word文件内容:






上述代码的简要说明:




(1) 将word文档的二进制内容传入方法cl_docx_document=>load_document,得到一个文档对象引用,然后就可以借助该对象引用调用各种方法了。




(2) word文档的创建者,创建时间,最后修改时间等信息都存储在所谓的“Core property part”内,可以通过方法lo_document->get_corepropertiespart获得"Core property part"的引用,再使用该引用调用方法get_data获得实际内容。




下图是get_data返回的内容的一个例子,可以看出是xml格式。






(3) 现在我们准备读取Word文档的正文了。使用方法lo_document->get_maindocumentpart得到Word文档正文,文字的字体类型,颜色也包含在内。如下图所示:






(4) Word文档里插入的图片的二进制内容当然也是可以读取出来的。使用方法:lo_image_parts->get_part返回。




Excel的例子我没有动手做过,不过原理类似,大家可以用开发包S_OOXML_CORE里的CL_XLSX_DOCUMENT来操作格式为xlsx的Excel文档。






除此之外,还有一个著名的开源项目,abap2xlsx, Jerry没有试过,感兴趣的朋友可以试试。


https://github.com/sapmentors/abap2xlsx






最后,大家在SE24里使用关键字XSLX以及SE38里搜索_OLE,






可以从搜索列表里选一些点进去,参考SAP标准程序是如何操作Excel文档的。




希望这些内容对大家有用,感谢阅读。




更多阅读




  • Jerry的ABAP, Java和JavaScript乱炖
  • ABAP开发人员未来应该学些什么
  • Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现
  • Jerry的ABAP原创技术文章合集
  • 300行ABAP代码实现一个最简单的区块链原型
  • 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数
  • 在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务
  • ABAP vs Java, 蛙泳 vs 自由泳
  • 聊聊C语言和ABAP
  • 动手使用ABAP Channel开发一些小工具,提升日常工作效率
  • 我用ABAP做过的那些无聊的事情
  • 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
  • 使用Visual Studio Code编写和激活ABAP代码
  • 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
  • 在SAP云平台ABAP编程环境上编写第一段ABAP程序
  • SAP官方发布的ABAP编程规范
  • ABAP Code Inspector那些隐藏的功能,您都知道吗?
  • 还在用ABAP进行SAP产品的二次开发?来了解下这种全新的二次开发理念吧
  • ABAP Netweaver体内的那些寄生式编程语言
  • 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
  • 云端的ABAP Restful服务开发
  • 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务
  • 使用abapGit在ABAP On-Premises系统和SAP云平台ABAP环境之间进行代码传输
  • 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
  • Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现
  • Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试
  • SAP云平台上的ABAP编程环境里如何消费第三方服务
  • ABAP开发者上云的时候到了 - 现在大家可以免费使用SAP云平台ABAP环境的试用版了
  • 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景
  • SAP云平台里的三叉戟应用
  • 如何基于Restful ABAP Programming模型开发并部署一个支持增删改查的Fiori应用
  • SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?
  • 有哪些ABAP关键字和语法,到了ABAP云环境上就没办法用了?
  • ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
  • 利用ABAP 740的新关键字REDUCE完成一个实际工作任务
  • 一段让人瑟瑟发抖的ABAP代码
  • 昨日万圣节ABAP怪兽级代码谜团,公布答案啦
  • 介绍一种在ABAP内核态进行内表高效拷贝的方法
  • 使用SAP Cloud Application Programming模型开发OData的一个实际例子
  • 当ABAP遇见普罗米修斯
  • 使用ABAP绘制可伸缩矢量图
  • ABAP开发环境语法高亮的那些事儿
  • SAP错误消息调试之七种武器:让所有的错误消息都能被定位
本文标签:excel使用教程(17)

相关阅读

关键词不能为空

ppt怎么做_excel表格制作_office365_word文档_365办公网