使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Office2003實現PDF檔案轉Word文件(轉)
- 運用VC或Java對Office進行程式設計操作 (轉)Java行程程式設計
- 針對Excel表格檔案操作的程式設計實現 (轉)Excel程式設計
- Word文件如何實現單頁橫向設定
- SAP ABAP操作Office Excel的開源專案abap2xlsxExcel
- WebOffice線上編微軟Offfice,並以二進位制流的形式開啟Word文件Web微軟
- 壓縮Word,一鍵實現Word文件壓縮
- go用unioffice轉換word文件為pdfGo
- 如何用猿大師辦公助手實現多人同時線上編輯Office Word文件?
- linux下安裝 openoffice 實現 office文件轉 pdfLinux
- 使用純粹的ABAP位操作實現兩個整數相加
- 合併具有文字框的Word文件:VBA程式碼批次操作
- SAP ABAP OData 服務的 $count 操作實現
- office 2003 excel插入word文件小記Excel
- Excelize - Golang 操作 Office Excel 文件類庫ExcelizeGolang
- FTP方式實現BS下的WORD操作 (轉)FTP
- 一些通過SAP ABAP程式碼審查得出的ABAP程式設計最佳實踐程式設計
- Office驚現零時漏洞黑客可利用Word文件安裝惡意軟體黑客
- 實用的Word文件翻譯方法分享,讓Word文件快速翻譯
- sap abap螢幕程式設計中使用的table 和call子程式的程式設計
- Java的Covariance設計原理和SAP ABAP的模擬實現Java
- SAP Restful ABAP Programming 程式設計模型的 Action 實現和雲端除錯介紹REST程式設計模型除錯
- nodejs實現一個word文件解析器NodeJS
- 快速實現Word文件中更改單引號教程
- python-docx操作word文件詳解Python
- SAP ABAP 系統同微軟 Office 套件進行 Desktop Integration 的工作原理微軟套件
- Word文件字數實時動態統計(轉)
- python word 應用,設定 word 文件的內容格式Python
- word文件行距怎麼設定 調整word行距的方法
- C#操作Microsoft.Office.Interop.Word類庫完整例子C#ROS
- SAP ABAP 平臺新的程式設計模型程式設計模型
- Word2000/XP中內部COM外掛的程式設計實現 (轉)程式設計
- 國產linux系統(銀河麒麟,統信uos)使用 PageOffice 國產版實現Office文件線上預覽Linux
- 使用ABAP操作Excel的幾種方法Excel
- 【第三方對接】使用 PageOffice 實現線上 Office 整合到 Spring 專案Spring
- Office2000下內部COM外掛的程式設計實現(之二) (轉)程式設計
- ABAP對字元的一些基礎操作字元
- 請問可以使用jacob操作WORD文件的頁首頁尾嗎?謝謝!