使用ABAP編程實現對微軟Office Word文檔的操做

SAP ABAP裏提供了一個標準的類CL_DOCX_DOCUMENT,提供了本地以".docx"結尾的微軟Office word文檔的讀和寫操做。字體

本文介紹了ABAP類CL_DOCX_DOCUMENT的簡單用法。spa

Office OpenXML

從微軟 Office2007開始, 當咱們新建一個word文檔時,其擴展名從「.doc"變爲了".docx",後者是基上遵循了一個開源的規範:Office openXML格式。code

例以下圖,我建立了一個最簡單的word文檔,包含了一個Header 區域,一個由三行彩色文字組成的段落,還有一張圖片。xml

咱們把這個文檔保存到本地,將其擴展名從.docx改爲.zip, 而後雙擊,就能夠用解壓軟件好比winrar打開。對象

因而發現這一個最簡單的word文檔實際上由如此多的xml和文件夾構成。圖片

使用CL_DOCX_DOCUMENT讀取word文件內容

示例代碼以下:ip

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,獲得一個文檔對象引用,而後就能夠藉助該對象引用調用各類方法了。rem

2. word文檔的建立者,建立時間,最後修改時間等信息都存儲在所謂的「Core property part」內,能夠經過方法lo_document->get_corepropertiespart得到"Core property part"的引用,再使用該引用調用方法get_data得到實際內容。文檔

下圖是get_data返回的內容的一個例子,能夠看出是xml格式。get

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的原創技術文章,請關注公衆號"汪子熙"或者掃描下面二維碼:

相關文章
相關標籤/搜索