diff --git a/src/demos/zdemo_excel43.prog.abap b/src/demos/zdemo_excel43.prog.abap
index cdc5467..b39eaf5 100644
--- a/src/demos/zdemo_excel43.prog.abap
+++ b/src/demos/zdemo_excel43.prog.abap
@@ -23,35 +23,56 @@ 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.
+DATA: lo_error TYPE REF TO cx_root.
-"
-"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
-"
+PARAMETERS p_file TYPE string LOWER CASE.
+PARAMETERS p_skip_b AS CHECKBOX.
-cl_salv_table=>factory( IMPORTING r_salv_table = lo_salv
- CHANGING t_table = lt_tab ).
-lo_salv->display( ).
+AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
+ "
+ "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.
+ ENDIF.
+ DELETE lt_filetable FROM 2.
+ READ TABLE lt_filetable INDEX 1 INTO ls_filetable.
+ IF sy-subrc = 0.
+ p_file = ls_filetable-filename.
+ ENDIF.
+
+START-OF-SELECTION.
+
+ TRY.
+
+ 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 ).
+ lo_worksheet->get_table(
+ EXPORTING
+ iv_skip_bottom_empty_rows = p_skip_b
+ IMPORTING
+ et_table = lt_tab ).
+
+ "
+ "Do the presentation stuff
+ "
+
+ cl_salv_table=>factory( IMPORTING r_salv_table = lo_salv
+ CHANGING t_table = lt_tab ).
+ lo_salv->display( ).
+
+ CATCH cx_root INTO lo_error.
+ MESSAGE lo_error TYPE 'I' DISPLAY LIKE 'E'.
+ ENDTRY.
diff --git a/src/demos/zdemo_excel43.prog.xml b/src/demos/zdemo_excel43.prog.xml
index 81792c0..2e95fa3 100644
--- a/src/demos/zdemo_excel43.prog.xml
+++ b/src/demos/zdemo_excel43.prog.xml
@@ -15,6 +15,18 @@
abap2xlsx Demo: Demo 43 GET_TABLE
33
+ -
+ S
+ P_FILE
+ Excel file
+ 18
+
+ -
+ S
+ P_SKIP_B
+ Skip bottom empty rows
+ 30
+
diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap
index c44a521..7311994 100644
--- a/src/zcl_excel_worksheet.clas.abap
+++ b/src/zcl_excel_worksheet.clas.abap
@@ -590,12 +590,13 @@ CLASS zcl_excel_worksheet DEFINITION
zcx_excel .
METHODS get_table
IMPORTING
- !iv_skipped_rows TYPE int4 DEFAULT 0
- !iv_skipped_cols TYPE int4 DEFAULT 0
- !iv_max_col TYPE int4 OPTIONAL
- !iv_max_row TYPE int4 OPTIONAL
+ !iv_skipped_rows TYPE int4 DEFAULT 0
+ !iv_skipped_cols TYPE int4 DEFAULT 0
+ !iv_max_col TYPE int4 OPTIONAL
+ !iv_max_row TYPE int4 OPTIONAL
+ !iv_skip_bottom_empty_rows TYPE abap_bool DEFAULT abap_false
EXPORTING
- !et_table TYPE STANDARD TABLE
+ !et_table TYPE STANDARD TABLE
RAISING
zcx_excel .
METHODS set_merge_style
@@ -2643,6 +2644,7 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
DATA lx_conversion_error TYPE REF TO cx_sy_conversion_error.
DATA lv_float TYPE f.
DATA lv_type.
+ DATA lv_tabix TYPE i.
lv_max_col = me->get_highest_column( ).
IF iv_max_col IS SUPPLIED AND iv_max_col < lv_max_col.
@@ -2747,6 +2749,20 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
ENDWHILE.
ADD 1 TO lv_actual_row.
ENDWHILE.
+
+ IF iv_skip_bottom_empty_rows = abap_true.
+ lv_tabix = lines( et_table ).
+ WHILE lv_tabix >= 1.
+ READ TABLE et_table INDEX lv_tabix ASSIGNING .
+ ASSERT sy-subrc = 0.
+ IF IS NOT INITIAL.
+ EXIT.
+ ENDIF.
+ DELETE et_table INDEX lv_tabix.
+ lv_tabix = lv_tabix - 1.
+ ENDWHILE.
+ ENDIF.
+
ENDIF.