abap2xlsx/src/zdemo_excel43.prog.abap
2018-07-29 11:14:48 +00:00

58 lines
2.1 KiB
ABAP

*&---------------------------------------------------------------------*
*& Report ZDEMO_EXCEL43
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zdemo_excel43.
"
"Locally created Structure, which should be equal to the excels structure
"
TYPES: BEGIN OF lty_excel_s,
dummy TYPE dummy.
TYPES: END OF lty_excel_s.
DATA lt_tab TYPE TABLE OF lty_excel_s.
DATA: lt_filetable TYPE filetable,
ls_filetable TYPE file_table.
DATA lv_subrc TYPE i.
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.
"
"Ask User to choose a path
"
cl_gui_frontend_services=>file_open_dialog( EXPORTING window_title = 'Excel selection'
file_filter = '*.xlsx'
multiselection = abap_false
CHANGING file_table = lt_filetable " Tabelle, die selektierte Dateien enthält
rc = lv_subrc
EXCEPTIONS file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5 ).
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CREATE OBJECT lo_reader TYPE zcl_excel_reader_2007.
LOOP AT lt_filetable INTO ls_filetable.
lo_excel = lo_reader->load_file( ls_filetable-filename ).
lo_worksheet = lo_excel->get_worksheet_by_index( iv_index = 1 ).
lo_worksheet->get_table( IMPORTING et_table = lt_tab ).
ENDLOOP.
ENDIF.
"
"Do the presentation stuff
"
cl_salv_table=>factory( IMPORTING r_salv_table = lo_salv
CHANGING t_table = lt_tab ).
lo_salv->display( ).