SAP ABAP里提供了一个标准的类CL_DOCX_DOCUMENT,提供了本地以".docx"结尾的微软Office word文档的读和写操作。
本文介绍了ABAP类CL_DOCX_DOCUMENT的简单用法。
Office OpenXML
从微软 Office2007开始, 当我们新建一个word文档时,其扩展名从“.doc"变为了".docx",后者是基上遵循了一个开源的规范:Office openXML格式。
例如下图,我创建了一个最简单的word文档,包含了一个Header 区域,一个由三行彩色文字组成的段落,还有一张图片。
我们把这个文档保存到本地,将其扩展名从.docx改成.zip, 然后双击,就可以用解压软件比如winrar打开。
于是发现这一个最简单的word文档实际上由如此多的xml和文件夹构成。
使用CL_DOCX_DOCUMENT读取word文件内容
示例代码如下:
DATA: lv_content TYPE xstring,
lo_document TYPE REF TO cl_docx_document.
PERFORM get_doc_binary USING 'C:Usersi042416Desktop est.docx' CHANGING lv_content.
lo_document = cl_docx_document=>load_document( lv_content ).
CHECK lo_document IS NOT INITIAL.
DATA(lo_core_part) = lo_document->get_corepropertiespart( ).
DATA(lv_core_data) = lo_core_part->get_data( ).
DATA(lo_main_part) = lo_document->get_maindocumentpart( ).
DATA(lo_image_parts) = lo_main_part->get_imageparts( ).
DATA(lv_image_count) = lo_image_parts->get_count( ).
DO lv_image_count TIMES.
DATA(lo_image_part) = lo_image_parts->get_part( sy-index - 1 ).
DATA(lv_image_data) = lo_image_part->get_data( ).
ENDDO.
DATA(lo_header_parts) = lo_main_part->get_headerparts( ).
DATA(lv_header_count) = lo_header_parts->get_count( ).
DO lv_header_count TIMES.
DATA(lo_header_part) = lo_header_parts->get_part( sy-index - 1 ).
DATA(lv_header_data) = lo_header_part->get_data( ).
ENDDO.
上述代码的简要说明
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返回。
同样的思路,微软Office 2007之后版本的其他格式的办公文档,比如Powerpoint和Excel等,均遵循Office OpenXML标准,因此将其后缀名改为.zip后同样可以看到大量xml和文件夹。ABAP也同样提供了标准代码来读写这些Office文档,例如CL_PPTX_DOCUMENT, CL_XLSX_DOCUMENT等等,如下图所示。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
ABAP4编程宝典中文版,是一份详细深入的教程,涵盖了ABAP/4语言的基础到高级应用,旨在帮助开发者全面掌握ABAP编程技术。ABAP(Advanced Business Application Programming)是SAP公司的一种编程语言,主要用于开发...
SAP ABAP编程实战基础的知识点涵盖了SAP系统中ABAP编程的核心概念、基本操作和实用技巧。以下是对该文件内容知识点的详尽解读。 1. ABAP简介: ABAP(Advanced Business Application Programming)是一种专门为SAP...
通过以上章节的学习,读者可以逐步建立起对SAP ABAP编程的基本认识,掌握开发SAP应用程序的核心技能。无论是初学者还是有经验的开发者,都能从中获取实用的知识和实战经验,提升在SAP环境下的开发能力。
### SAP ABAP编程手册核心知识点解析 #### 一、ABAP/4介绍 **ABAP/4(Advanced Business Application Programming)**是SAP R/3系统中唯一且核心的开发工具,属于第四代编程语言(4GL)。其语法设计借鉴了诸如...
学习如何声明、填充和操作内部表是ABAP编程的重要部分。 4. **选择屏幕和用户输入**:SAP程序通常与用户交互,因此理解如何定义选择屏幕来接收用户输入至关重要。这涉及到使用SCREEN和INPUT语句。 5. **数据库交互...
创建Excel是ABAP编程实现Excel操作的基础,通过使用ABAP的OLE(Object Linking and Embedding)机制,可以创建一个新的Excel文件。OLE是一种OLE自动化机制,允许ABAP程序与其他应用程序进行交互操作。在ABAP中,可以...
7. ABAP类与对象:理解面向对象编程的概念,如类、对象、继承、多态和封装,并学习如何在ABAP中实现。 8. ABAP增强与自定义开发:了解如何对标准SAP功能进行扩展,满足企业的个性化需求。 9. ABAP与Web服务集成:...
12. **ABAP文档和版本控制**:版本控制和文档对于团队协作至关重要。这部分可能涉及如何管理源代码和版本,以及如何编写清晰的注释。 13. **性能优化**:最后,手册可能会讨论如何通过优化ABAP代码来提高系统性能,...
消息类是指在 SAP ABAP 编程中使用的消息机制。包括: * 消息的定义:消息的定义应该遵循一定的格式和约定,以便于消息的处理和显示。 * 消息的处理:消息的处理应该遵循一定的约定,以便于错误的捕获和处理。 SAP...
01_ABAP开发环境和总体介绍.pdf 02_创建HELLO WORLD程序.pdf 03_ABAP语法示例.pdf 04_数据字典和数据表的读取.pdf 05_标准列表和选择屏幕.pdf 06_实战屏幕SCREEN设计.pdf ...14_从实例学SAP ABAP编程13-19章.pdf
同时,ABAP 屏幕编程还可以与其他 ABAP 语言集成,实现复杂的业务逻辑。 第二部分:ABAP 屏幕编程的组成部分 ABAP 屏幕编程由以下几个组成部分: * SCREEN:SCREEN 是 ABAP 屏幕编程的基本组成部分,用于定义屏幕...
ABAP/4编程手册概述了SAP/R3系统中用于开发的高级业务应用编程语言,它是一种第四代编程语言(4GL),与Visual Basic和JAVA有相似之处,但语法上与C、PASCAL等传统第三代语言有所不同。在ABAP/4中,程序结构主要分为...
SAP ABAP编程是SAP系统中的核心编程语言,它被广泛用于开发企业级的应用程序。本实战教程将带你深入理解SAP ABAP的基础概念、关键语法和实用技巧,通过实例学习来提升你的编程能力。 一、SAP ABAP概述 SAP ABAP...
《从实例学SAP ABAP编程》是一本深入浅出的教程,涵盖了SAP ABAP编程的19个关键章节,旨在帮助读者掌握这一企业级应用开发语言的基础和高级技巧。SAP ABAP(Advanced Business Application Programming)是SAP公司...
- 实战案例:通过实际项目练习,加深对ABAP编程的理解和应用。 - Debugger工具:熟悉SAP ABAP调试器的使用,有效地定位和修复代码问题。 通过以上这些关键知识点的学习和实践,开发者可以全面掌握SAP ABAP编程,...
这是实战SAP程序开发_从实例学SAP_ABAP编程的清晰版本
ABAP/4编程详解 ABAP(Advanced Business Application Programming)是一种高级业务应用编程语言,主要用于开发SAP R/3系统中的应用程序。它被定义为第四代编程语言(4GL),其语法与Visual Basic和JAVA有相似之处...
由于给定的文件信息中只提供了标题、描述和部分内容,且部分内容并没有涉及到实际的技术知识点,而是关于文档阅读器的推荐信息,因此根据您的要求,我将直接依据标题“从实例学SAP ABAP编程(1-19章)”生成与SAP ABAP...