精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用ABAP操作Excel的幾種方法
用ABAP操作Excel這個(gè)需求算是比較常見,所以Jerry希望這篇文章能起到拋磚引玉的效果。在這個(gè)話題上有多年工作經(jīng)驗(yàn)的朋友們,歡迎留言,指出Jerry文章中不足或者錯(cuò)誤之處。

在SAPGUI里根據(jù)關(guān)鍵字OLE搜索,能找到通過(guò)ABAP操作Excel的一種辦法:

這段文檔說(shuō)的比較清楚,微軟的Word和Excel等Office應(yīng)用,提供了一種所謂automation的接口,暴露的公有類的方法和屬性可以被其他應(yīng)用消費(fèi)。

作為ABAP應(yīng)用開發(fā)人員,我們通過(guò)調(diào)用OLE對(duì)象的方法CALL METHOD, GET PROPERTY,SET PROPERTY等來(lái)訪問(wèn)微軟Word和Excel的automation接口,代碼看起來(lái)像這樣:


上面這個(gè)函數(shù)RH_START_EXCEL_DATA_OLE調(diào)用微軟Excel的automation接口,新建一個(gè)Excel workbook,然后準(zhǔn)備把ABAP內(nèi)表里的數(shù)據(jù)寫到Excel里。

你也許會(huì)問(wèn),我咋知道Excel里有哪些公有的類和方法可以被ABAP調(diào)用呢?
在Excel里點(diǎn)擊右鍵,選擇View Code:


打開Microsoft Visual Basic Object Brower,所有可用的類和方法都列在這里了,上面ABAP代碼第218行調(diào)用的workbook的open方法在列表里也能找到。


這個(gè)解決方案只在windows平臺(tái)有效,并且需要運(yùn)行SAPGUI的Presentation Server上安裝有微軟的Excel應(yīng)用。

我們采用OLE的方式操作Excel時(shí),打開Windows操作系統(tǒng)的任務(wù)管理器,會(huì)發(fā)現(xiàn)一個(gè)以/automation -Embedding參數(shù)啟動(dòng)的Excel進(jìn)程。


這里的-Embedding參數(shù),來(lái)自O(shè)LE的全稱:Object Linking and Embedding里的一部分,OLE是微軟的一項(xiàng)非常古老的技術(shù)了。


微軟和SAP兩位大佬,Bill Gates和Hasso Plattner 1993年的照片:

關(guān)于OLE,Jerry知道的就只有這么一點(diǎn)了,在SAP研究院里如今我們還是會(huì)和微軟的技術(shù)打交道,比如微軟的Azure.


如果Jerry沒(méi)記錯(cuò)的話, 微軟Office從2007版本開始, 采用新的支持Office Open XML標(biāo)準(zhǔn)的格式來(lái)管理Excel和Word等文件。

Jerry 2014年在SAP成都研究院CRM開發(fā)團(tuán)隊(duì)負(fù)責(zé)CRM Document Builder這個(gè)模塊,當(dāng)時(shí)編寫過(guò)使用ABAP操作Word文檔的代碼。

以Word為例,下圖是我創(chuàng)建了一個(gè)最簡(jiǎn)單的Word文檔,包含了一個(gè)Header區(qū)域,一個(gè)由三行彩色文字組成的段落,還有一張圖片。


我們把這個(gè)Word文檔的擴(kuò)展名從.docx改成.zip, 然后雙擊,就可以用解壓軟件比如winrar打開。

于是發(fā)現(xiàn)這一個(gè)最簡(jiǎn)單的按照Office Open XML協(xié)議實(shí)現(xiàn)的Word文檔,實(shí)際上由如此多的xml和文件夾構(gòu)成。


使用SAP標(biāo)準(zhǔn)的類CL_DOCX_DOCUMENT讀取Word文件內(nèi)容:


上述代碼的簡(jiǎn)要說(shuō)明:

(1) 將word文檔的二進(jìn)制內(nèi)容傳入方法cl_docx_document=>load_document,得到一個(gè)文檔對(duì)象引用,然后就可以借助該對(duì)象引用調(diào)用各種方法了。

(2) word文檔的創(chuàng)建者,創(chuàng)建時(shí)間,最后修改時(shí)間等信息都存儲(chǔ)在所謂的“Core property part”內(nèi),可以通過(guò)方法lo_document->get_corepropertiespart獲得"Core property part"的引用,再使用該引用調(diào)用方法get_data獲得實(shí)際內(nèi)容。

下圖是get_data返回的內(nèi)容的一個(gè)例子,可以看出是xml格式。


(3) 現(xiàn)在我們準(zhǔn)備讀取Word文檔的正文了。使用方法lo_document->get_maindocumentpart得到Word文檔正文,文字的字體類型,顏色也包含在內(nèi)。如下圖所示:


(4) Word文檔里插入的圖片的二進(jìn)制內(nèi)容當(dāng)然也是可以讀取出來(lái)的。使用方法:lo_image_parts->get_part返回。

Excel的例子我沒(méi)有動(dòng)手做過(guò),不過(guò)原理類似,大家可以用開發(fā)包S_OOXML_CORE里的CL_XLSX_DOCUMENT來(lái)操作格式為xlsx的Excel文檔。


除此之外,還有一個(gè)著名的開源項(xiàng)目,abap2xlsx, Jerry沒(méi)有試過(guò),感興趣的朋友可以試試。
https://github.com/sapmentors/abap2xlsx


最后,大家在SE24里使用關(guān)鍵字XSLX以及SE38里搜索_OLE,


可以從搜索列表里選一些點(diǎn)進(jìn)去,參考SAP標(biāo)準(zhǔn)程序是如何操作Excel文檔的。
希望這些內(nèi)容對(duì)大家有用,感謝閱讀。

更多閱讀

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
高效辦公 >知識(shí)課堂
(親測(cè))Excel多開方法,多文件獨(dú)立窗口打開,同時(shí)顯示左右對(duì)比 - Excel、Word等 - 微軟Office 2010
Office 2003 打開 Office 2007 文件的補(bǔ)丁(docx,xlsx)
word321:xlsx文件轉(zhuǎn)換xls軟件和轉(zhuǎn)換方法
xlsx怎么轉(zhuǎn)換成word文檔
ChatGPT嵌入Office,以后做EXCEL動(dòng)動(dòng)嘴就行了!AI時(shí)代全面降臨
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 邯郸县| 阿拉善右旗| 伊通| 连江县| 五河县| 略阳县| 潍坊市| 布尔津县| 凌云县| 贞丰县| 左云县| 灌南县| 灌云县| 志丹县| 文登市| 会宁县| 资溪县| 双鸭山市| 合水县| 克拉玛依市| 巴青县| 定兴县| 丁青县| 湾仔区| 酉阳| 郓城县| 桑日县| 永新县| 明水县| 闻喜县| 温州市| 庄浪县| 鞍山市| 漠河县| 于都县| 富宁县| 海南省| 邵阳县| 武山县| 通渭县| 景德镇市|