EXCEL文件上传与下载

来源:互联网 发布:ubuntu ssh key 登录 编辑:程序博客网 时间:2024/05/02 00:26
*----------------------- 上传 Example 1 ----------------------------------

 假设有数据在excel中如下:
 sname     sno   sex
 孙晓磊     001   
 周杰伦     002   
 阿猫       003   
 阿狗       004   

DATAgt_data TYPE alsmex_tabline OCCURS WITH HEADER LINE.
TYPESBEGIN OF ty_itab,
        sname(10),
        sno(10),
        sex(3),
       END OF ty_itab.
DATAwa    TYPE ty_itab,
      itab  TYPE TABLE OF ty_itab."定义的这个内表结构要与excel表完全一样

PARAMETERSp_file LIKE rlgrap-filename OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      mask             ',Excel Files,*.xls,All Files,*.*.'(101)
      title            '选择文件'(100)
    IMPORTING
      filename         p_file
    EXCEPTIONS
      inv_winsys       1
      no_batch         2
      selection_cancel 3
      selection_error  4
      OTHERS           5.
  IF sy-subrc <> AND sy-subrc <> 3.
    MESSAGE e100(zdevWITH '选择文件出错!'(007).
  ENDIF.


START-OF-SELECTION.
  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      filename    p_file
      i_begin_col '1'
      i_begin_row '1'
      i_end_col   '50'
      i_end_row   '5000'
    TABLES
      intern      gt_data.
  SORT gt_data BY row col value.

*---整理到内表数据
  LOOP AT gt_data.
    CASE gt_data-col.
      WHEN 1.
        wa-sname gt_data-value.
      WHEN 2.
        wa-sno gt_data-value.
      WHEN 3.
        wa-sex gt_data-value.
        APPEND wa TO itab."对于这个例子,excel表有3列,append要加在最后一列.
        CLEAR wa.
    ENDCASE.
  ENDLOOP.

  LOOP AT itab INTO wa.
    WRITE:/ wa-sname,wa-sno,wa-sex.
    ULINE.
  ENDLOOP.

*----------------------- 上传 Example 2 ----------------------------------
  TYPE-POOLStruxs.
  TYPESBEGIN OF t_datatab,"只记录excel文件的前四列
        col1(30)    TYPE c,
        col2(30)    TYPE c,
        col3(30)    TYPE c,
        col4(30)    TYPE c,
        END OF t_datatab.
  DATAit_datatab TYPE STANDARD TABLE OF t_datatab,
        wa_datatab TYPE t_datatab.
  DATAit_raw TYPE truxs_t_text_data.
  PARAMETERSp_file TYPE  rlgrap-filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      field_name 'P_FILE'
    IMPORTING
      file_name  p_file.

START-OF-SELECTION.
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
      i_line_header        'X'           "带表头的,占一行,这一行不会读到内表
      i_tab_raw_data       it_raw        "WORK TABLE
      i_filename           p_file        "读这个文件时要保证它没有被打开
    TABLES
      i_tab_converted_data it_datatab[]   "ACTUAL DATA
    EXCEPTIONS
      conversion_failed    1
      OTHERS               2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  LOOP AT it_datatab INTO wa_datatab.
    CONDENSE wa_datatab.
    WRITE:/ wa_datatab-col1,
            wa_datatab-col2,
            wa_datatab-col3,
            wa_datatab-col4.
  ENDLOOP.

*----------------------- 下载 Example ----------------------------------
TYPE-POOLSabap.
DATAfullpath    TYPE string,
      filename    TYPE string,
      path        TYPE string,
      user_action TYPE i,
      encoding    TYPE abap_encoding.


PARAMETERSp_file TYPE string DEFAULT 'C:\ABC.xls'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL METHOD cl_gui_frontend_services=>file_save_dialog
    EXPORTING
      window_title      '下载到本地文件'
      default_extension 'XLS'           "缺省文件类型
      default_file_name '默认文件名称'
      file_filter       '文本文件(*.TXT)|*.TXT|Excel 文件 (*.XLS)|*.XLS;*.XLSX|所有文件 (*.*)|*.*|'
      with_encoding     'X'
      initial_directory 'C:\'
    CHANGING
      filename          filename    "获得用户输入文件名
      path              path        "获得用户所选路径
      fullpath          fullpath    "路径加文件名
      user_action       user_action
      file_encoding     encoding.

  IF sy-subrc <> OR user_action <> cl_gui_frontend_services=>action_ok.
    EXIT.
  ENDIF.

  DATAitab TYPE STANDARD TABLE OF spfli WITH DEFAULT KEY.
  SELECT FROM spfli INTO TABLE itab.

  DATA filename2 TYPE rlgrap-filename.
  filename2 fullpath.

  CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
    EXPORTING
      i_field_seperator 'X'         "字段分隔开
      i_filename        filename2
    TABLES
      i_tab_sap_data    itab

保存文件对话框( Fri, 8 Jul 2011 11:49:46 +0800 )
Description:
 
TYPE-POOLSabap.

DATAfullpath    TYPE string,
      filename    TYPE string,
      path        TYPE string,
      user_action TYPE i,
      encoding    TYPE abap_encoding.

CALL METHOD cl_gui_frontend_services=>file_save_dialog
  EXPORTING
    window_title      '下载到本地文件'
    default_extension 'XLS'           "缺省文件类型
    default_file_name '默认文件名称'
    file_filter       '文本文件(*.TXT)|*.TXT|Excel 文件 (*.XLS)|*.XLS;*.XLSX|所有文件 (*.*)|*.*|'
    with_encoding     'X'
    initial_directory 'C:\'
  CHANGING
    filename          filename    "获得用户输入文件名
    path              path        "获得用户所选路径
    fullpath          fullpath    "路径加文件名
    user_action       user_action
    file_encoding     encoding.

IF sy-subrc <> OR user_action <> cl_gui_frontend_services=>action_ok.
  EXIT.
ENDIF.

原创粉丝点击