mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 07:56:15 +08:00
GET_TABLE skip bottom empty rows (#959)
Fix #787 Co-authored-by: sandraros <sandra.rossi@gmail.com> Co-authored-by: Abo <andrea@borgia.bo.it>
This commit is contained in:
parent
cc291983d7
commit
c3481d5d90
|
@ -23,35 +23,56 @@ DATA: lo_excel TYPE REF TO zcl_excel,
|
||||||
lo_reader TYPE REF TO zif_excel_reader,
|
lo_reader TYPE REF TO zif_excel_reader,
|
||||||
lo_worksheet TYPE REF TO zcl_excel_worksheet,
|
lo_worksheet TYPE REF TO zcl_excel_worksheet,
|
||||||
lo_salv TYPE REF TO cl_salv_table.
|
lo_salv TYPE REF TO cl_salv_table.
|
||||||
|
DATA: lo_error TYPE REF TO cx_root.
|
||||||
|
|
||||||
"
|
PARAMETERS p_file TYPE string LOWER CASE.
|
||||||
"Ask User to choose a path
|
PARAMETERS p_skip_b AS CHECKBOX.
|
||||||
"
|
|
||||||
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
|
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
|
||||||
CHANGING t_table = lt_tab ).
|
"
|
||||||
lo_salv->display( ).
|
"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.
|
||||||
|
|
|
@ -15,6 +15,18 @@
|
||||||
<ENTRY>abap2xlsx Demo: Demo 43 GET_TABLE</ENTRY>
|
<ENTRY>abap2xlsx Demo: Demo 43 GET_TABLE</ENTRY>
|
||||||
<LENGTH>33</LENGTH>
|
<LENGTH>33</LENGTH>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<ID>S</ID>
|
||||||
|
<KEY>P_FILE</KEY>
|
||||||
|
<ENTRY>Excel file</ENTRY>
|
||||||
|
<LENGTH>18</LENGTH>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<ID>S</ID>
|
||||||
|
<KEY>P_SKIP_B</KEY>
|
||||||
|
<ENTRY>Skip bottom empty rows</ENTRY>
|
||||||
|
<LENGTH>30</LENGTH>
|
||||||
|
</item>
|
||||||
</TPOOL>
|
</TPOOL>
|
||||||
</asx:values>
|
</asx:values>
|
||||||
</asx:abap>
|
</asx:abap>
|
||||||
|
|
|
@ -590,12 +590,13 @@ CLASS zcl_excel_worksheet DEFINITION
|
||||||
zcx_excel .
|
zcx_excel .
|
||||||
METHODS get_table
|
METHODS get_table
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_skipped_rows TYPE int4 DEFAULT 0
|
!iv_skipped_rows TYPE int4 DEFAULT 0
|
||||||
!iv_skipped_cols TYPE int4 DEFAULT 0
|
!iv_skipped_cols TYPE int4 DEFAULT 0
|
||||||
!iv_max_col TYPE int4 OPTIONAL
|
!iv_max_col TYPE int4 OPTIONAL
|
||||||
!iv_max_row TYPE int4 OPTIONAL
|
!iv_max_row TYPE int4 OPTIONAL
|
||||||
|
!iv_skip_bottom_empty_rows TYPE abap_bool DEFAULT abap_false
|
||||||
EXPORTING
|
EXPORTING
|
||||||
!et_table TYPE STANDARD TABLE
|
!et_table TYPE STANDARD TABLE
|
||||||
RAISING
|
RAISING
|
||||||
zcx_excel .
|
zcx_excel .
|
||||||
METHODS set_merge_style
|
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 lx_conversion_error TYPE REF TO cx_sy_conversion_error.
|
||||||
DATA lv_float TYPE f.
|
DATA lv_float TYPE f.
|
||||||
DATA lv_type.
|
DATA lv_type.
|
||||||
|
DATA lv_tabix TYPE i.
|
||||||
|
|
||||||
lv_max_col = me->get_highest_column( ).
|
lv_max_col = me->get_highest_column( ).
|
||||||
IF iv_max_col IS SUPPLIED AND iv_max_col < lv_max_col.
|
IF iv_max_col IS SUPPLIED AND iv_max_col < lv_max_col.
|
||||||
|
@ -2747,6 +2749,20 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
|
||||||
ENDWHILE.
|
ENDWHILE.
|
||||||
ADD 1 TO lv_actual_row.
|
ADD 1 TO lv_actual_row.
|
||||||
ENDWHILE.
|
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 <ls_line>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
IF <ls_line> IS NOT INITIAL.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
DELETE et_table INDEX lv_tabix.
|
||||||
|
lv_tabix = lv_tabix - 1.
|
||||||
|
ENDWHILE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user