使用ABAP程式設計實現對微軟Office Word文件的操作
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的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2200194/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用手機微信怎麼編輯word文件 手機編輯文件的基本操作
- 壓縮Word,一鍵實現Word文件壓縮
- SAP ABAP 系統同微軟 Office 套件進行 Desktop Integration 的工作原理微軟套件
- 合併具有文字框的Word文件:VBA程式碼批次操作
- office文件恢復軟體(magic office recovery)
- 使用純粹的ABAP位操作實現兩個整數相加
- Word 2021 for Mac(office辦公軟體)Mac
- 如何用猿大師辦公助手實現多人同時線上編輯Office Word文件?
- SAP ABAP OData 服務的 $count 操作實現
- 一些通過SAP ABAP程式碼審查得出的ABAP程式設計最佳實踐程式設計
- python-docx操作word文件詳解Python
- Mac Office 2019 16.39 微軟專為Mac打造的Office軟體Mac微軟
- 實用的Word文件翻譯方法分享,讓Word文件快速翻譯
- nodejs實現一個word文件解析器NodeJS
- Java的Covariance設計原理和SAP ABAP的模擬實現Java
- linux下安裝 openoffice 實現 office文件轉 pdfLinux
- python word 應用,設定 word 文件的內容格式Python
- 不要隨便開啟Office文件,微軟又有高危0day漏洞微軟
- SAP Restful ABAP Programming 程式設計模型的 Action 實現和雲端除錯介紹REST程式設計模型除錯
- 微信小程式使用元件實現移動端軟鍵盤微信小程式元件
- word文件行距怎麼設定 調整word行距的方法
- C#操作Microsoft.Office.Interop.Word類庫完整例子C#ROS
- SAP ABAP 平臺新的程式設計模型程式設計模型
- Python實現微博輿情分析的設計與實現Python
- python TK庫 統計word文件單詞詞頻程式 UI選擇文件PythonUI
- 使用ABAP操作Excel的幾種方法Excel
- 使用Java實現多執行緒程式設計Java執行緒程式設計
- 軟體概要設計文件(終)
- 微軟:正式釋出針對 .NET Core的 Winform 設計器微軟ORM
- Spartacus 使用 Command 設計模式之後對以前 Connector 實現的重用設計模式
- 硬核觀察 #696 微軟仍計劃預設遮蔽下載的 Office 檔案中的宏微軟
- SAP官方釋出的ABAP程式設計規範程式設計
- ABAP 程式語言中 Class(類)的設計原理剖析
- SAP ABAP SM50的另類用途 - ABAP工作程式對資料庫表讀取操作的檢測資料庫
- Java 併發程式設計:ThreadLocal 的使用及其原始碼實現Java程式設計thread原始碼
- 前端使用 Konva 實現視覺化設計器(16)- 旋轉對齊、觸控板操作的最佳化前端視覺化
- aop面向切面程式設計的實現程式設計
- ABAP初學者如何系統地學習ABAP程式設計?程式設計