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的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rocktmq 消息延时清空_Rocke
- 下一篇: 锂电池放空后充不进电_锂电池过度放电后充