SAP ABAP OLE 操作EXCEL小结说课讲解.docx

上传人:b****3 文档编号:1158519 上传时间:2022-10-18 格式:DOCX 页数:8 大小:45.64KB
下载 相关 举报
SAP ABAP OLE 操作EXCEL小结说课讲解.docx_第1页
第1页 / 共8页
SAP ABAP OLE 操作EXCEL小结说课讲解.docx_第2页
第2页 / 共8页
SAP ABAP OLE 操作EXCEL小结说课讲解.docx_第3页
第3页 / 共8页
SAP ABAP OLE 操作EXCEL小结说课讲解.docx_第4页
第4页 / 共8页
SAP ABAP OLE 操作EXCEL小结说课讲解.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

SAP ABAP OLE 操作EXCEL小结说课讲解.docx

《SAP ABAP OLE 操作EXCEL小结说课讲解.docx》由会员分享,可在线阅读,更多相关《SAP ABAP OLE 操作EXCEL小结说课讲解.docx(8页珍藏版)》请在冰豆网上搜索。

SAP ABAP OLE 操作EXCEL小结说课讲解.docx

SAPABAPOLE操作EXCEL小结说课讲解

 

SAPABAPOLE操作EXCEL小结

SAPABAPOLE操作EXCEL小结

  ABAP直接操作EXCEL实现数据处理。

这里是用OLE实现操作EXCEL的。

现在还有

DOI操作EXCEL等方法。

以后用到再做介绍。

此处不是直接生成EXCEL文件,而是从

服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存。

也可以直接创建

新的EXCEL文件往里面传递数据并设置格式。

这里不做介绍。

 

1.采用模板文件实现。

上传EXCEL模板

 T-code:

SMW0WebRFC的二进制数据包:

MI  

点击按钮,上传excel模板。

模板数据保存在系统表wwwdata中。

 

2.在程序中下载模板

*下载EXCEL模板FORM

FORM temp_excel_get.

 DATA:

 lo_objdataLIKEwwwdatatab,

        lo_mimeLIKEw3mime,

        lc_filename TYPEstringVALUE'test01',

        lc_fullpath TYPEstring VALUE'D:

\test\',

        lc_path     TYPE stringVALUE'D:

\test\',

        ls_destinationLIKErlgrap-filename,

        ls_objnamTYPEstring,

        li_rcLIKEsy-subrc,

        ls_errtxtTYPEstring.

 DATA:

p_objidTYPEwwwdatatab-objid,

      p_destLIKEsapb-sappfad.

 p_objid='ZTEST.XLS'.“此处为EXCEL模板名称

 CALLMETHODcl_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.

 IFlc_fullpath=''.

   MESSAGE '不能打开excel'TYPE'E'.

 ENDIF.

 IFsy-subrc=0.

   p_dest=lc_fullpath.

*   concatenatep_objid'.XLS'intols_objnam.

   CONDENSEls_objnamNO-GAPS.

   SELECTSINGLErelidobjidFROMwwwdataINTOCORRESPONDINGFIELDSOFlo_objdata

          WHEREsrtf2=0ANDrelid='MI'ANDobjid=p_objid.

*检查表wwwdata中是否存在所指定的模板文件

   IFsy-subrcNE0ORlo_objdata-objidEQspace.“如果不存在,则给出错误提示

     CONCATENATE'模板文件'ls_objnam'不存在'INTOls_errtxt.

     MESSAGEls_errtxtTYPE'I'.

   ENDIF.

   ls_destination=p_dest.”保存路径

*如果存在,调用DOWNLOAD_WEB_OBJECT函数下载模板到路径下

   CALLFUNCTION'DOWNLOAD_WEB_OBJECT'

     EXPORTING

       key        =lo_objdata

       destination=ls_destination

     IMPORTING

       rc         =li_rc.

   IFli_rcNE0.

     CONCATENATE'模板文件:

'ls_objnam'下载失败'INTOls_errtxt.

     MESSAGEls_errtxtTYPE'E'.

   ENDIF.

   fname=ls_destination.

 ENDIF.

ENDFORM.                   "fm_excel

 

3.下载完模板后,打开模板文件,填入数据

 

 CREATEOBJECTexcel'EXCEL.APPLICATION'. "CreateEXCELOBJECT

 IFsy-subrcNE0.

   EXIT.

 ENDIF.

 SETPROPERTYOFexcel'Visible'=0. "1/0是否显示EXCEL

 CALLMETHODOFexcel'Workbooks'=workbook.

 CALLMETHODOFworkbook'Open'

   EXPORTING

   #1=fname.."打开上面下载路径下的excel文件

 CALLMETHODOFexcel'Sheets'=sheet

   EXPORTING

   #1=1.

 CALLMETHODOFsheet'Select'.

 CALLMETHODOFsheet'ACTIVATE'.“sheet激活

 SETPROPERTYOFsheet'NAME'=sheetname.“设定sheet名称

*此处假设内表itab中已经存在需要写入excel中的数据

*并且假如从模板的第7行开始插入数据

LOOPATitabINTOwa.

   tab=wa-tabix+6.

*在excel中插入一行

   PERFORMexcel_row_insertUSINGsheettab1.

*填充所插入行的每个单元格的数据

   PERFORMfill_rangeUSINGtab1wa-t01.

   PERFORMfill_rangeUSINGtab2wa-t02.

   PERFORMfill_rangeUSINGtab3wa-t03.

   PERFORMfill_rangeUSINGtab4wa-t04.

   PERFORMfill_rangeUSINGtab5wa-t05.

   PERFORMfill_rangeUSINGtab6wa-t06.

 ENDLOOP.

*设置EXCEL中所插入的数据行边框线格式为黑色有边框

 bod=tab.

 CONDENSEbodNO-GAPS.

 CONCATENATE'A6:

F'bodINTObod.

 PERFORMborderrangeUSINGexcelbod.

 PERFORMsub_excel_save."保存excel数据

 

*&---------------------------------------------------------------------*

*&     Form sub_excel_save

*&---------------------------------------------------------------------*

*      text

*----------------------------------------------------------------------*

FORMsub_excel_save.

 GETPROPERTYOFexcel'ActiveSheet'=sheet.“获取活动SHEET

 FREEOBJECTsheet.

 FREEOBJECTworkbook.

 GETPROPERTYOFexcel'ActiveWorkbook'=workbook.

 CALLMETHODOFworkbook'SAVE'.

 SETPROPERTYOFexcel'Visible'=1. "是否显示EXCEL此处显示不退出

*SETPROPERTYOFexcel'Visible'=1.

* CALLMETHODOFworkbook'CLOSE'.

* CALLMETHODOFexcel'QUIT'.注释部分为不显示直接退出

 FREEOBJECTsheet.

 FREEOBJECTworkbook.

 FREEOBJECTexcel.

ENDFORM.                   "save_book

 

 

*&---------------------------------------------------------------------*

*&向excel中的指定行插入N行

*&---------------------------------------------------------------------*

FORMexcel_row_insertUSINGlcobj_sheet

                           lc_row

                           lc_count.

 DATAlc_rangeTYPEole2_object.

 DATAh_borders TYPEole2_object.

 DOlc_countTIMES.

   CALLMETHODOFlcobj_sheet'Rows'=lc_range

     EXPORTING#1=6.

   CALLMETHODOFlc_range'Copy'. “COPY第6行插入一个新行

   CALLMETHODOFlcobj_sheet'Rows'=lc_range

     EXPORTING#1=lc_row.

   CALLMETHODOFlc_range'Insert'.

   CALLMETHODOFlc_range'ClearContents'."是否需要清空Cell

 ENDDO.

ENDFORM.                

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1