mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 13:46:17 +08:00
Options to skip hidden rows and columns for CSV format
Add options to skip hidden rows and columns when saving the data in CSV format. This is especially useful, when converting an ALV to an Excel object and saving it as CSV file. ALV layouts often display only selected columns.
This commit is contained in:
parent
e1cccfabda
commit
f30668cfbf
|
@ -30,6 +30,12 @@ CLASS zcl_excel_writer_csv DEFINITION
|
||||||
CLASS-METHODS set_initial_ext_date
|
CLASS-METHODS set_initial_ext_date
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!ip_value TYPE char10 DEFAULT c_default .
|
!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
|
*"* protected components of class ZCL_EXCEL_WRITER_CSV
|
||||||
*"* do not include other source files here!!!
|
*"* do not include other source files here!!!
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
@ -45,6 +51,8 @@ CLASS zcl_excel_writer_csv DEFINITION
|
||||||
CLASS-DATA worksheet_name TYPE zexcel_worksheets_name .
|
CLASS-DATA worksheet_name TYPE zexcel_worksheets_name .
|
||||||
CLASS-DATA worksheet_index TYPE zexcel_active_worksheet .
|
CLASS-DATA worksheet_index TYPE zexcel_active_worksheet .
|
||||||
CLASS-DATA initial_ext_date TYPE char10 VALUE c_default.
|
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
|
METHODS create
|
||||||
RETURNING
|
RETURNING
|
||||||
|
@ -151,11 +159,46 @@ CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION.
|
||||||
|
|
||||||
SORT lt_cell_data BY cell_row
|
SORT lt_cell_data BY cell_row
|
||||||
cell_column.
|
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_row = 1.
|
||||||
lv_col = 1.
|
lv_col = 1.
|
||||||
CLEAR lv_string.
|
CLEAR lv_string.
|
||||||
LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>.
|
LOOP AT lt_cell_data ASSIGNING <fs_sheet_content>.
|
||||||
|
|
||||||
|
* --- Add empty rows
|
||||||
|
WHILE lv_row < <fs_sheet_content>-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 = <fs_sheet_content>-cell_row ) = abap_true.
|
||||||
|
lv_row = <fs_sheet_content>-cell_row + 1.
|
||||||
|
lv_col = 1.
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
* --- Add empty columns
|
||||||
|
WHILE lv_col < <fs_sheet_content>-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 = <fs_sheet_content>-cell_column )->get_visible( ) = abap_false.
|
||||||
|
lv_col = <fs_sheet_content>-cell_column + 1.
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
* --- Retrieve Cell Style format and data type
|
* --- Retrieve Cell Style format and data type
|
||||||
CLEAR ls_numfmt.
|
CLEAR ls_numfmt.
|
||||||
IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL.
|
IF <fs_sheet_content>-data_type IS INITIAL AND <fs_sheet_content>-cell_style IS NOT INITIAL.
|
||||||
|
@ -210,19 +253,6 @@ CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION.
|
||||||
ENDIF. " lv_attrname IS NOT INITIAL.
|
ENDIF. " lv_attrname IS NOT INITIAL.
|
||||||
ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL.
|
ENDIF. " <fs_sheet_content>-data_type IS INITIAL AND ls_numfmt IS NOT INITIAL.
|
||||||
|
|
||||||
* --- Add empty rows
|
|
||||||
WHILE lv_row < <fs_sheet_content>-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 < <fs_sheet_content>-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.
|
* ----- Use format to determine the data type and display format.
|
||||||
CASE <fs_sheet_content>-data_type.
|
CASE <fs_sheet_content>-data_type.
|
||||||
|
|
||||||
|
@ -318,6 +348,16 @@ CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD zif_excel_writer~write_file.
|
||||||
me->excel = io_excel.
|
me->excel = io_excel.
|
||||||
ep_file = me->create( ).
|
ep_file = me->create( ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user