20.7. OLE
CREATE OBJECT obj_name 'app'."創建APP應用類的一個對象obj_name實例
SET PROPERTY OF obj_name 'XXX' = f ."設置對象OBJ_NAME屬性xxx爲值f
GET PROPERTY OF obj_name 'xxx' = f ."將obj_name的屬性xxx的值獲取賦給f
CALL METHOD OF
obj_name
'xxx' = f "由f來接收返回值
EXPORTING
#1 = f1. "調用Obj_name的方法xxx 傳入參數f1…fn
FREE OBJECT obj_name. "釋放obj_name.
*定義OLE變量
DATA:EXCEL TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT,
SHEET TYPE OLE2_OBJECT,
CELL TYPE OLE2_OBJECT.
創建excel對象:
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
SET PROPERTY OF EXCEL 'VISIBLE' = 1."使excel可見
SET PROPERTY OF EXCEL 'SHEETSINNEWWORKBOOK' = 1."設置 Microsoft Excel 軟件打開時,自動插入到新工作簿中的工作表數目(即初始sheet數目,默認名字依次爲 Sheet1、Sheet2.....)
CALL METHOD OF EXCEL 'WORKBOOKS' = WORKBOOK.
"由於Workbooks同時爲屬性,所以可以使用下面語句代替上面語句
*GET PROPERTY OF EXCEL 'Workbooks' = WORKBOOK .
CALL METHOD OF WORKBOOK 'ADD'.
CALL METHOD OF WORKBOOK 'OPEN'EXPORTING #1 = 'c:\1.xlsx'."開文件
添加sheet:
CALL METHOD OF EXCEL 'sheets' = SHEET.
CALL METHOD OF SHEET 'Add'.
SET PROPERTY OF SHEET 'Name' = 'aaa'."sheet重命名
切換sheet:
CALL METHOD OF EXCEL 'Worksheets' = SHEET EXPORTING #1 = 'sheet3'.
CALL METHOD OF SHEET 'Activate'.
CaLL METHOD OF EXCEL 'CELLS' = CELL EXPORTING #1 = 2 #2 = 2.
SET PROPERTY OF CELL 'value' = xxxx.
執行宏:
CALL METHOD OF EXCEL 'RUN' EXPORTING #1 = 'ZMACRO2'.
保存和退出:
GET PROPERTY OF EXCEL 'ACTIVESHEET' = SHEET."激活工作簿
GET PROPERTY OF EXCEL 'ACTIVEWORKBOOK' = WORKBOOK."激活工作區
CALL METHOD OF WORKBOOK 'SAVEAS'EXPORTING #1 = 'c:\1.xls' #2 = 1.
CALL METHOD OF WORKBOOK 'CLOSE'. "關閉工作區
CALL METHOD OF EXCEL 'QUIT'."退出excel
釋放資源:
FREE OBJECT SHEET.
FREE OBJECT WORKBOOK.
FREE OBJECT EXCEL.
20.7.1. 導出Exel文件多種方式
FM函數 SAP_CONVERT_TO_XLS_FORMAT:
優點是快速,簡單;缺點就是不能控制格式,導出的數據看起來不夠美觀,不能使用公式,宏等
OLE:
這個方法使用對象OLE2_OBJECT,模擬手工來填寫EXCEL的內容,所以基本上可以實現Excel的絕大部分功能,諸如特殊格式、函數、宏、圖片等等
優點是功能強大,能做到用戶指定的格式;缺點是複雜,速度慢。
OLE + Excel模板:
這個方法是在純OLE的基礎上增加使用Excel模板,原理是通過在Excel模板裏面設定格式,公式等已知的內容,然後使用OLE去填充其它數據
優點是比純OLE速度要快;缺點還是速度慢,雖然比第二種方法有所提高,但是如果數據量比較大的時候,比如超過1000行,速度方面還是不盡如人意
OLE + Excel模板 + TXT:
這個方法在方法3的基礎上增加使用TXT文本文件,原理是先將數據根據按照Excel行列準備好,導出到TXT文本文件中,然後在Excel模板中使用宏打開文本文件進行填充
優點是功能強,速度快;缺點是實現起來較爲複雜,且需要懂VBA