EXCEL文件上传与下载
生活随笔
收集整理的這篇文章主要介紹了
EXCEL文件上传与下载
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
*-----------------------?上傳?Example?1?----------------------------------
?假設有數據在excel中如下:
?sname?????sno???sex
?孫曉磊?????001???男
?周杰倫?????002???男
?阿貓???????003???女
?阿狗???????004???男
DATA:?gt_data?TYPE?alsmex_tabline?OCCURS?0?WITH?HEADER?LINE.
TYPES:?BEGIN?OF?ty_itab,
????????sname(10),
????????sno(10),
????????sex(3),
???????END?OF?ty_itab.
DATA:?wa????TYPE?ty_itab,
??????itab??TYPE?TABLE?OF?ty_itab."定義的這個內表結構要與excel表完全一樣
PARAMETERS:?p_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?<>?0?AND?sy-subrc?<>?3.
????MESSAGE?e100(zdev)?WITH?'選擇文件出錯!'(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-POOLS:?truxs.
??TYPES:?BEGIN?OF?t_datatab,"只記錄excel文件的前四列
????????col1(30)????TYPE?c,
????????col2(30)????TYPE?c,
????????col3(30)????TYPE?c,
????????col4(30)????TYPE?c,
????????END?OF?t_datatab.
??DATA:?it_datatab?TYPE?STANDARD?TABLE?OF?t_datatab,
????????wa_datatab?TYPE?t_datatab.
??DATA:?it_raw?TYPE?truxs_t_text_data.
??PARAMETERS:?p_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-POOLS:?abap.
DATA:?fullpath????TYPE?string,
??????filename????TYPE?string,
??????path????????TYPE?string,
??????user_action?TYPE?i,
??????encoding????TYPE?abap_encoding.
PARAMETERS:?p_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?<>?0?OR?user_action?<>?cl_gui_frontend_services=>action_ok.
????EXIT.
??ENDIF.
??DATA:?itab?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-POOLS:?abap.
DATA:?fullpath????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?<>?0?OR?user_action?<>?cl_gui_frontend_services=>action_ok.
??EXIT.
ENDIF.
?假設有數據在excel中如下:
?sname?????sno???sex
?孫曉磊?????001???男
?周杰倫?????002???男
?阿貓???????003???女
?阿狗???????004???男
DATA:?gt_data?TYPE?alsmex_tabline?OCCURS?0?WITH?HEADER?LINE.
TYPES:?BEGIN?OF?ty_itab,
????????sname(10),
????????sno(10),
????????sex(3),
???????END?OF?ty_itab.
DATA:?wa????TYPE?ty_itab,
??????itab??TYPE?TABLE?OF?ty_itab."定義的這個內表結構要與excel表完全一樣
PARAMETERS:?p_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?<>?0?AND?sy-subrc?<>?3.
????MESSAGE?e100(zdev)?WITH?'選擇文件出錯!'(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-POOLS:?truxs.
??TYPES:?BEGIN?OF?t_datatab,"只記錄excel文件的前四列
????????col1(30)????TYPE?c,
????????col2(30)????TYPE?c,
????????col3(30)????TYPE?c,
????????col4(30)????TYPE?c,
????????END?OF?t_datatab.
??DATA:?it_datatab?TYPE?STANDARD?TABLE?OF?t_datatab,
????????wa_datatab?TYPE?t_datatab.
??DATA:?it_raw?TYPE?truxs_t_text_data.
??PARAMETERS:?p_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-POOLS:?abap.
DATA:?fullpath????TYPE?string,
??????filename????TYPE?string,
??????path????????TYPE?string,
??????user_action?TYPE?i,
??????encoding????TYPE?abap_encoding.
PARAMETERS:?p_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?<>?0?OR?user_action?<>?cl_gui_frontend_services=>action_ok.
????EXIT.
??ENDIF.
??DATA:?itab?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-POOLS:?abap.
DATA:?fullpath????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?<>?0?OR?user_action?<>?cl_gui_frontend_services=>action_ok.
??EXIT.
ENDIF.
總結
以上是生活随笔為你收集整理的EXCEL文件上传与下载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: update module
- 下一篇: BAPI:KBPP_EXTERN_UPD