Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix print titles range read and write #801 #862

Merged
merged 2 commits into from
Oct 30, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
61 changes: 45 additions & 16 deletions src/zcl_excel_common.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,22 @@ CLASS zcl_excel_common DEFINITION
!e_row TYPE zexcel_cell_row .
CLASS-METHODS convert_range2column_a_row
IMPORTING
!i_range TYPE clike
!i_range TYPE clike
!i_allow_1dim_range TYPE abap_bool DEFAULT abap_false
EXPORTING
!e_column_start TYPE zexcel_cell_column_alpha
!e_column_end TYPE zexcel_cell_column_alpha
!e_row_start TYPE zexcel_cell_row
!e_row_end TYPE zexcel_cell_row
!e_sheet TYPE clike
!e_column_start TYPE zexcel_cell_column_alpha
!e_column_end TYPE zexcel_cell_column_alpha
!e_row_start TYPE zexcel_cell_row
!e_row_end TYPE zexcel_cell_row
!e_sheet TYPE clike
RAISING
zcx_excel .
CLASS-METHODS convert_columnrow2column_o_row
IMPORTING
!i_columnrow TYPE clike
EXPORTING
!e_column TYPE zexcel_cell_column_alpha
!e_row TYPE zexcel_cell_row .
CLASS-METHODS date_to_excel_string
IMPORTING
!ip_value TYPE d
Expand Down Expand Up @@ -570,21 +577,43 @@ CLASS ZCL_EXCEL_COMMON IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''.
SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end.

convert_columnrow2column_a_row( EXPORTING
i_columnrow = lv_columnrow_start
IMPORTING
e_column = e_column_start
e_row = e_row_start ).
convert_columnrow2column_a_row( EXPORTING
i_columnrow = lv_columnrow_end
IMPORTING
e_column = e_column_end
e_row = e_row_end ).
IF i_allow_1dim_range = abap_true.
convert_columnrow2column_o_row( EXPORTING i_columnrow = lv_columnrow_start
IMPORTING e_column = e_column_start
e_row = e_row_start ).
convert_columnrow2column_o_row( EXPORTING i_columnrow = lv_columnrow_end
IMPORTING e_column = e_column_end
e_row = e_row_end ).
ELSE.
convert_columnrow2column_a_row( EXPORTING i_columnrow = lv_columnrow_start
IMPORTING e_column = e_column_start
e_row = e_row_start ).
convert_columnrow2column_a_row( EXPORTING i_columnrow = lv_columnrow_end
IMPORTING e_column = e_column_end
e_row = e_row_end ).
ENDIF.

e_sheet = unescape_string( lv_sheet ). " Return in unescaped form
ENDMETHOD.


METHOD convert_columnrow2column_o_row.

DATA: row TYPE string.
DATA: columnrow TYPE string.

CLEAR e_column.

columnrow = i_columnrow.

FIND REGEX '^(\D*)(\d*)$' IN columnrow SUBMATCHES e_column
row.

e_row = row.

ENDMETHOD.


METHOD date_to_excel_string.
DATA: lv_date_diff TYPE i.

Expand Down
94 changes: 94 additions & 0 deletions src/zcl_excel_common.clas.testclasses.abap
Original file line number Diff line number Diff line change
Expand Up @@ -842,6 +842,100 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).

**********************************************************************
* 1 Dimensional Ranges - Ros or Cols Only (eg Print Tiles)
*
lv_range = `$2:$7`.
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range
i_allow_1dim_range = abap_false
IMPORTING e_column_start = lv_column_start
e_column_end = lv_column_end
e_row_start = lv_row_start
e_row_end = lv_row_end
e_sheet = lv_sheet ).

cl_abap_unit_assert=>assert_equals( act = lv_column_start
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_column_end
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_row_start
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_row_end
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_sheet
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).

***
lv_range = `$2:$7`.
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range
i_allow_1dim_range = abap_true
IMPORTING e_column_start = lv_column_start
e_column_end = lv_column_end
e_row_start = lv_row_start
e_row_end = lv_row_end
e_sheet = lv_sheet ).

cl_abap_unit_assert=>assert_equals( act = lv_column_start
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_column_end
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_row_start
exp = '2'
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_row_end
exp = '7'
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_sheet
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
***
lv_range = `Sheet3!$D:$I`.
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range
i_allow_1dim_range = abap_true
IMPORTING e_column_start = lv_column_start
e_column_end = lv_column_end
e_row_start = lv_row_start
e_row_end = lv_row_end
e_sheet = lv_sheet ).

cl_abap_unit_assert=>assert_equals( act = lv_column_start
exp = 'D'
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_column_end
exp = 'I'
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_row_start
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_row_end
exp = ''
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
cl_abap_unit_assert=>assert_equals( act = lv_sheet
exp = 'Sheet3'
msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ).
ENDMETHOD. "convert_range2column_a_row


Expand Down
23 changes: 13 additions & 10 deletions src/zcl_excel_reader_2007.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -2081,6 +2081,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
WHEN zif_excel_sheet_printsettings=>gcv_print_title_name.
lo_range = <worksheet>-worksheet->add_new_range( ).
lo_range->name = zif_excel_sheet_printsettings=>gcv_print_title_name.
*--------------------------------------------------------------------*
* This might be a temporary solution. Maybe ranges get be reworked
* to support areas consisting of multiple rectangles
Expand All @@ -2107,11 +2108,12 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
ENDIF.
* 1st range
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1
IMPORTING e_column_start = lv_col_start_alpha
e_column_end = lv_col_end_alpha
e_row_start = lv_row_start
e_row_end = lv_row_end ).
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1
i_allow_1dim_range = abap_true
IMPORTING e_column_start = lv_col_start_alpha
e_column_end = lv_col_end_alpha
e_row_start = lv_row_start
e_row_end = lv_row_end ).
IF lv_col_start_alpha IS NOT INITIAL.
<worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha
iv_columns_to = lv_col_end_alpha ).
Expand All @@ -2122,11 +2124,12 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.

* 2nd range
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2
IMPORTING e_column_start = lv_col_start_alpha
e_column_end = lv_col_end_alpha
e_row_start = lv_row_start
e_row_end = lv_row_end ).
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2
i_allow_1dim_range = abap_true
IMPORTING e_column_start = lv_col_start_alpha
e_column_end = lv_col_end_alpha
e_row_start = lv_row_start
e_row_end = lv_row_end ).
IF lv_col_start_alpha IS NOT INITIAL.
<worksheet>-worksheet->zif_excel_sheet_printsettings~set_print_repeat_columns( iv_columns_from = lv_col_start_alpha
iv_columns_to = lv_col_end_alpha ).
Expand Down