ABAP 程序完成EXCEL文件的導入導出

(一)常用的OLE函數:

CALL METHOD , CALL OBJECT ,   FREE OBJECT , GET PROPERTY   , SET   PROPERTY.

設屬性:SET PROPERTY OF <對象><屬性> = <value>

取屬性:GET PROPERTY OF <對象><屬性> = 變量

調用方法:CALL METHOD OF <對象><METHOD><value>     EXPORTING #<PARA> = <VALUE>.

輸出可以是多個參數。

釋放對象是:FREE OBJECT<對象>.

(二)從excel讀入文件到abap程序

a: 使用函數將excel讀入abap內表

先要定義讀入excel 的內表,abap本身已定義格式

然後要有一個輸入文件名參數,改參數輸入要讀取的excel文件的所在路徑

再調用函數直接從已知文件名讀入內表

最後測試可以循環讀取內表並打印顯示出來

SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; }REPORT   YTEST67.
DATA:BEGIN OF IEXCEL OCCURS 0.
     INCLUDE STRUCTURE ALSMEX_TABLINE.
DATA:END OF IEXCEL.

PARAMETERS:FN1 LIKE RLGRAP-FILENAME MEMORY ID M01.

"CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  EXPORTING
     filename                       = FN1
     i_begin_col                    = 1
     i_begin_row                    = 1
     i_end_col                      = 100
     i_end_row                      = 100
  tables
     intern                         = IEXCEL
EXCEPTIONS
    INCONSISTENT_PARAMETERS        = 1
    UPLOAD_OLE                     = 2
   OTHERS                         = 3
           .
IF sy-subrc <> 0.
  WRITE: / '讀入文件錯誤!',FN1.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
  LOOP AT IEXCEL.
    WRITE IEXCEL-VALUE(20).
    AT END OF ROW.
      WRITE : /.
    ENDAT.
  ENDLOOP.
ENDIF.

b:直接從excel讀取

先要定義OLE變量,要有輸入文件名參數(同上)

再啓動excel 即要創建excel對象

SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; }REPORT   YTEST68.

INCLUDE OLE2INCL.
*定義OLE變量
DATA:EXCEL TYPE OLE2_OBJECT,
      SHEET TYPE OLE2_OBJECT,
      CELL TYPE OLE2_OBJECT,
      WORKBOOK TYPE OLE2_OBJECT.

DATA:VAL1(30TYPE C.
DATA: R1 TYPE I,
       R2 TYPE I.
*輸入文件名參數
PARAMETERS:FN1 LIKE RLGRAP-FILENAME MEMORY ID M01.

*啓動excel
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'."創建excel對象
*
CALL METHOD OF EXCEL 'WORKBOOKS' = WORKBOOK. "調用excel的方法
IF SY-SUBRC NE 0 .
  WRITE : / 'EXCEL 錯誤!'.
  LEAVE PROGRAM.
ENDIF.
*使excel 可視
SET PROPERTY OF EXCEL 'VISIBLE' = 1.
*EXCEL 文件打開
CALL METHOD OF WORKBOOK 'OPEN'  EXPORTING   #1 = FN1.

IF SY-SUBRC NE 0 .
  WRITE : / '處理錯誤!'.
  LEAVE PROGRAM.
ENDIF.
*第一頁
CALL METHOD OF EXCEL  'WORKSHEETS' = SHEET  EXPORTING   #1 = 1.
*讀取前10行10列
DO 10 TIMES.
  WRITE : / '行:',SY-INDEX.
   R1 = SY-INDEX.
  DO 10 TIMES.
     R2 = SY-INDEX.
*指定單元格,並讀取值屬性
    CALL METHOD OF EXCEL 'CELLS' = CELL  EXPORTING #1 = R1   #2 = R2.
    GET PROPERTY OF CELL 'VALUE' = VAL1.          "讀取excel文件中的內容是用get property of excel
                                                  "如果是寫入excel文件則用 set property of excel
    WRITE : VAL1.
  ENDDO.
ENDDO.

(三)將數據傳送到excel並保存

SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; }REPORT   YTEST69.

INCLUDE OLE2INCL.
*定義OLE變量
DATA:EXCEL TYPE OLE2_OBJECT,
      SHEET TYPE OLE2_OBJECT,
      CELL TYPE OLE2_OBJECT,
      WORKBOOK TYPE OLE2_OBJECT.

DATA:VAL1(30TYPE C.
DATA: R1 TYPE I,
       R2 TYPE I.
*輸入文件名參數
PARAMETERS:FN1 LIKE RLGRAP-FILENAME MEMORY ID M01.

*啓動excel
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.

IF SY-SUBRC NE 0 .
  WRITE: / ''.
  STOP.
ENDIF.

CALL METHOD OF EXCEL 'WORKBOOKS' = WORKBOOK.
*使excel 可視
SET PROPERTY OF EXCEL 'VISIBLE' = 1.

*建立worksheet
SET PROPERTY OF EXCEL 'SHEETSINNEWWORKBOOK' = 1.          "如果是讀取excel文件中的內容 則是直接打開工作簿第一頁
CALL METHOD OF WORKBOOK 'ADD'.                             " 例如:CALL METHOD OF EXCEL 'WORKSHEETS'   = SHEET   EXPORTING #1 = 1.
*寫前10行10列
DO 10 TIMES.
   R1 = SY-INDEX.
   VAL1+1(4) = '行:'.
   VAL1+6(4) =   R1.
  DO 10 TIMES.
     R2 = SY-INDEX.
     VAL1+15(4) = '列:'.
     VAL1+19(4) = R2.
*指定單元格,並寫入值
   CALL METHOD OF EXCEL 'CELLS' = CELL  EXPORTING #1 = R1   #2 = R2.
   SET PROPERTY OF CELL 'VALUE' = VAL1.
  ENDDO.
ENDDO.


*存入文件
GET PROPERTY OF EXCEL 'ACTIVESHEET' = SHEET.      "激活工作簿
GET PROPERTY OF EXCEL 'ACTIVEWORKBOOK' = WORKBOOK.   "激活工作區
CALL METHOD OF WORKBOOK 'SAVEAS' EXPORTING #1 = FN1   #2 = 1.    "將excel文件保存爲 FN1   路徑
CALL METHOD OF WORKBOOK 'CLOSE'.           "關閉工作區
CALL METHOD OF EXCEL 'QUIT'.               " 退出excel
WRITE 'DONE'.                              "退出成功,輸出done

FREE OBJECT SHEET.                      "釋放操作
FREE OBJECT WORKBOOK.
FREE OBJECT EXCEL.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章