diff --git a/src/zcl_excel_writer_csv.clas.abap b/src/zcl_excel_writer_csv.clas.abap index 7aa976b..98e66d9 100644 --- a/src/zcl_excel_writer_csv.clas.abap +++ b/src/zcl_excel_writer_csv.clas.abap @@ -30,6 +30,12 @@ CLASS zcl_excel_writer_csv DEFINITION CLASS-METHODS set_initial_ext_date IMPORTING !ip_value TYPE char10 DEFAULT c_default . + CLASS-METHODS set_skip_hidden_rows + IMPORTING + !ip_value TYPE abap_bool. + CLASS-METHODS set_skip_hidden_columns + IMPORTING + !ip_value TYPE abap_bool. *"* protected components of class ZCL_EXCEL_WRITER_CSV *"* do not include other source files here!!! PROTECTED SECTION. @@ -45,6 +51,8 @@ CLASS zcl_excel_writer_csv DEFINITION CLASS-DATA worksheet_name TYPE zexcel_worksheets_name . CLASS-DATA worksheet_index TYPE zexcel_active_worksheet . CLASS-DATA initial_ext_date TYPE char10 VALUE c_default. + CLASS-DATA skip_hidden_rows TYPE abap_bool. + CLASS-DATA skip_hidden_columns TYPE abap_bool. METHODS create RETURNING @@ -151,11 +159,46 @@ CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION. SORT lt_cell_data BY cell_row cell_column. + + IF skip_hidden_rows = abap_true. +* --- Retrieve autofilters (to identify hidden rows) + lo_autofilter = excel->get_autofilters_reference( )->get( io_worksheet = lo_worksheet ). + ENDIF. + lv_row = 1. lv_col = 1. CLEAR lv_string. LOOP AT lt_cell_data ASSIGNING . +* --- Add empty rows + WHILE lv_row < -cell_row. + CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. + lv_row = lv_row + 1. + lv_col = 1. + ENDWHILE. + +* --- Skip hidden rows + IF skip_hidden_rows = abap_true AND + lo_autofilter IS NOT INITIAL AND + lo_autofilter->is_row_hidden( iv_row = -cell_row ) = abap_true. + lv_row = -cell_row + 1. + lv_col = 1. + CONTINUE. + ENDIF. + +* --- Add empty columns + WHILE lv_col < -cell_column. + CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. + lv_col = lv_col + 1. + ENDWHILE. + +* --- Skip hidden columns + IF skip_hidden_columns = abap_true AND + lo_worksheet->get_column( ip_column = -cell_column )->get_visible( ) = abap_false. + lv_col = -cell_column + 1. + CONTINUE. + ENDIF. + * --- Retrieve Cell Style format and data type CLEAR ls_numfmt. IF -data_type IS INITIAL AND -cell_style IS NOT INITIAL. @@ -210,19 +253,6 @@ CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION. ENDIF. " lv_attrname IS NOT INITIAL. ENDIF. " -data_type IS INITIAL AND ls_numfmt IS NOT INITIAL. -* --- Add empty rows - WHILE lv_row < -cell_row. - CONCATENATE lv_string zcl_excel_writer_csv=>eol INTO lv_string. - lv_row = lv_row + 1. - lv_col = 1. - ENDWHILE. - -* --- Add empty columns - WHILE lv_col < -cell_column. - CONCATENATE lv_string zcl_excel_writer_csv=>delimiter INTO lv_string. - lv_col = lv_col + 1. - ENDWHILE. - * ----- Use format to determine the data type and display format. CASE -data_type. @@ -318,6 +348,16 @@ CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION. ENDMETHOD. + METHOD set_skip_hidden_rows. + skip_hidden_rows = ip_value. + ENDMETHOD. + + + METHOD set_skip_hidden_columns. + skip_hidden_columns = ip_value. + ENDMETHOD. + + METHOD zif_excel_writer~write_file. me->excel = io_excel. ep_file = me->create( ).