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

@ -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
@ -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.

View File

@ -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

View File

@ -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
@ -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 ).
@ -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 ).