fix print titles range read and write #801 (#862)

* fix print titles range read and write

* remove empty line in method definition
This commit is contained in:
Domi Bigl 2021-10-30 19:54:46 +02:00 committed by GitHub
parent 5da41aaab2
commit 6d12c57f27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 152 additions and 26 deletions

View File

@ -47,6 +47,7 @@ CLASS zcl_excel_common DEFINITION
CLASS-METHODS convert_range2column_a_row CLASS-METHODS convert_range2column_a_row
IMPORTING IMPORTING
!i_range TYPE clike !i_range TYPE clike
!i_allow_1dim_range TYPE abap_bool DEFAULT abap_false
EXPORTING EXPORTING
!e_column_start TYPE zexcel_cell_column_alpha !e_column_start TYPE zexcel_cell_column_alpha
!e_column_end TYPE zexcel_cell_column_alpha !e_column_end TYPE zexcel_cell_column_alpha
@ -55,6 +56,12 @@ CLASS zcl_excel_common DEFINITION
!e_sheet TYPE clike !e_sheet TYPE clike
RAISING RAISING
zcx_excel . 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 CLASS-METHODS date_to_excel_string
IMPORTING IMPORTING
!ip_value TYPE d !ip_value TYPE d
@ -570,21 +577,43 @@ CLASS ZCL_EXCEL_COMMON IMPLEMENTATION.
REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''. REPLACE ALL OCCURRENCES OF '$' IN lv_range WITH ''.
SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end. SPLIT lv_range AT ':' INTO lv_columnrow_start lv_columnrow_end.
convert_columnrow2column_a_row( EXPORTING IF i_allow_1dim_range = abap_true.
i_columnrow = lv_columnrow_start convert_columnrow2column_o_row( EXPORTING i_columnrow = lv_columnrow_start
IMPORTING IMPORTING e_column = e_column_start
e_column = e_column_start
e_row = e_row_start ). e_row = e_row_start ).
convert_columnrow2column_a_row( EXPORTING convert_columnrow2column_o_row( EXPORTING i_columnrow = lv_columnrow_end
i_columnrow = lv_columnrow_end IMPORTING e_column = e_column_end
IMPORTING
e_column = e_column_end
e_row = e_row_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 e_sheet = unescape_string( lv_sheet ). " Return in unescaped form
ENDMETHOD. 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. METHOD date_to_excel_string.
DATA: lv_date_diff TYPE i. DATA: lv_date_diff TYPE i.

View File

@ -842,6 +842,100 @@ CLASS lcl_excel_common_test IMPLEMENTATION.
exp = '' exp = ''
msg = 'Conversion of range failed' msg = 'Conversion of range failed'
level = if_aunit_constants=>critical ). 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 ENDMETHOD. "convert_range2column_a_row

View File

@ -2081,6 +2081,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------* *--------------------------------------------------------------------*
WHEN zif_excel_sheet_printsettings=>gcv_print_title_name. WHEN zif_excel_sheet_printsettings=>gcv_print_title_name.
lo_range = <worksheet>-worksheet->add_new_range( ). 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 * This might be a temporary solution. Maybe ranges get be reworked
* to support areas consisting of multiple rectangles * to support areas consisting of multiple rectangles
@ -2108,6 +2109,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF. ENDIF.
* 1st range * 1st range
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_1 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 IMPORTING e_column_start = lv_col_start_alpha
e_column_end = lv_col_end_alpha e_column_end = lv_col_end_alpha
e_row_start = lv_row_start e_row_start = lv_row_start
@ -2123,6 +2125,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* 2nd range * 2nd range
zcl_excel_common=>convert_range2column_a_row( EXPORTING i_range = lv_range_value_2 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 IMPORTING e_column_start = lv_col_start_alpha
e_column_end = lv_col_end_alpha e_column_end = lv_col_end_alpha
e_row_start = lv_row_start e_row_start = lv_row_start