例子說明下載EXCEL模板然后填入数据到EXCEL1、使用se80导入模板这里可以使用以下OO下载模板到本地我这里使用的是MIME的方式当然也可以用SMW0的方式下载模板也可以的。* 1. 获取 MIME lo_api cl_mime_repository_apiget_api( ). CALL METHOD lo_api-get EXPORTING i_url lv_url IMPORTING e_content lv_xstring2. * 2. 转 binary CALL FUNCTION SCMS_XSTRING_TO_BINARY EXPORTING buffer lv_xstring2 TABLES binary_tab lt_binary. WRITE: MIME 获取成功. p_file D:\Temp\ABCD.XLSX. CALL FUNCTION GUI_DOWNLOAD EXPORTING filename p_file filetype BIN TABLES data_tab lt_binary.以下是SMW0的方式FORM frm_download_templet USING pv_fullpath TYPE string . DATA: wa_key TYPE wwwdatatab, ls_objnam TYPE string. DATA rc TYPE sy-subrc. DATA ls_errtxt TYPE string. DATA w_file TYPE rlgrap-filename. DATA : ldfilename TYPE string . ldfilename ZEB00 . CONCATENATE ldfilename .XLSX INTO ls_objnam . SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF wa_key WHERE srtf2 0 AND relid MI AND objid ldfilename . IF sy-subrc 0 OR wa_key-objid space. CONCATENATE 模板文件 ls_objnam 请用TCODESMW0进行加载 . INTO ls_errtxt. MESSAGE ls_errtxt TYPE E. ENDIF. IF strlen( pv_fullpath ) 128. MESSAGE The path overlength TYPE E. ENDIF.. MOVE pv_fullpath TO w_file. CALL FUNCTION DOWNLOAD_WEB_OBJECT EXPORTING key wa_key destination w_file IMPORTING rc rc. IF rc 0. CONCATENATE 模板文件 ls_objnam 下载失败 INTO ls_errtxt. MESSAGE e000(su) WITH ls_errtxt. ENDIF. ENDFORM. frm_download_templet以下代码直接可以复制使用。REPORT z_demo_template_update. DATA: lo_excel TYPE REF TO zcl_excel, lo_reader TYPE REF TO zif_excel_reader, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_salv TYPE REF TO cl_salv_table, lo_writer TYPE REF TO zcl_excel_writer_2007. DATA: lo_error TYPE REF TO cx_root. DATA:p_file TYPE string. DATA: lv_template TYPE xstring, lv_xstring TYPE xstring, lt_file TYPE solix_tab, lt_solix TYPE solix_tab, lv_size TYPE i. DATA: lo_api TYPE REF TO if_mr_api, lv_xstring2 TYPE xstring, lt_binary TYPE STANDARD TABLE OF raw255, 这里是SAP的路径 MIME路径 lv_url TYPE string VALUE /SAP/PUBLIC/ZSD/ZRSD3001.xlsx. * 1. 获取 MIME lo_api cl_mime_repository_apiget_api( ). CALL METHOD lo_api-get EXPORTING i_url lv_url IMPORTING e_content lv_xstring2. * 2. 转 binary CALL FUNCTION SCMS_XSTRING_TO_BINARY EXPORTING buffer lv_xstring2 TABLES binary_tab lt_binary. WRITE: MIME 获取成功. 本地路径 p_file D:\Temp\ABCD.XLSX. CALL FUNCTION GUI_DOWNLOAD EXPORTING filename p_file filetype BIN TABLES data_tab lt_binary. CREATE OBJECT lo_reader TYPE zcl_excel_reader_2007. lo_excel lo_reader-load_file( p_file ). lo_worksheet lo_excel-get_worksheet_by_index( iv_index 1 ). DATA: lv_char TYPE zexcel_cell_value. DATA: lo_style TYPE REF TO zcl_excel_style. CREATE OBJECT lo_style. lo_style lo_excel-add_new_style( ). *lo_style-font-size 20. *lo_style-borders-down-border_style * zcl_excel_style_borderc_border_medium. ** 搭配常用 *lo_style-font-bold abap_true. *lo_style-alignment-horizontal * zcl_excel_style_alignmentc_horizontal_right. SELECT * FROM sflight INTO TABLE DATA(gt_sflight) UP TO 10 ROWS. DATA:lv_sum TYPE i VALUE 12. LOOP AT gt_sflight INTO DATA(gs_sflight). IF sy-tabix lines( gt_sflight ). lo_style lo_excel-add_new_style( ). IF lo_style-borders-down IS INITIAL. CREATE OBJECT lo_style-borders-down. ENDIF. lo_style-borders-down-border_style zcl_excel_style_borderc_border_double. ENDIF. TRY. CALL METHOD lo_worksheet-set_cell EXPORTING ip_column 2 ip_row lv_sum ip_value gs_sflight-carrid ip_style lo_style. CALL METHOD lo_worksheet-set_cell EXPORTING ip_column 3 ip_row lv_sum ip_value gs_sflight-price ip_style lo_style. CALL METHOD lo_worksheet-set_cell EXPORTING ip_column 4 ip_row lv_sum ip_value gs_sflight-currency ip_style lo_style. lv_sum lv_sum 1. CATCH zcx_excel. ENDTRY. ENDLOOP. TRY. CALL METHOD lo_worksheet-get_cell EXPORTING * ip_columnrow ip_column 1 ip_row 1 IMPORTING ep_value lv_char * ep_rc ep_style lo_style * ep_guid * ep_formula * et_rtf . CATCH zcx_excel. ENDTRY. WRITE:lv_char. 6. 转回 Excel CREATE OBJECT lo_writer. *lv_xstring lo_writer-write_file( lo_excel ). *TRY. CALL METHOD lo_writer-zif_excel_writer~write_file EXPORTING io_excel lo_excel RECEIVING ep_file lv_xstring. * CATCH zcx_excel. *ENDTRY. 7. 转 solix lt_solix cl_bcs_convertxstring_to_solix( lv_xstring ). lv_size xstrlen( lv_xstring ). 8. 下载新文件 cl_gui_frontend_servicesgui_download( EXPORTING filename p_file filetype BIN bin_filesize lv_size CHANGING data_tab lt_solix ). MESSAGE 模板写入成功 TYPE S.以下是没有模板的例子以下可以复制运行 作用是新建excel填入数据。REPORT z_excel_demo_abap2xlsx. *---------------------------------------------------------------------* * 1. 定义数据 *---------------------------------------------------------------------* DATA: lt_vbak TYPE TABLE OF vbak, ls_vbak TYPE vbak. SELECT * INTO TABLE lt_vbak FROM vbak UP TO 50 ROWS. *---------------------------------------------------------------------* * 2. 定义 Excel 对象 *---------------------------------------------------------------------* DATA: lo_excel TYPE REF TO zcl_excel, lo_sheet TYPE REF TO zcl_excel_worksheet, lo_writer TYPE REF TO zcl_excel_writer_2007, lv_xstring TYPE xstring. *---------------------------------------------------------------------* * 3. 创建 Excel *---------------------------------------------------------------------* CREATE OBJECT lo_excel. lo_sheet lo_excel-get_active_worksheet( ). *---------------------------------------------------------------------* * 4. Header带样式 *---------------------------------------------------------------------* DATA: lo_style TYPE REF TO zcl_excel_style. lo_style lo_excel-add_new_style( ). lo_style-font-bold abap_true. lo_style-fill-filltype zcl_excel_style_fillc_fill_solid. lo_style-fill-fgcolor-rgb FFFF00. 黄色 lo_sheet-set_cell( ip_row 1 ip_column A ip_value VBELN ip_style lo_style ). lo_sheet-set_cell( ip_row 1 ip_column B ip_value ERDAT ip_style lo_style ). lo_sheet-set_cell( ip_row 1 ip_column C ip_value ERNAM ip_style lo_style ). lo_sheet-set_cell( ip_row 1 ip_column D ip_value AUART ip_style lo_style ). lo_sheet-set_cell( ip_row 1 ip_column E ip_value VKORG ip_style lo_style ). *---------------------------------------------------------------------* * 5. 写入数据 *---------------------------------------------------------------------* DATA lv_row TYPE i VALUE 2. LOOP AT lt_vbak INTO ls_vbak. lo_sheet-set_cell( ip_row lv_row ip_column A ip_value ls_vbak-vbeln ). lo_sheet-set_cell( ip_row lv_row ip_column B ip_value ls_vbak-erdat ). lo_sheet-set_cell( ip_row lv_row ip_column C ip_value ls_vbak-ernam ). lo_sheet-set_cell( ip_row lv_row ip_column D ip_value ls_vbak-auart ). lo_sheet-set_cell( ip_row lv_row ip_column E ip_value ls_vbak-vkorg ). lv_row lv_row 1. ENDLOOP. *---------------------------------------------------------------------* * 6. 自动宽度 *---------------------------------------------------------------------* lo_sheet-calculate_column_widths( ). *---------------------------------------------------------------------* * 7. 转换为 xstring *---------------------------------------------------------------------* CREATE OBJECT lo_writer. CALL METHOD lo_writer-zif_excel_writer~write_file EXPORTING io_excel lo_excel RECEIVING ep_file lv_xstring. *---------------------------------------------------------------------* * 8. 下载到本地 *---------------------------------------------------------------------* DATA: lt_bin TYPE solix_tab. lt_bin cl_bcs_convertxstring_to_solix( lv_xstring ). cl_gui_frontend_servicesgui_download( EXPORTING filename D:\temp\vbak_demo.xlsx filetype BIN bin_filesize xstrlen( lv_xstring ) CHANGING data_tab lt_bin ). WRITE: Excel 下载完成.