SAP ABAP OLE 操作 EXCEL 小结
ABAP 直接操作 EXCEL 实现数据处理。这里是用 OLE 实现操作 EXCEL 的。现在还有
DOI 操作 EXCEL 等方法。以后用到再做介绍。此处不是直接生成 EXCEL 文件,而是从
服务器已经上传的 EXCEL 模板中下载模板然后打开修改实现数据保存。也可以直接创建
新的 EXCEL 文件往里面传递数据并设置格式。这里不做介绍。
1.采用模板文件实现。上传 EXCEL 模板
T-code:SMW0 WebRFC 的二进制数据 包:MI
点击 按钮,上传 excel 模板。
模板数据保存在系统表 wwwdata 中。
2.在程序中下载模板
*下载 EXCEL 模板 FORM
FORM temp_excel_get.
DATA: lo_objdata LIKE wwwdatatab,
lo_mime LIKE w3mime,
lc_filename TYPE string VALUE"test01" ,
lc_fullpath TYPE string VALUE"D:\test\" ,
lc_path TYPE string VALUE"D:\test\" ,
ls_destination LIKE rlgrap-filename,
ls_objnam TYPE string,
li_rc LIKE sy-subrc,
ls_errtxt TYPE string.
DATA:p_objid TYPE wwwdatatab-objid,
p_dest LIKE sapb-sappfad.
p_objid = "ZTEST.XLS". “此处为 EXCEL 模板名称
CALL METHOD cl_gui_frontend_services=>file_save_dialog ”调用保存对话框
EXPORTING
default_extension = "XLS"
default_file_name = lc_filename
CHANGING
filename = lc_filename
path = lc_path
fullpath = lc_fullpath
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4.
IF lc_fullpath = "".
MESSAGE "不能打开 excel" TYPE "E".
ENDIF.
IF sy-subrc = 0.
p_dest = lc_fullpath.
* concatenate p_objid ".XLS" into ls_objnam.
CONDENSE ls_objnam NO-GAPS.
SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF
lo_objdata
WHERE srtf2 = 0 AND relid = "MI" AND objid = p_objid.
*检查表 wwwdata 中是否存在所指定的模板文件
IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,则给出错误提示
CONCATENATE "模板文件" ls_objnam "不存在" INTO ls_errtxt.
MESSAGE ls_errtxt TYPE "I".
ENDIF.
ls_destination = p_dest. ”保存路径
*如果存在,调用 DOWNLOAD_WEB_OBJECT 函数下载模板到路径下
CALL FUNCTION "DOWNLOAD_WEB_OBJECT"
EXPORTING
key = lo_objdata
destination = ls_destination
IMPORTING
rc = li_rc.
IF li_rc NE 0.
CONCATENATE "模板文件:" ls_objnam "下载失败" INTO ls_errtxt.
MESSAGE ls_errtxt TYPE "E".
ENDIF.
fname = ls_destination.
ENDIF.
ENDFORM. "fm_excel
3.下载完模板后,打开模板文件,填入数据
CREATE OBJECT excel "EXCEL.APPLICATION". "Create EXCEL OBJECT
IF sy-subrc NE 0.
EXIT.
ENDIF.
SET PROPERTY OF excel "Visible" = 0. "1/0 是否显示 EXCEL
CALL METHOD OF excel "Workbooks" = workbook.
CALL METHOD OF workbook "Open"
EXPORTING
#1 = fname. ."打开上面下载路径下的 excel 文件
CALL METHOD OF excel "Sheets" = sheet
EXPORTING
#1 = 1.
CALL METHOD OF sheet "Select" .
评论0