officeopenxml excelpackage 需要安装excel嘛_使用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错误消息调试之七种武器:让所有的错误消息都能被定位
officeopenxml excelpackage 需要安装excel嘛_使用ABAP操作Excel的几种方法相关推荐
- 提高excel生产力_设计师:提高生产力的7种方法
随着对设计的需求每天都在增加,在那里争夺相同工作的设计师人数也越来越多. 仅仅成为一个优秀的设计师已经不够了 . 客户正在寻找不仅能超越他们的期望,而且能在创纪录的时间内做到这一点的设计师. 这是在更 ...
- ai中如何插入签名_技巧不求人167期 Excel如何打印到1页纸的2种方法 Excel如何插入手写签名...
嗨,大家好,上期我们介绍了Excel如何制作漂亮的文件盒侧标签.今天我们继续分享,在日常excel编辑过程中,常常会遇到因为数列或者行数过多导致内容不全,根本就不能打印在一张纸上面,假如分开打印到两张 ...
- 使用ABAP操作Excel的几种方法
这篇文章本来不在我计划之内,因为最近一个朋友微信上问到我这个问题,但我平时在SAP研究院工作中从没遇到过需要用ABAP操作Excel的需求,因此也没有太多技术实现细节可以分享给大家,只能泛泛写一些. ...
- html转word并保持格式不变,表格从Word转Excel想保持格式不变?用这两种方法,保你轻松搞定...
相信在职场办公,大家或多或少都有遇见过这样的问题,需要把Word中的表格转移到Excel中,很多人第一时间就复制黏贴然后再重新调整格式,一两个表格还好说,如果是批量的你怕是要累死了. 表格从Word转 ...
- python中excel制作成绩报表_python制作简单excel统计报表2之操作excel的模块openpyxl简单用法...
python制作简单excel统计报表2之操作excel的模块openpyxl简单用法 # coding=utf-8 from openpyxl import Workbook, load_workb ...
- 用函数统计各分数段人数c语言,如何使用Excel函数统计各分数段的人数(五种方法)...
如何使用Excel函数统计各分数段的人数(五种方法),对老师很有用哦. Excel教程:妙用Excel五个函数统计学生期末考试分数段 考试结束,老师们都要对学生的考试成绩进行分析.各分数段人数的统计是 ...
- python替换excel指定内容_Python脚本操作Excel实现批量替换功能
大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换. 使用的工具 Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet, ...
- excel日历弄到html,Excel中进行添加日历控件的两种方法
有时我们在运用Excel表格的时候会运用到日历的控件,可是小伙伴们却不知道在哪里添加.那么我们来看一下,它到底躲藏在哪里,又该怎么添加呢?今天,学习啦小编就教大家在Excel中进行添加日历控件的两种方 ...
- Apache POI和JXL(Java Excel)的基本使用——操作excel
一.简介 开发中经常会涉及到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel Apache P ...
最新文章
- 134人!国家重点研发计划“生物大分子与微生物组”重点专项会评专家名单
- 再谈Windows Service - 一个简单的自我例子和部署
- 拿下两个世界第一,阿里人机对话模型成人工智能国际通用标准
- Java写入大字符串到oracle数据库_java程序如何提高oracle百万级数据的insert效率
- 如何为ASP.NET Core设置客户端IP白名单验证
- 吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代
- onkeydown-onkeypress-onkeyup
- UltimateAndroid快速开发框架教程
- 微软商业智能与数据挖掘精英版培训大纲(2008-09-09)
- 通过eclipse对apk加密混淆的方法
- a标签下载pdf文件
- 《计算机网络》学习——第3章 数据链路层
- sudo 授权需谨慎,否则亲人两行泪!6 个超实用使用技巧
- Xunity.autotranslator机翻unity引擎的游戏
- 程序员最喜欢的4个编辑器!码农出品,必属精品!
- 计算机桌面自动调转什么原因,电脑壁纸自动改变的解决方法-电脑自学网
- Mybati从持久层到大气层
- AE基础教程(5)——第5章 时间,快照命令
- java系统随机生成数据方式,一个比较全面的java随机数据生成工具包
- 编码器Atom使用指南
热门文章
- logback配置(与log4j对比)
- Linux进入单用户模式(passwd root修改密码)
- ReactiveNative学习之Diff算法
- [Django]网页中利用ajax实现批量导入数据功能
- Qt ObjectModel (from Qt doc)
- tf dense layer两种创建方式的对比和numpy实现
- fscokopen php,详解PHP fsockopen的使用方法
- 中国工科计算机专业,中国最受欢迎的4个工科专业,第1名有些意外,第3名副其实...
- 二十七、深入==与equals的区别(下篇)
- 六十八、SpringBoot连接MongoDB操作