From fd83cbc1123d1fd81671bd65a3680f4b3fba6b27 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 11 Nov 2021 10:19:41 +0100 Subject: [PATCH 01/19] extract font width logic to new class (#882) * extract font width logic to new class * rename importing parameters * fixes * Update src/zcl_excel_font.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_font.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_worksheet.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_font.clas.testclasses.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * Update src/zcl_excel_font.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> * fix syntax * Update src/zcl_excel_font.clas.abap Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- src/zcl_excel_font.clas.abap | 183 +++++++++++++++++++++++ src/zcl_excel_font.clas.testclasses.abap | 27 ++++ src/zcl_excel_font.clas.xml | 17 +++ src/zcl_excel_worksheet.clas.abap | 166 ++------------------ src/zcl_excel_worksheet.clas.xml | 6 - 5 files changed, 236 insertions(+), 163 deletions(-) create mode 100644 src/zcl_excel_font.clas.abap create mode 100644 src/zcl_excel_font.clas.testclasses.abap create mode 100644 src/zcl_excel_font.clas.xml diff --git a/src/zcl_excel_font.clas.abap b/src/zcl_excel_font.clas.abap new file mode 100644 index 0000000..ceaeea1 --- /dev/null +++ b/src/zcl_excel_font.clas.abap @@ -0,0 +1,183 @@ +CLASS zcl_excel_font DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + TYPES: + BEGIN OF mty_s_font_metric, + char TYPE c LENGTH 1, + char_width TYPE tdcwidths, + END OF mty_s_font_metric . + TYPES: + mty_th_font_metrics + TYPE HASHED TABLE OF mty_s_font_metric + WITH UNIQUE KEY char . + TYPES: + BEGIN OF mty_s_font_cache, + font_name TYPE zexcel_style_font_name, + font_height TYPE tdfontsize, + flag_bold TYPE abap_bool, + flag_italic TYPE abap_bool, + th_font_metrics TYPE mty_th_font_metrics, + END OF mty_s_font_cache . + TYPES: + mty_th_font_cache + TYPE HASHED TABLE OF mty_s_font_cache + WITH UNIQUE KEY font_name font_height flag_bold flag_italic . + + CONSTANTS lc_default_font_height TYPE tdfontsize VALUE '110' ##NO_TEXT. + CONSTANTS lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri' ##NO_TEXT. + CLASS-DATA mth_font_cache TYPE mty_th_font_cache . + + CLASS-METHODS calculate_text_width + IMPORTING + !iv_font_name TYPE zexcel_style_font_name + !iv_font_height TYPE tdfontsize + !iv_flag_bold TYPE abap_bool + !iv_flag_italic TYPE abap_bool + !iv_cell_value TYPE zexcel_cell_value + RETURNING + VALUE(rv_width) TYPE float . + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS ZCL_EXCEL_FONT IMPLEMENTATION. + + + METHOD calculate_text_width. + + CONSTANTS lc_excel_cell_padding TYPE float VALUE '0.75'. + + DATA: ld_current_character TYPE c LENGTH 1, + lt_itcfc TYPE STANDARD TABLE OF itcfc, + ld_offset TYPE i, + ld_length TYPE i, + ld_uccp TYPE i, + ls_font_metric TYPE mty_s_font_metric, + ld_width_from_font_metrics TYPE i, + ld_font_family TYPE itcfh-tdfamily, + lt_font_families LIKE STANDARD TABLE OF ld_font_family, + ls_font_cache TYPE mty_s_font_cache. + + FIELD-SYMBOLS: TYPE mty_s_font_cache, + TYPE mty_s_font_metric, + TYPE itcfc. + + " Check if the same font (font name and font attributes) was already + " used before + READ TABLE mth_font_cache + WITH TABLE KEY + font_name = iv_font_name + font_height = iv_font_height + flag_bold = iv_flag_bold + flag_italic = iv_flag_italic + ASSIGNING . + + IF sy-subrc <> 0. + " Font is used for the first time + " Add the font to our local font cache + ls_font_cache-font_name = iv_font_name. + ls_font_cache-font_height = iv_font_height. + ls_font_cache-flag_bold = iv_flag_bold. + ls_font_cache-flag_italic = iv_flag_italic. + INSERT ls_font_cache INTO TABLE mth_font_cache + ASSIGNING . + + " Determine the SAPscript font family name from the Excel + " font name + SELECT tdfamily + FROM tfo01 + INTO TABLE lt_font_families + UP TO 1 ROWS + WHERE tdtext = iv_font_name + ORDER BY PRIMARY KEY. + + " Check if a matching font family was found + " Fonts can be uploaded from TTF files using transaction SE73 + IF lines( lt_font_families ) > 0. + READ TABLE lt_font_families INDEX 1 INTO ld_font_family. + + " Load font metrics (returns a table with the size of each letter + " in the font) + CALL FUNCTION 'LOAD_FONT' + EXPORTING + family = ld_font_family + height = iv_font_height + printer = 'SWIN' + bold = iv_flag_bold + italic = iv_flag_italic + TABLES + metric = lt_itcfc + EXCEPTIONS + font_family = 1 + codepage = 2 + device_type = 3 + OTHERS = 4. + IF sy-subrc <> 0. + CLEAR lt_itcfc. + ENDIF. + + " For faster access, convert each character number to the actual + " character, and store the characters and their sizes in a hash + " table + LOOP AT lt_itcfc ASSIGNING . + ld_uccp = -cpcharno. + ls_font_metric-char = + cl_abap_conv_in_ce=>uccpi( ld_uccp ). + ls_font_metric-char_width = -tdcwidths. + INSERT ls_font_metric + INTO TABLE -th_font_metrics. + ENDLOOP. + + ENDIF. + ENDIF. + + " Calculate the cell width + " If available, use font metrics + IF lines( -th_font_metrics ) = 0. + " Font metrics are not available + " -> Calculate the cell width using only the font size + ld_length = strlen( iv_cell_value ). + rv_width = ld_length * iv_font_height / lc_default_font_height + lc_excel_cell_padding. + + ELSE. + " Font metrics are available + + " Calculate the size of the text by adding the sizes of each + " letter + ld_length = strlen( iv_cell_value ). + DO ld_length TIMES. + " Subtract 1, because the first character is at offset 0 + ld_offset = sy-index - 1. + + " Read the current character from the cell value + ld_current_character = iv_cell_value+ld_offset(1). + + " Look up the size of the current letter + READ TABLE -th_font_metrics + WITH TABLE KEY char = ld_current_character + ASSIGNING . + IF sy-subrc = 0. + " The size of the letter is known + " -> Add the actual size of the letter + ADD -char_width TO ld_width_from_font_metrics. + ELSE. + " The size of the letter is unknown + " -> Add the font height as the default letter size + ADD iv_font_height TO ld_width_from_font_metrics. + ENDIF. + ENDDO. + + " Add cell padding (Excel makes columns a bit wider than the space + " that is needed for the text itself) and convert unit + " (division by 100) + rv_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. + ENDIF. + + ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_excel_font.clas.testclasses.abap b/src/zcl_excel_font.clas.testclasses.abap new file mode 100644 index 0000000..9801cec --- /dev/null +++ b/src/zcl_excel_font.clas.testclasses.abap @@ -0,0 +1,27 @@ +CLASS ltcl_Test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL. + + PRIVATE SECTION. + METHODS calculate FOR TESTING RAISING cx_static_check. +ENDCLASS. + + +CLASS ltcl_Test IMPLEMENTATION. + + METHOD calculate. + + DATA lv_width TYPE f. + + lv_width = zcl_excel_font=>calculate_text_width( + iv_font_name = 'foobar' + iv_font_height = 20 + iv_flag_bold = abap_false + iv_flag_italic = abap_false + iv_cell_value = 'hello world' ). + + cl_abap_unit_assert=>assert_equals( + act = lv_width + exp = '2.75' ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zcl_excel_font.clas.xml b/src/zcl_excel_font.clas.xml new file mode 100644 index 0000000..d846847 --- /dev/null +++ b/src/zcl_excel_font.clas.xml @@ -0,0 +1,17 @@ + + + + + + ZCL_EXCEL_FONT + E + abap2xlsx - Font Logic + 1 + X + X + X + X + + + + diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 4941db1..ef0e86b 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -620,30 +620,6 @@ CLASS zcl_excel_worksheet DEFINITION PROTECTED SECTION. PRIVATE SECTION. - TYPES: - BEGIN OF mty_s_font_metric, - char TYPE c LENGTH 1, - char_width TYPE tdcwidths, - END OF mty_s_font_metric . - TYPES: - mty_th_font_metrics - TYPE HASHED TABLE OF mty_s_font_metric - WITH UNIQUE KEY char . - TYPES: - BEGIN OF mty_s_font_cache, - font_name TYPE zexcel_style_font_name, - font_height TYPE tdfontsize, - flag_bold TYPE abap_bool, - flag_italic TYPE abap_bool, - th_font_metrics TYPE mty_th_font_metrics, - END OF mty_s_font_cache . - TYPES: - mty_th_font_cache - TYPE HASHED TABLE OF mty_s_font_cache - WITH UNIQUE KEY font_name font_height flag_bold flag_italic . -* types: -* mty_ts_row_dimension TYPE SORTED TABLE OF zexcel_s_worksheet_rowdimensio WITH UNIQUE KEY row . - *"* private components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! DATA active_cell TYPE zexcel_s_cell_data . @@ -663,7 +639,6 @@ CLASS zcl_excel_worksheet DEFINITION DATA hyperlinks TYPE REF TO cl_object_collection . DATA lower_cell TYPE zexcel_s_cell_data . DATA mo_pagebreaks TYPE REF TO zcl_excel_worksheet_pagebreaks . - CLASS-DATA mth_font_cache TYPE mty_th_font_cache . DATA mt_row_outlines TYPE mty_ts_outlines_row . DATA print_title_col_from TYPE zexcel_cell_column_alpha . DATA print_title_col_to TYPE zexcel_cell_column_alpha . @@ -1222,13 +1197,7 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. * - Add cell padding to simulate Excel behavior *--------------------------------------------------------------------* - CONSTANTS: - lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT - lc_default_font_height TYPE tdfontsize VALUE '110', - lc_excel_cell_padding TYPE float VALUE '0.75'. - DATA: ld_cell_value TYPE zexcel_cell_value, - ld_current_character TYPE c LENGTH 1, ld_style_guid TYPE zexcel_cell_style, ls_stylemapping TYPE zexcel_s_stylemapping, lo_table_object TYPE REF TO object, @@ -1240,21 +1209,8 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. ld_flag_italic TYPE abap_bool VALUE abap_false, ld_date TYPE d, ld_date_char TYPE c LENGTH 50, - ld_font_height TYPE tdfontsize VALUE lc_default_font_height, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_length TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - ld_font_name TYPE zexcel_style_font_name VALUE lc_default_font_name, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. - - FIELD-SYMBOLS: TYPE mty_s_font_cache, - TYPE mty_s_font_metric, - TYPE itcfc. + ld_font_height TYPE tdfontsize VALUE zcl_excel_font=>lc_default_font_height, + ld_font_name TYPE zexcel_style_font_name VALUE zcl_excel_font=>lc_default_font_name. " Determine cell content and cell style me->get_cell( EXPORTING ip_column = ip_column @@ -1340,116 +1296,12 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. ENDTRY. ENDIF. - " Check if the same font (font name and font attributes) was already - " used before - READ TABLE mth_font_cache - WITH TABLE KEY - font_name = ld_font_name - font_height = ld_font_height - flag_bold = ld_flag_bold - flag_italic = ld_flag_italic - ASSIGNING . - - IF sy-subrc <> 0. - " Font is used for the first time - " Add the font to our local font cache - ls_font_cache-font_name = ld_font_name. - ls_font_cache-font_height = ld_font_height. - ls_font_cache-flag_bold = ld_flag_bold. - ls_font_cache-flag_italic = ld_flag_italic. - INSERT ls_font_cache INTO TABLE mth_font_cache - ASSIGNING . - - " Determine the SAPscript font family name from the Excel - " font name - SELECT tdfamily - FROM tfo01 - INTO TABLE lt_font_families - UP TO 1 ROWS - WHERE tdtext = ld_font_name - ORDER BY PRIMARY KEY. - - " Check if a matching font family was found - " Fonts can be uploaded from TTF files using transaction SE73 - IF lines( lt_font_families ) > 0. - READ TABLE lt_font_families INDEX 1 INTO ld_font_family. - - " Load font metrics (returns a table with the size of each letter - " in the font) - CALL FUNCTION 'LOAD_FONT' - EXPORTING - family = ld_font_family - height = ld_font_height - printer = 'SWIN' - bold = ld_flag_bold - italic = ld_flag_italic - TABLES - metric = lt_itcfc - EXCEPTIONS - font_family = 1 - codepage = 2 - device_type = 3 - OTHERS = 4. - IF sy-subrc <> 0. - CLEAR lt_itcfc. - ENDIF. - - " For faster access, convert each character number to the actual - " character, and store the characters and their sizes in a hash - " table - LOOP AT lt_itcfc ASSIGNING . - ld_uccp = -cpcharno. - ls_font_metric-char = - cl_abap_conv_in_ce=>uccpi( ld_uccp ). - ls_font_metric-char_width = -tdcwidths. - INSERT ls_font_metric - INTO TABLE -th_font_metrics. - ENDLOOP. - - ENDIF. - ENDIF. - - " Calculate the cell width - " If available, use font metrics - IF lines( -th_font_metrics ) = 0. - " Font metrics are not available - " -> Calculate the cell width using only the font size - ld_length = strlen( ld_cell_value ). - ep_width = ld_length * ld_font_height / lc_default_font_height + lc_excel_cell_padding. - - ELSE. - " Font metrics are available - - " Calculate the size of the text by adding the sizes of each - " letter - ld_length = strlen( ld_cell_value ). - DO ld_length TIMES. - " Subtract 1, because the first character is at offset 0 - ld_offset = sy-index - 1. - - " Read the current character from the cell value - ld_current_character = ld_cell_value+ld_offset(1). - - " Look up the size of the current letter - READ TABLE -th_font_metrics - WITH TABLE KEY char = ld_current_character - ASSIGNING . - IF sy-subrc = 0. - " The size of the letter is known - " -> Add the actual size of the letter - ADD -char_width TO ld_width_from_font_metrics. - ELSE. - " The size of the letter is unknown - " -> Add the font height as the default letter size - ADD ld_font_height TO ld_width_from_font_metrics. - ENDIF. - ENDDO. - - " Add cell padding (Excel makes columns a bit wider than the space - " that is needed for the text itself) and convert unit - " (division by 100) - ep_width = ld_width_from_font_metrics / 100 + lc_excel_cell_padding. - ENDIF. + ep_width = zcl_excel_font=>calculate_text_width( + iv_font_name = ld_font_name + iv_font_height = ld_font_height + iv_flag_bold = ld_flag_bold + iv_flag_italic = ld_flag_italic + iv_cell_value = ld_cell_value ). " If the current cell contains an auto filter, make it a bit wider. " The size used by the auto filter button does not depend on the font @@ -1458,7 +1310,7 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. ADD 2 TO ep_width. ENDIF. - ENDMETHOD. "CALCULATE_CELL_WIDTH + ENDMETHOD. METHOD calculate_column_widths. diff --git a/src/zcl_excel_worksheet.clas.xml b/src/zcl_excel_worksheet.clas.xml index 50df7e0..a9bcd5e 100644 --- a/src/zcl_excel_worksheet.clas.xml +++ b/src/zcl_excel_worksheet.clas.xml @@ -753,12 +753,6 @@ E Pagebreaks - - ZCL_EXCEL_WORKSHEET - MTH_FONT_CACHE - E - Hash table containing fonts and their metrics - ZCL_EXCEL_WORKSHEET MTY_MERGE From 8f65718db4e4210d3f02810ee8ca6c233a807fed Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sun, 14 Nov 2021 18:36:15 +0100 Subject: [PATCH 02/19] SET_AREA/SET_AREA_FORMULA: set value or formula for whole area instead top/left only (#869) * Fix #867 * Behavior to depend on ip_merge / ip_area parameters Co-authored-by: sandraros Co-authored-by: Abo --- src/zcl_excel_worksheet.clas.abap | 115 +++++++++++++++++++++++++----- 1 file changed, 97 insertions(+), 18 deletions(-) diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index ef0e86b..432a945 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -75,10 +75,15 @@ CLASS zcl_excel_worksheet DEFINITION END OF mty_merge . TYPES: mty_ts_merge TYPE SORTED TABLE OF mty_merge WITH UNIQUE KEY table_line . + TYPES ty_area TYPE c LENGTH 1. CONSTANTS c_break_column TYPE zexcel_break VALUE 2. "#EC NOTEXT CONSTANTS c_break_none TYPE zexcel_break VALUE 0. "#EC NOTEXT CONSTANTS c_break_row TYPE zexcel_break VALUE 1. "#EC NOTEXT + CONSTANTS: BEGIN OF c_area, + whole TYPE ty_area VALUE 'W', "#EC NOTEXT + topleft TYPE ty_area VALUE 'T', "#EC NOTEXT + END OF c_area. DATA excel TYPE REF TO zcl_excel READ-ONLY . DATA print_gridlines TYPE zexcel_print_gridlines READ-ONLY VALUE abap_false. "#EC NOTEXT DATA sheet_content TYPE zexcel_t_cell_data . @@ -579,6 +584,7 @@ CLASS zcl_excel_worksheet DEFINITION !ip_row_to TYPE zexcel_cell_row OPTIONAL !ip_formula TYPE zexcel_cell_formula !ip_merge TYPE abap_bool OPTIONAL + !ip_area TYPE ty_area DEFAULT c_area-topleft RAISING zcx_excel . METHODS set_area_style @@ -602,6 +608,7 @@ CLASS zcl_excel_worksheet DEFINITION !ip_data_type TYPE zexcel_cell_data_type OPTIONAL !ip_abap_type TYPE abap_typekind OPTIONAL !ip_merge TYPE abap_bool OPTIONAL + !ip_area TYPE ty_area DEFAULT c_area-topleft RAISING zcx_excel . METHODS get_header_footer_drawings @@ -3092,7 +3099,10 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. METHOD set_area. DATA: lv_row TYPE zexcel_cell_row, + lv_row_start TYPE zexcel_cell_row, lv_row_end TYPE zexcel_cell_row, + lv_column_int TYPE zexcel_cell_column_alpha, + lv_column TYPE zexcel_cell_column_alpha, lv_column_start TYPE zexcel_cell_column_alpha, lv_column_end TYPE zexcel_cell_column_alpha, lv_column_start_int TYPE zexcel_cell_column_alpha, @@ -3123,26 +3133,71 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. ENDIF. - IF ip_data_type IS SUPPLIED OR - ip_abap_type IS SUPPLIED. + " IP_AREA has been added to maintain ascending compatibility (see discussion in PR 869) + IF ip_merge = abap_true OR ip_area = c_area-topleft. - me->set_cell( ip_column = lv_column_start - ip_row = lv_row - ip_value = ip_value - ip_formula = ip_formula - ip_style = ip_style - ip_hyperlink = ip_hyperlink - ip_data_type = ip_data_type - ip_abap_type = ip_abap_type ). + IF ip_data_type IS SUPPLIED OR + ip_abap_type IS SUPPLIED. + + me->set_cell( ip_column = lv_column_start + ip_row = lv_row + ip_value = ip_value + ip_formula = ip_formula + ip_style = ip_style + ip_hyperlink = ip_hyperlink + ip_data_type = ip_data_type + ip_abap_type = ip_abap_type ). + + ELSE. + + me->set_cell( ip_column = lv_column_start + ip_row = lv_row + ip_value = ip_value + ip_formula = ip_formula + ip_style = ip_style + ip_hyperlink = ip_hyperlink ). + + ENDIF. ELSE. - me->set_cell( ip_column = lv_column_start - ip_row = lv_row - ip_value = ip_value - ip_formula = ip_formula - ip_style = ip_style - ip_hyperlink = ip_hyperlink ). + lv_column_int = lv_column_start_int. + lv_row_start = lv_row. + WHILE lv_column_int <= lv_column_end_int. + + lv_column = zcl_excel_common=>convert_column2alpha( lv_column_int ). + lv_row = lv_row_start. + + WHILE lv_row <= lv_row_end. + + IF ip_data_type IS SUPPLIED OR + ip_abap_type IS SUPPLIED. + + me->set_cell( ip_column = lv_column + ip_row = lv_row + ip_value = ip_value + ip_formula = ip_formula + ip_style = ip_style + ip_hyperlink = ip_hyperlink + ip_data_type = ip_data_type + ip_abap_type = ip_abap_type ). + + ELSE. + + me->set_cell( ip_column = lv_column + ip_row = lv_row + ip_value = ip_value + ip_formula = ip_formula + ip_style = ip_style + ip_hyperlink = ip_hyperlink ). + + ENDIF. + + ADD 1 TO lv_row. + ENDWHILE. + + ADD 1 TO lv_column_int. + ENDWHILE. ENDIF. @@ -3169,6 +3224,7 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. METHOD set_area_formula. DATA: ld_row TYPE zexcel_cell_row, + ld_row_start TYPE zexcel_cell_row, ld_row_end TYPE zexcel_cell_row, ld_column TYPE zexcel_cell_column_alpha, ld_column_end TYPE zexcel_cell_column_alpha, @@ -3197,8 +3253,31 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. error = 'Wrong Merging Parameters'. ENDIF. - me->set_cell_formula( ip_column = ld_column ip_row = ld_row - ip_formula = ip_formula ). + " IP_AREA has been added to maintain ascending compatibility (see discussion in PR 869) + IF ip_merge = abap_true OR ip_area = c_area-topleft. + + me->set_cell_formula( ip_column = ld_column ip_row = ld_row + ip_formula = ip_formula ). + + ELSE. + + ld_row_start = ld_row. + WHILE ld_column_int <= ld_column_end_int. + + ld_column = zcl_excel_common=>convert_column2alpha( ld_column_int ). + ld_row = ld_row_start. + WHILE ld_row <= ld_row_end. + + me->set_cell_formula( ip_column = ld_column ip_row = ld_row + ip_formula = ip_formula ). + + ADD 1 TO ld_row. + ENDWHILE. + + ADD 1 TO ld_column_int. + ENDWHILE. + + ENDIF. IF ip_merge IS SUPPLIED AND ip_merge = abap_true. me->set_merge( ip_column_start = ld_column ip_row = ld_row From 68707e1469e8a39982f0a672fb8788c3be15337f Mon Sep 17 00:00:00 2001 From: Abo Date: Sun, 21 Nov 2021 16:44:10 +0100 Subject: [PATCH 03/19] split convert_column2alpha (#892) --- src/zcl_excel_common.clas.testclasses.abap | 27 +++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/zcl_excel_common.clas.testclasses.abap b/src/zcl_excel_common.clas.testclasses.abap index 903fda0..81e3720 100644 --- a/src/zcl_excel_common.clas.testclasses.abap +++ b/src/zcl_excel_common.clas.testclasses.abap @@ -19,7 +19,10 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING f_cut TYPE REF TO zcl_excel_common. "class under test METHODS: setup. - METHODS: convert_column2alpha FOR TESTING. + METHODS: convert_column2alpha_simple FOR TESTING. + METHODS: convert_column2alpha_maxcol FOR TESTING. + METHODS: convert_column2alpha_last FOR TESTING. + METHODS: convert_column2alpha_oob FOR TESTING. METHODS convert_column2int_basic FOR TESTING. METHODS convert_column2int_maxcol FOR TESTING. METHODS convert_column2int_oob_empty FOR TESTING. @@ -118,7 +121,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. ENDMETHOD. "setup - METHOD convert_column2alpha. + METHOD convert_column2alpha_simple. * ============================ DATA ep_column TYPE zexcel_cell_column_alpha. @@ -138,6 +141,12 @@ CLASS lcl_excel_common_test IMPLEMENTATION. level = if_aunit_constants=>critical " Error Severity ). ENDTRY. + ENDMETHOD. "convert_column2alpha_simple + + + METHOD convert_column2alpha_maxcol. +* ============================ + DATA ep_column TYPE zexcel_cell_column_alpha. * Test 2. Max column for OXML #16,384 = XFD TRY. @@ -155,6 +164,12 @@ CLASS lcl_excel_common_test IMPLEMENTATION. level = if_aunit_constants=>critical " Error Severity ). ENDTRY. + ENDMETHOD. "convert_column2alpha_maxcol + + + METHOD convert_column2alpha_last. +* ============================ + DATA ep_column TYPE zexcel_cell_column_alpha. * Test 3. Index 0 is out of bounds TRY. @@ -172,6 +187,12 @@ CLASS lcl_excel_common_test IMPLEMENTATION. level = if_aunit_constants=>fatal ). ENDTRY. + ENDMETHOD. "convert_column2alpha_last + + + METHOD convert_column2alpha_oob. +* ============================ + DATA ep_column TYPE zexcel_cell_column_alpha. * Test 4. Exception should be thrown index out of bounds TRY. @@ -191,7 +212,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. level = if_aunit_constants=>tolerable ). ENDTRY. - ENDMETHOD. "convert_Column2alpha + ENDMETHOD. "convert_Column2alpha_oob METHOD convert_column2int_basic. From dbd260da2c87b8e71be6b7f3661ef51aa5518d45 Mon Sep 17 00:00:00 2001 From: Mike Pokraka Date: Wed, 24 Nov 2021 18:40:45 +0000 Subject: [PATCH 04/19] Add exeption handling (#889) * Add exeption handling * Lint fixes * Revert back keywords -> upper case (test classes of zcl_excel_worksheet) * revert pretty print->diff shows only excp handl proposing to create a different pull request with only pretty print * proposing tiny fixes 1) a few alignment fixes 2) ls_message renamed to lv_message 3) message ... type 'E' -> message ... type 'I' display like 'E' to avoid short dumps Co-authored-by: John Doe Co-authored-by: sandraros Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- src/demos/zdemo_excel26.prog.abap | 15 +++-- src/demos/zdemo_excel27.prog.abap | 20 ++++++- src/demos/zdemo_excel32.prog.abap | 11 +++- .../zdemo_excel_outputopt_incl.prog.abap | 3 +- src/demos/zdemo_excel_wda01.wdyn.xml | 60 ++++++++++++++----- src/zcl_excel_autofilter.clas.abap | 4 +- src/zcl_excel_column.clas.abap | 8 ++- src/zcl_excel_converter.clas.abap | 12 +++- src/zcl_excel_reader_2007.clas.abap | 8 ++- src/zcl_excel_reader_huge_file.clas.abap | 7 ++- src/zcl_excel_worksheet.clas.abap | 20 +++++-- src/zcl_excel_worksheet.clas.testclasses.abap | 10 +++- src/zcl_excel_writer_2007.clas.abap | 20 +++++-- 13 files changed, 150 insertions(+), 48 deletions(-) diff --git a/src/demos/zdemo_excel26.prog.abap b/src/demos/zdemo_excel26.prog.abap index 32b7dc7..041223f 100644 --- a/src/demos/zdemo_excel26.prog.abap +++ b/src/demos/zdemo_excel26.prog.abap @@ -96,6 +96,8 @@ START-OF-SELECTION. * ALV user command *--------------------------------------------------------------------* FORM user_command . + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. IF sy-ucomm = 'EXCEL'. * get save file path @@ -118,7 +120,12 @@ FORM user_command . INTO l_path. * export file to save file path + TRY. PERFORM export_to_excel. + CATCH zcx_excel INTO lo_error. + lv_message = lo_error->get_text( ). + MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. + ENDTRY. ENDIF. ENDFORM. " USER_COMMAND @@ -129,6 +136,9 @@ ENDFORM. " USER_COMMAND * This subroutine is principal demo session *--------------------------------------------------------------------* FORM export_to_excel RAISING zcx_excel. + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. + * create zcl_excel_worksheet object CREATE OBJECT lo_excel. @@ -136,15 +146,12 @@ FORM export_to_excel RAISING zcx_excel. lo_worksheet->set_title( ip_title = 'Sheet1' ). * write to excel using method Bin_object - TRY. lo_worksheet->bind_alv( io_alv = lo_salv it_table = gt_sbook i_top = 2 i_left = 1 ). - CATCH zcx_excel . - ENDTRY. PERFORM write_file. @@ -157,7 +164,7 @@ ENDFORM. "EXPORT_TO_EXCEL * --> p1 text * <-- p2 text *----------------------------------------------------------------------* -FORM write_file . +FORM write_file RAISING zcx_excel. DATA: lt_file TYPE solix_tab, l_bytecount TYPE i, l_file TYPE xstring. diff --git a/src/demos/zdemo_excel27.prog.abap b/src/demos/zdemo_excel27.prog.abap index 81a4733..3fcf7c3 100644 --- a/src/demos/zdemo_excel27.prog.abap +++ b/src/demos/zdemo_excel27.prog.abap @@ -10,7 +10,9 @@ REPORT zdemo_excel27. CLASS lcl_app DEFINITION. PUBLIC SECTION. - METHODS main. + METHODS main + RAISING + zcx_excel. PRIVATE SECTION. METHODS conditional_formatting_cellis IMPORTING @@ -20,14 +22,18 @@ CLASS lcl_app DEFINITION. op TYPE zexcel_condition_operator f TYPE zexcel_style_formula f2 TYPE zexcel_style_formula - numfmt TYPE string. + numfmt TYPE string + RAISING + zcx_excel. METHODS conditional_formatting_textfun IMPORTING column TYPE simple row TYPE zexcel_cell_row txtfun TYPE zcl_excel_style_cond=>tv_textfunction text TYPE string - numfmt TYPE string. + numfmt TYPE string + RAISING + zcx_excel. ENDCLASS. CONSTANTS: c_fish TYPE string VALUE 'Fish'. @@ -53,8 +59,16 @@ INCLUDE zdemo_excel_outputopt_incl. START-OF-SELECTION. + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. + CREATE OBJECT lo_app. + TRY. lo_app->main( ). + CATCH zcx_excel INTO lo_error. + lv_message = lo_error->get_text( ). + MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. + ENDTRY. CLASS lcl_app IMPLEMENTATION. diff --git a/src/demos/zdemo_excel32.prog.abap b/src/demos/zdemo_excel32.prog.abap index b1915a5..f71499f 100644 --- a/src/demos/zdemo_excel32.prog.abap +++ b/src/demos/zdemo_excel32.prog.abap @@ -97,6 +97,8 @@ START-OF-SELECTION. * ALV user command *--------------------------------------------------------------------* FORM user_command . + DATA: lo_error TYPE REF TO zcx_excel, + lv_message TYPE string. * get save file path cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). @@ -117,6 +119,7 @@ FORM user_command . * export file to save file path + TRY. CASE sy-ucomm. WHEN 'EXCELBIND'. CONCATENATE l_path lv_file_separator lv_default_file_name @@ -130,6 +133,12 @@ FORM user_command . PERFORM export_to_excel_conv. ENDCASE. + + CATCH zcx_excel INTO lo_error. + lv_message = lo_error->get_text( ). + MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. + ENDTRY. + ENDFORM. " USER_COMMAND *--------------------------------------------------------------------* * FORM EXPORT_TO_EXCEL_CONV @@ -193,7 +202,7 @@ ENDFORM. "EXPORT_TO_EXCEL_BIND * --> p1 text * <-- p2 text *----------------------------------------------------------------------* -FORM write_file . +FORM write_file RAISING zcx_excel. DATA: lt_file TYPE solix_tab, l_bytecount TYPE i, l_file TYPE xstring. diff --git a/src/demos/zdemo_excel_outputopt_incl.prog.abap b/src/demos/zdemo_excel_outputopt_incl.prog.abap index 2852378..fecdc97 100644 --- a/src/demos/zdemo_excel_outputopt_incl.prog.abap +++ b/src/demos/zdemo_excel_outputopt_incl.prog.abap @@ -5,7 +5,8 @@ CLASS lcl_output DEFINITION CREATE PRIVATE. PUBLIC SECTION. CLASS-METHODS: output IMPORTING cl_excel TYPE REF TO zcl_excel - iv_writerclass_name TYPE clike OPTIONAL, + iv_writerclass_name TYPE clike OPTIONAL + RAISING zcx_excel, f4_path RETURNING VALUE(selected_folder) TYPE string, parametertexts. diff --git a/src/demos/zdemo_excel_wda01.wdyn.xml b/src/demos/zdemo_excel_wda01.wdyn.xml index 72fea4b..56c56ce 100644 --- a/src/demos/zdemo_excel_wda01.wdyn.xml +++ b/src/demos/zdemo_excel_wda01.wdyn.xml @@ -969,148 +969,176 @@ V_MAIN ONACTIONBTN_DOWNLOAD 8 - CREATE OBJECT lo_excel. + TRY. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 9 - lo_worksheet = lo_excel->get_active_worksheet( ). + CREATE OBJECT lo_excel. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 10 + lo_worksheet = lo_excel->get_active_worksheet( ). ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 11 - lo_worksheet->set_cell( ip_column = 'B' ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 12 - ip_row = '2' + lo_worksheet->set_cell( ip_column = 'B' ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 13 - ip_value = 'Welcome to Web Dynpro and abap2xlsx.' ). + ip_row = '2' ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 14 + ip_value = 'Welcome to Web Dynpro and abap2xlsx.' ). ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 15 - CREATE OBJECT lo_excel_writer. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 16 - lv_content = lo_excel_writer->zif_excel_writer~write_file( lo_excel ). + CREATE OBJECT lo_excel_writer. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 17 + lv_content = lo_excel_writer->zif_excel_writer~write_file( lo_excel ). ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 18 - DATA: lv_filename TYPE string. + CATCH zcx_excel. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 19 - lv_filename = 'wda01.xlsx'. + "Unlikely, ignore to keep demo simple. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 20 + ENDTRY. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 21 - CALL METHOD cl_wd_runtime_services=>attach_file_to_response ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 22 - EXPORTING + DATA: lv_filename TYPE string. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 23 - i_filename = lv_filename + lv_filename = 'wda01.xlsx'. ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 24 - i_content = lv_content ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 25 - i_mime_type = 'EXCEL' + CALL METHOD cl_wd_runtime_services=>attach_file_to_response ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 26 - i_in_new_window = abap_false + EXPORTING ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 27 - i_inplace = abap_false. + i_filename = lv_filename ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 28 + i_content = lv_content ZDEMO_EXCEL_WDA01 V_MAIN ONACTIONBTN_DOWNLOAD 29 + i_mime_type = 'EXCEL' + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 30 + i_in_new_window = abap_false + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 31 + i_inplace = abap_false. + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 32 + + + ZDEMO_EXCEL_WDA01 + V_MAIN + ONACTIONBTN_DOWNLOAD + 33 ENDMETHOD. diff --git a/src/zcl_excel_autofilter.clas.abap b/src/zcl_excel_autofilter.clas.abap index d578f6a..06fa438 100644 --- a/src/zcl_excel_autofilter.clas.abap +++ b/src/zcl_excel_autofilter.clas.abap @@ -33,7 +33,9 @@ CLASS zcl_excel_autofilter DEFINITION !io_sheet TYPE REF TO zcl_excel_worksheet . METHODS get_filter_area RETURNING - VALUE(rs_area) TYPE zexcel_s_autofilter_area . + VALUE(rs_area) TYPE zexcel_s_autofilter_area + RAISING + zcx_excel . METHODS get_filter_range RETURNING VALUE(r_range) TYPE zexcel_cell_value diff --git a/src/zcl_excel_column.clas.abap b/src/zcl_excel_column.clas.abap index fc94416..ebf80eb 100644 --- a/src/zcl_excel_column.clas.abap +++ b/src/zcl_excel_column.clas.abap @@ -12,7 +12,9 @@ CLASS zcl_excel_column DEFINITION IMPORTING !ip_index TYPE zexcel_cell_column_alpha !ip_worksheet TYPE REF TO zcl_excel_worksheet - !ip_excel TYPE REF TO zcl_excel . + !ip_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . METHODS get_auto_size RETURNING VALUE(r_auto_size) TYPE abap_bool . @@ -48,7 +50,9 @@ CLASS zcl_excel_column DEFINITION IMPORTING !ip_index TYPE zexcel_cell_column_alpha RETURNING - VALUE(io_column) TYPE REF TO zcl_excel_column . + VALUE(io_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel . METHODS set_outline_level IMPORTING !ip_outline_level TYPE int4 . diff --git a/src/zcl_excel_converter.clas.abap b/src/zcl_excel_converter.clas.abap index 8e599e4..25e4fd0 100644 --- a/src/zcl_excel_converter.clas.abap +++ b/src/zcl_excel_converter.clas.abap @@ -34,17 +34,23 @@ CLASS zcl_excel_converter DEFINITION EXPORTING !e_bytecount TYPE i !et_file TYPE solix_tab - !e_file TYPE xstring . + !e_file TYPE xstring + RAISING + zcx_excel . METHODS get_option RETURNING VALUE(rs_option) TYPE zexcel_s_converter_option . - METHODS open_file . + METHODS open_file + RAISING + zcx_excel . METHODS set_option IMPORTING !is_option TYPE zexcel_s_converter_option . METHODS write_file IMPORTING - !i_path TYPE string OPTIONAL . + !i_path TYPE string OPTIONAL + RAISING + zcx_excel . *"* protected components of class ZCL_EXCEL_CONVERTER *"* do not include other source files here!!! PROTECTED SECTION. diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index b8902cb..2ee2087 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -254,7 +254,9 @@ CLASS zcl_excel_reader_2007 DEFINITION METHODS load_worksheet_autofilter IMPORTING io_ixml_worksheet TYPE REF TO if_ixml_document - io_worksheet TYPE REF TO zcl_excel_worksheet. + io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel. METHODS load_worksheet_pagemargins IMPORTING !io_ixml_worksheet TYPE REF TO if_ixml_document @@ -276,7 +278,9 @@ CLASS zcl_excel_reader_2007 DEFINITION METHODS load_theme IMPORTING VALUE(iv_path) TYPE string - !ip_excel TYPE REF TO zcl_excel . + !ip_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . PRIVATE SECTION. DATA zip TYPE REF TO lcl_zip_archive . diff --git a/src/zcl_excel_reader_huge_file.clas.abap b/src/zcl_excel_reader_huge_file.clas.abap index 1a2c9ed..17b56c4 100644 --- a/src/zcl_excel_reader_huge_file.clas.abap +++ b/src/zcl_excel_reader_huge_file.clas.abap @@ -68,7 +68,9 @@ CLASS zcl_excel_reader_huge_file DEFINITION METHODS put_cell_to_worksheet IMPORTING !io_worksheet TYPE REF TO zcl_excel_worksheet - !is_cell TYPE t_cell . + !is_cell TYPE t_cell + RAISING + zcx_excel. METHODS get_shared_string IMPORTING !iv_index TYPE any @@ -88,7 +90,8 @@ CLASS zcl_excel_reader_huge_file DEFINITION !io_reader TYPE REF TO if_sxml_reader !io_worksheet TYPE REF TO zcl_excel_worksheet RAISING - lcx_not_found . + lcx_not_found + zcx_excel . METHODS get_sxml_reader IMPORTING !iv_path TYPE string diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 432a945..1c7b97b 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -111,7 +111,9 @@ CLASS zcl_excel_worksheet DEFINITION IMPORTING !ip_column TYPE simple RETURNING - VALUE(eo_column) TYPE REF TO zcl_excel_column . + VALUE(eo_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel . METHODS add_new_style_cond IMPORTING !ip_dimension_range TYPE string DEFAULT 'A1' @@ -334,7 +336,9 @@ CLASS zcl_excel_worksheet DEFINITION IMPORTING !ip_column TYPE simple RETURNING - VALUE(eo_column) TYPE REF TO zcl_excel_column . + VALUE(eo_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel . METHODS get_columns RETURNING VALUE(eo_columns) TYPE REF TO zcl_excel_columns . @@ -352,7 +356,9 @@ CLASS zcl_excel_worksheet DEFINITION VALUE(ep_size) TYPE i . METHODS get_default_column RETURNING - VALUE(eo_column) TYPE REF TO zcl_excel_column . + VALUE(eo_column) TYPE REF TO zcl_excel_column + RAISING + zcx_excel. METHODS get_default_excel_date_format RETURNING VALUE(ep_default_excel_date_format) TYPE zexcel_number_format . @@ -575,7 +581,9 @@ CLASS zcl_excel_worksheet DEFINITION !ip_column_end TYPE simple OPTIONAL !ip_row TYPE zexcel_cell_row OPTIONAL !ip_row_to TYPE zexcel_cell_row OPTIONAL - !ip_style TYPE zexcel_cell_style OPTIONAL . + !ip_style TYPE zexcel_cell_style OPTIONAL + RAISING + zcx_excel . METHODS set_area_formula IMPORTING !ip_column_start TYPE simple @@ -594,7 +602,9 @@ CLASS zcl_excel_worksheet DEFINITION !ip_row TYPE zexcel_cell_row !ip_row_to TYPE zexcel_cell_row OPTIONAL !ip_style TYPE zexcel_cell_style - !ip_merge TYPE abap_bool OPTIONAL . + !ip_merge TYPE abap_bool OPTIONAL + RAISING + zcx_excel . METHODS set_area IMPORTING !ip_column_start TYPE simple diff --git a/src/zcl_excel_worksheet.clas.testclasses.abap b/src/zcl_excel_worksheet.clas.testclasses.abap index 6117e58..e33e3cf 100644 --- a/src/zcl_excel_worksheet.clas.testclasses.abap +++ b/src/zcl_excel_worksheet.clas.testclasses.abap @@ -15,9 +15,9 @@ CLASS lcl_excel_worksheet_test DEFINITION FOR TESTING CLASS-METHODS: class_teardown. METHODS: setup. METHODS: teardown. - METHODS: set_merge FOR TESTING. - METHODS: delete_merge FOR TESTING. - METHODS: get_dimension_range FOR TESTING. + METHODS: set_merge FOR TESTING RAISING cx_static_check. + METHODS: delete_merge FOR TESTING RAISING cx_static_check. + METHODS: get_dimension_range FOR TESTING RAISING cx_static_check. ENDCLASS. "lcl_Excel_Worksheet_Test @@ -78,9 +78,13 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION. CREATE OBJECT lo_excel. + TRY. CREATE OBJECT f_cut EXPORTING ip_excel = lo_excel. + CATCH zcx_excel. + cl_abap_unit_assert=>fail( 'Could not create instance' ). + ENDTRY. ENDMETHOD. "setup diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index 4319c63..b303750 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -48,13 +48,17 @@ CLASS zcl_excel_writer_2007 DEFINITION !io_document TYPE REF TO if_ixml_document !io_worksheet TYPE REF TO zcl_excel_worksheet RETURNING - VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element . + VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element + RAISING + zcx_excel . METHODS add_further_data_to_zip IMPORTING !io_zip TYPE REF TO cl_abap_zip . METHODS create RETURNING - VALUE(ep_excel) TYPE xstring . + VALUE(ep_excel) TYPE xstring + RAISING + zcx_excel . METHODS create_content_types RETURNING VALUE(ep_content) TYPE xstring . @@ -108,7 +112,9 @@ CLASS zcl_excel_writer_2007 DEFINITION IMPORTING !io_worksheet TYPE REF TO zcl_excel_worksheet RETURNING - VALUE(ep_content) TYPE xstring . + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . METHODS create_xl_relationships RETURNING VALUE(ep_content) TYPE xstring . @@ -161,13 +167,17 @@ CLASS zcl_excel_writer_2007 DEFINITION IMPORTING !io_table TYPE REF TO zcl_excel_table RETURNING - VALUE(ep_content) TYPE xstring . + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . METHODS create_xl_theme RETURNING VALUE(ep_content) TYPE xstring . METHODS create_xl_workbook RETURNING - VALUE(ep_content) TYPE xstring . + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . METHODS get_shared_string_index IMPORTING !ip_cell_value TYPE zexcel_cell_value From d7011f715c94a6f43e48cf153e75c1749058a6db Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sun, 28 Nov 2021 20:25:35 +0100 Subject: [PATCH 05/19] Fix #893 * first part * second and last part Co-authored-by: sandraros --- src/demos/zdemo_excel26.prog.abap | 14 +- src/demos/zdemo_excel27.prog.abap | 154 ++++---- src/demos/zdemo_excel32.prog.abap | 62 ++-- src/demos/zdemo_excel48.prog.abap | 18 +- src/demos/zdemo_excel_fill_template.prog.abap | 158 ++++---- .../zexcel_template_get_types.prog.abap | 76 ++-- src/zcl_excel.clas.abap | 4 +- src/zcl_excel_autofilter.clas.abap | 4 +- src/zcl_excel_collection.clas.abap | 2 +- src/zcl_excel_collection_iterator.clas.abap | 4 +- src/zcl_excel_common.clas.abap | 72 ++-- src/zcl_excel_common.clas.testclasses.abap | 88 ++--- src/zcl_excel_converter.clas.abap | 2 +- src/zcl_excel_drawing.clas.abap | 6 +- src/zcl_excel_font.clas.abap | 22 +- src/zcl_excel_font.clas.testclasses.abap | 4 +- src/zcl_excel_reader_2007.clas.abap | 120 +++--- src/zcl_excel_reader_huge_file.clas.abap | 2 +- ...cel_reader_huge_file.clas.testclasses.abap | 344 +++++++++--------- src/zcl_excel_style_color.clas.abap | 2 +- src/zcl_excel_style_number_format.clas.abap | 4 +- src/zcl_excel_worksheet.clas.abap | 2 +- src/zcl_excel_worksheet.clas.testclasses.abap | 6 +- src/zcl_excel_writer_2007.clas.abap | 180 ++++----- src/zcl_excel_writer_csv.clas.abap | 2 +- src/zcl_excel_writer_huge_file.clas.abap | 2 +- 26 files changed, 677 insertions(+), 677 deletions(-) diff --git a/src/demos/zdemo_excel26.prog.abap b/src/demos/zdemo_excel26.prog.abap index 041223f..2b830e9 100644 --- a/src/demos/zdemo_excel26.prog.abap +++ b/src/demos/zdemo_excel26.prog.abap @@ -121,7 +121,7 @@ FORM user_command . * export file to save file path TRY. - PERFORM export_to_excel. + PERFORM export_to_excel. CATCH zcx_excel INTO lo_error. lv_message = lo_error->get_text( ). MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. @@ -146,12 +146,12 @@ FORM export_to_excel RAISING zcx_excel. lo_worksheet->set_title( ip_title = 'Sheet1' ). * write to excel using method Bin_object - lo_worksheet->bind_alv( - io_alv = lo_salv - it_table = gt_sbook - i_top = 2 - i_left = 1 - ). + lo_worksheet->bind_alv( + io_alv = lo_salv + it_table = gt_sbook + i_top = 2 + i_left = 1 + ). PERFORM write_file. diff --git a/src/demos/zdemo_excel27.prog.abap b/src/demos/zdemo_excel27.prog.abap index 3fcf7c3..8ffbeb1 100644 --- a/src/demos/zdemo_excel27.prog.abap +++ b/src/demos/zdemo_excel27.prog.abap @@ -64,7 +64,7 @@ START-OF-SELECTION. CREATE OBJECT lo_app. TRY. - lo_app->main( ). + lo_app->main( ). CATCH zcx_excel INTO lo_error. lv_message = lo_error->get_text( ). MESSAGE lv_message TYPE 'I' DISPLAY LIKE 'E'. @@ -75,94 +75,94 @@ CLASS lcl_app IMPLEMENTATION. METHOD main. - DATA: - lo_style_cond TYPE REF TO zcl_excel_style_cond, - lo_style TYPE REF TO zcl_excel_style. + DATA: + lo_style_cond TYPE REF TO zcl_excel_style_cond, + lo_style TYPE REF TO zcl_excel_style. - " Creates active sheet - CREATE OBJECT lo_excel. + " Creates active sheet + CREATE OBJECT lo_excel. - lo_style_1 = lo_excel->add_new_style( ). - lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. - lv_style_1_guid = lo_style_1->get_guid( ). + lo_style_1 = lo_excel->add_new_style( ). + lo_style_1->fill->filltype = zcl_excel_style_fill=>c_fill_solid. + lo_style_1->fill->bgcolor-rgb = zcl_excel_style_color=>c_green. + lv_style_1_guid = lo_style_1->get_guid( ). - lo_style_2 = lo_excel->add_new_style( ). - lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. - lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. - lv_style_2_guid = lo_style_2->get_guid( ). + lo_style_2 = lo_excel->add_new_style( ). + lo_style_2->fill->filltype = zcl_excel_style_fill=>c_fill_solid. + lo_style_2->fill->bgcolor-rgb = zcl_excel_style_color=>c_red. + lv_style_2_guid = lo_style_2->get_guid( ). - " Get active sheet - lo_worksheet = lo_excel->get_active_worksheet( ). - lv_title = 'Conditional formatting'. - lo_worksheet->set_title( lv_title ). - " Set values for dropdown - lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). - lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). - lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). - lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). - lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). - lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). - lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). + " Get active sheet + lo_worksheet = lo_excel->get_active_worksheet( ). + lv_title = 'Conditional formatting'. + lo_worksheet->set_title( lv_title ). + " Set values for dropdown + lo_worksheet->set_cell( ip_row = 2 ip_column = 'A' ip_value = c_fish ). + lo_worksheet->set_cell( ip_row = 4 ip_column = 'A' ip_value = 'Anchovy' ). + lo_worksheet->set_cell( ip_row = 5 ip_column = 'A' ip_value = 'Carp' ). + lo_worksheet->set_cell( ip_row = 6 ip_column = 'A' ip_value = 'Catfish' ). + lo_worksheet->set_cell( ip_row = 7 ip_column = 'A' ip_value = 'Cod' ). + lo_worksheet->set_cell( ip_row = 8 ip_column = 'A' ip_value = 'Eel' ). + lo_worksheet->set_cell( ip_row = 9 ip_column = 'A' ip_value = 'Haddock' ). - lo_range = lo_excel->add_new_range( ). - lo_range->name = c_fish. - lo_range->set_value( ip_sheet_name = lv_title - ip_start_column = 'A' - ip_start_row = 4 - ip_stop_column = 'A' - ip_stop_row = 9 ). + lo_range = lo_excel->add_new_range( ). + lo_range->name = c_fish. + lo_range->set_value( ip_sheet_name = lv_title + ip_start_column = 'A' + ip_start_row = 4 + ip_stop_column = 'A' + ip_stop_row = 9 ). - " 1st validation - lo_data_validation = lo_worksheet->add_new_data_validation( ). - lo_data_validation->type = zcl_excel_data_validation=>c_type_list. - lo_data_validation->formula1 = c_fish. - lo_data_validation->cell_row = 2. - lo_data_validation->cell_column = 'C'. - lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). + " 1st validation + lo_data_validation = lo_worksheet->add_new_data_validation( ). + lo_data_validation->type = zcl_excel_data_validation=>c_type_list. + lo_data_validation->formula1 = c_fish. + lo_data_validation->cell_row = 2. + lo_data_validation->cell_column = 'C'. + lo_worksheet->set_cell( ip_row = 2 ip_column = 'C' ip_value = 'Select a value' ). - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_cellis. - ls_cellis-formula = '"Anchovy"'. - ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. - ls_cellis-cell_style = lv_style_1_guid. - lo_style_cond->mode_cellis = ls_cellis. - lo_style_cond->priority = 1. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). + lo_style_cond = lo_worksheet->add_new_style_cond( ). + lo_style_cond->rule = zcl_excel_style_cond=>c_rule_cellis. + ls_cellis-formula = '"Anchovy"'. + ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. + ls_cellis-cell_style = lv_style_1_guid. + lo_style_cond->mode_cellis = ls_cellis. + lo_style_cond->priority = 1. + lo_style_cond->set_range( ip_start_column = 'C' + ip_start_row = 2 + ip_stop_column = 'C' + ip_stop_row = 2 ). - lo_style_cond = lo_worksheet->add_new_style_cond( ). - lo_style_cond->rule = zcl_excel_style_cond=>c_rule_cellis. - ls_cellis-formula = '"Carp"'. - ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. - ls_cellis-cell_style = lv_style_2_guid. - lo_style_cond->mode_cellis = ls_cellis. - lo_style_cond->priority = 2. - lo_style_cond->set_range( ip_start_column = 'C' - ip_start_row = 2 - ip_stop_column = 'C' - ip_stop_row = 2 ). + lo_style_cond = lo_worksheet->add_new_style_cond( ). + lo_style_cond->rule = zcl_excel_style_cond=>c_rule_cellis. + ls_cellis-formula = '"Carp"'. + ls_cellis-operator = zcl_excel_style_cond=>c_operator_equal. + ls_cellis-cell_style = lv_style_2_guid. + lo_style_cond->mode_cellis = ls_cellis. + lo_style_cond->priority = 2. + lo_style_cond->set_range( ip_start_column = 'C' + ip_start_row = 2 + ip_stop_column = 'C' + ip_stop_row = 2 ). - " Conditional formatting for all operators - conditional_formatting_cellis( column = 'C' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_equal f = '="Anchovy"' f2 = '' numfmt = 'equal to Anchovy' ). - conditional_formatting_cellis( column = 'C' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_equal f = '="Anchovy"' f2 = '' numfmt = 'equal to Anchovy' ). - conditional_formatting_cellis( column = 'D' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_notequal f = '="Anchovy"' f2 = '' numfmt = 'not equal to Anchovy' ). - conditional_formatting_cellis( column = 'E' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_between f = '="B"' f2 = '="CC"' numfmt = 'between B and CC' ). - conditional_formatting_cellis( column = 'F' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_greaterthan f = '="Catfish"' f2 = '' numfmt = 'greater than Catfish' ). - conditional_formatting_cellis( column = 'G' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_greaterthanorequal f = '="Catfish"' f2 = '' numfmt = 'greater than or equal to Catfish' ). - conditional_formatting_cellis( column = 'H' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_lessthan f = '="Catfish"' f2 = '' numfmt = 'less than Catfish' ). - conditional_formatting_cellis( column = 'I' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_lessthanorequal f = '="Catfish"' f2 = '' numfmt = 'less than or equal to Catfish' ). + " Conditional formatting for all operators + conditional_formatting_cellis( column = 'C' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_equal f = '="Anchovy"' f2 = '' numfmt = 'equal to Anchovy' ). + conditional_formatting_cellis( column = 'C' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_equal f = '="Anchovy"' f2 = '' numfmt = 'equal to Anchovy' ). + conditional_formatting_cellis( column = 'D' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_notequal f = '="Anchovy"' f2 = '' numfmt = 'not equal to Anchovy' ). + conditional_formatting_cellis( column = 'E' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_between f = '="B"' f2 = '="CC"' numfmt = 'between B and CC' ). + conditional_formatting_cellis( column = 'F' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_greaterthan f = '="Catfish"' f2 = '' numfmt = 'greater than Catfish' ). + conditional_formatting_cellis( column = 'G' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_greaterthanorequal f = '="Catfish"' f2 = '' numfmt = 'greater than or equal to Catfish' ). + conditional_formatting_cellis( column = 'H' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_lessthan f = '="Catfish"' f2 = '' numfmt = 'less than Catfish' ). + conditional_formatting_cellis( column = 'I' row = 4 rule = zcl_excel_style_cond=>c_rule_cellis op = zcl_excel_style_cond=>c_operator_lessthanorequal f = '="Catfish"' f2 = '' numfmt = 'less than or equal to Catfish' ). - " Conditional formatting for all text functions - conditional_formatting_textfun( column = 'C' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_beginswith text = 'A' numfmt = 'begins with A' ). - conditional_formatting_textfun( column = 'D' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_containstext text = 'h' numfmt = 'contains text h' ). - conditional_formatting_textfun( column = 'E' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_endswith text = 'p' numfmt = 'ends with p' ). - conditional_formatting_textfun( column = 'F' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_notcontains text = 'h' numfmt = 'not contains h' ). + " Conditional formatting for all text functions + conditional_formatting_textfun( column = 'C' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_beginswith text = 'A' numfmt = 'begins with A' ). + conditional_formatting_textfun( column = 'D' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_containstext text = 'h' numfmt = 'contains text h' ). + conditional_formatting_textfun( column = 'E' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_endswith text = 'p' numfmt = 'ends with p' ). + conditional_formatting_textfun( column = 'F' row = 6 txtfun = zcl_excel_style_cond=>c_textfunction_notcontains text = 'h' numfmt = 'not contains h' ). *** Create output - lcl_output=>output( lo_excel ). + lcl_output=>output( lo_excel ). ENDMETHOD. diff --git a/src/demos/zdemo_excel32.prog.abap b/src/demos/zdemo_excel32.prog.abap index f71499f..555d894 100644 --- a/src/demos/zdemo_excel32.prog.abap +++ b/src/demos/zdemo_excel32.prog.abap @@ -33,20 +33,20 @@ ENDCLASS. "lcl_handle_events IMPLEMENTATION * DATA DECLARATION *--------------------------------------------------------------------* -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_salv TYPE REF TO cl_salv_table, - gr_events TYPE REF TO lcl_handle_events, - lr_events TYPE REF TO cl_salv_events_table, - gt_sbook TYPE TABLE OF sbook. +DATA: lo_excel TYPE REF TO zcl_excel, + lo_worksheet TYPE REF TO zcl_excel_worksheet, + lo_salv TYPE REF TO cl_salv_table, + gr_events TYPE REF TO lcl_handle_events, + lr_events TYPE REF TO cl_salv_events_table, + gt_sbook TYPE TABLE OF sbook. DATA: l_path TYPE string, " local dir lv_workdir TYPE string, lv_file_separator TYPE c. CONSTANTS: - lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', - lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. + lv_default_file_name TYPE string VALUE '32_Export_ALV.xlsx', + lv_default_file_name2 TYPE string VALUE '32_Export_Convert.xlsx'. *--------------------------------------------------------------------* *START-OF-SELECTION *--------------------------------------------------------------------* @@ -101,38 +101,38 @@ FORM user_command . lv_message TYPE string. * get save file path - cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). - cl_gui_cfw=>flush( ). - cl_gui_frontend_services=>directory_browse( - EXPORTING initial_folder = l_path - CHANGING selected_folder = l_path ). + cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = l_path ). + cl_gui_cfw=>flush( ). + cl_gui_frontend_services=>directory_browse( + EXPORTING initial_folder = l_path + CHANGING selected_folder = l_path ). - IF l_path IS INITIAL. - cl_gui_frontend_services=>get_sapgui_workdir( - CHANGING sapworkdir = lv_workdir ). - l_path = lv_workdir. - ENDIF. + IF l_path IS INITIAL. + cl_gui_frontend_services=>get_sapgui_workdir( + CHANGING sapworkdir = lv_workdir ). + l_path = lv_workdir. + ENDIF. - cl_gui_frontend_services=>get_file_separator( - CHANGING file_separator = lv_file_separator ). + cl_gui_frontend_services=>get_file_separator( + CHANGING file_separator = lv_file_separator ). * export file to save file path TRY. - CASE sy-ucomm. - WHEN 'EXCELBIND'. - CONCATENATE l_path lv_file_separator lv_default_file_name - INTO l_path. - PERFORM export_to_excel_bind. + CASE sy-ucomm. + WHEN 'EXCELBIND'. + CONCATENATE l_path lv_file_separator lv_default_file_name + INTO l_path. + PERFORM export_to_excel_bind. - WHEN 'EXCELCONV'. + WHEN 'EXCELCONV'. - CONCATENATE l_path lv_file_separator lv_default_file_name2 - INTO l_path. - PERFORM export_to_excel_conv. + CONCATENATE l_path lv_file_separator lv_default_file_name2 + INTO l_path. + PERFORM export_to_excel_conv. - ENDCASE. + ENDCASE. CATCH zcx_excel INTO lo_error. lv_message = lo_error->get_text( ). @@ -225,7 +225,7 @@ FORM write_file RAISING zcx_excel. RECEIVING et_solix = lt_file. - l_bytecount = XSTRLEN( l_file ). + l_bytecount = xstrlen( l_file ). ELSE. " Convert to binary CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' diff --git a/src/demos/zdemo_excel48.prog.abap b/src/demos/zdemo_excel48.prog.abap index 61cf8fa..17924f2 100644 --- a/src/demos/zdemo_excel48.prog.abap +++ b/src/demos/zdemo_excel48.prog.abap @@ -6,15 +6,15 @@ REPORT zdemo_excel48. DATA: - lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_1 TYPE REF TO zcl_excel_style, - lo_style_2 TYPE REF TO zcl_excel_style, - lv_style_1_guid TYPE zexcel_cell_style, - lv_style_2_guid TYPE zexcel_cell_style, - lv_value TYPE string, - ls_rtf TYPE zexcel_s_rtf, - lt_rtf TYPE zexcel_t_rtf. + lo_excel TYPE REF TO zcl_excel, + lo_worksheet TYPE REF TO zcl_excel_worksheet, + lo_style_1 TYPE REF TO zcl_excel_style, + lo_style_2 TYPE REF TO zcl_excel_style, + lv_style_1_guid TYPE zexcel_cell_style, + lv_style_2_guid TYPE zexcel_cell_style, + lv_value TYPE string, + ls_rtf TYPE zexcel_s_rtf, + lt_rtf TYPE zexcel_t_rtf. CONSTANTS: diff --git a/src/demos/zdemo_excel_fill_template.prog.abap b/src/demos/zdemo_excel_fill_template.prog.abap index fc7ec89..39197c4 100644 --- a/src/demos/zdemo_excel_fill_template.prog.abap +++ b/src/demos/zdemo_excel_fill_template.prog.abap @@ -15,60 +15,60 @@ REPORT zdemo_excel_fill_template. * on the Excel file ZDEMO_EXCEL_TEMPLATE * from SMW0. *================= -TYPES t_number TYPE p length 16 decimals 4. +TYPES t_number TYPE p LENGTH 16 DECIMALS 4. TYPES: - begin of t_TABLE1, - PERSON type string, - SALARY type t_number, - end of t_TABLE1, + BEGIN OF t_table1, + person TYPE string, + salary TYPE t_number, + END OF t_table1, - tt_TABLE1 type standard table of t_TABLE1 with default key, + tt_table1 TYPE STANDARD TABLE OF t_table1 WITH DEFAULT KEY, - begin of t_LINE1, - CARRID type string, - CONNID type string, - FLDATE type d, - PRICE type t_number, - end of t_LINE1, + BEGIN OF t_line1, + carrid TYPE string, + connid TYPE string, + fldate TYPE d, + price TYPE t_number, + END OF t_line1, - tt_LINE1 type standard table of t_LINE1 with default key, + tt_line1 TYPE STANDARD TABLE OF t_line1 WITH DEFAULT KEY, - begin of t_TABLE2, - CARRID type string, - PRICE type t_number, - LINE1 type tt_LINE1, - end of t_TABLE2, + BEGIN OF t_table2, + carrid TYPE string, + price TYPE t_number, + line1 TYPE tt_line1, + END OF t_table2, - tt_TABLE2 type standard table of t_TABLE2 with default key, + tt_table2 TYPE STANDARD TABLE OF t_table2 WITH DEFAULT KEY, - begin of t_Sheet1, - DATE type d, - TIME type t, - USER type string, - TOTAL type t_number, - PRICE type t_number, - TABLE1 type tt_TABLE1, - TABLE2 type tt_TABLE2, - end of t_Sheet1, + BEGIN OF t_sheet1, + date TYPE d, + time TYPE t, + user TYPE string, + total TYPE t_number, + price TYPE t_number, + table1 TYPE tt_table1, + table2 TYPE tt_table2, + END OF t_sheet1, - begin of t_TABLE3, - PERSON type string, - SALARY type t_number, - end of t_TABLE3, + BEGIN OF t_table3, + person TYPE string, + salary TYPE t_number, + END OF t_table3, - tt_TABLE3 type standard table of t_TABLE3 with default key, + tt_table3 TYPE STANDARD TABLE OF t_table3 WITH DEFAULT KEY, - begin of t_Sheet2, - DATE type d, - TIME type t, - USER type string, - TOTAL type t_number, - TABLE3 type tt_TABLE3, - end of t_Sheet2. + BEGIN OF t_sheet2, + date TYPE d, + time TYPE t, + user TYPE string, + total TYPE t_number, + table3 TYPE tt_table3, + END OF t_sheet2. -DATA: lo_data type ref to ZCL_EXCEL_TEMPLATE_DATA. +DATA: lo_data TYPE REF TO zcl_excel_template_data. *================= * End of generated code *================= @@ -299,55 +299,55 @@ FORM load_smw0 RAISING zcx_excel. - DATA: lv_excel_data TYPE xstring, - lt_mime TYPE TABLE OF w3mime, - ls_key TYPE wwwdatatab, - lv_errormessage TYPE string, - lv_filesize TYPE i, - lv_filesizec TYPE c LENGTH 10. + DATA: lv_excel_data TYPE xstring, + lt_mime TYPE TABLE OF w3mime, + ls_key TYPE wwwdatatab, + lv_errormessage TYPE string, + lv_filesize TYPE i, + lv_filesizec TYPE c LENGTH 10. *--------------------------------------------------------------------* * Read file into binary string *--------------------------------------------------------------------* - ls_key-relid = 'MI'. - ls_key-objid = iv_w3objid . + ls_key-relid = 'MI'. + ls_key-objid = iv_w3objid . - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_key - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the MIME object'(004). - zcx_excel=>raise_text( lv_errormessage ). - ENDIF. + CALL FUNCTION 'WWWDATA_IMPORT' + EXPORTING + key = ls_key + TABLES + mime = lt_mime + EXCEPTIONS + OTHERS = 1. + IF sy-subrc <> 0. + lv_errormessage = 'A problem occured when reading the MIME object'(004). + zcx_excel=>raise_text( lv_errormessage ). + ENDIF. - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = ls_key-relid - objid = ls_key-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. + CALL FUNCTION 'WWWPARAMS_READ' + EXPORTING + relid = ls_key-relid + objid = ls_key-objid + name = 'filesize' + IMPORTING + value = lv_filesizec. - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = lv_excel_data - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. + lv_filesize = lv_filesizec. + CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' + EXPORTING + input_length = lv_filesize + IMPORTING + buffer = lv_excel_data + TABLES + binary_tab = lt_mime + EXCEPTIONS + failed = 1 + OTHERS = 2. *--------------------------------------------------------------------* * Parse Excel data into ZCL_EXCEL object from binary string *--------------------------------------------------------------------* - ro_excel = io_reader->load( i_excel2007 = lv_excel_data ). + ro_excel = io_reader->load( i_excel2007 = lv_excel_data ). ENDFORM. diff --git a/src/not_cloud/zexcel_template_get_types.prog.abap b/src/not_cloud/zexcel_template_get_types.prog.abap index 865bf39..7b26177 100644 --- a/src/not_cloud/zexcel_template_get_types.prog.abap +++ b/src/not_cloud/zexcel_template_get_types.prog.abap @@ -327,55 +327,55 @@ FORM load_smw0 RAISING zcx_excel. - DATA: lv_excel_data TYPE xstring, - lt_mime TYPE TABLE OF w3mime, - ls_key TYPE wwwdatatab, - lv_errormessage TYPE string, - lv_filesize TYPE i, - lv_filesizec TYPE c LENGTH 10. + DATA: lv_excel_data TYPE xstring, + lt_mime TYPE TABLE OF w3mime, + ls_key TYPE wwwdatatab, + lv_errormessage TYPE string, + lv_filesize TYPE i, + lv_filesizec TYPE c LENGTH 10. *--------------------------------------------------------------------* * Read file into binary string *--------------------------------------------------------------------* - ls_key-relid = 'MI'. - ls_key-objid = iv_w3objid . + ls_key-relid = 'MI'. + ls_key-objid = iv_w3objid . - CALL FUNCTION 'WWWDATA_IMPORT' - EXPORTING - key = ls_key - TABLES - mime = lt_mime - EXCEPTIONS - OTHERS = 1. - IF sy-subrc <> 0. - lv_errormessage = 'A problem occured when reading the MIME object'(004). - zcx_excel=>raise_text( lv_errormessage ). - ENDIF. + CALL FUNCTION 'WWWDATA_IMPORT' + EXPORTING + key = ls_key + TABLES + mime = lt_mime + EXCEPTIONS + OTHERS = 1. + IF sy-subrc <> 0. + lv_errormessage = 'A problem occured when reading the MIME object'(004). + zcx_excel=>raise_text( lv_errormessage ). + ENDIF. - CALL FUNCTION 'WWWPARAMS_READ' - EXPORTING - relid = ls_key-relid - objid = ls_key-objid - name = 'filesize' - IMPORTING - value = lv_filesizec. + CALL FUNCTION 'WWWPARAMS_READ' + EXPORTING + relid = ls_key-relid + objid = ls_key-objid + name = 'filesize' + IMPORTING + value = lv_filesizec. - lv_filesize = lv_filesizec. - CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' - EXPORTING - input_length = lv_filesize - IMPORTING - buffer = lv_excel_data - TABLES - binary_tab = lt_mime - EXCEPTIONS - failed = 1 - OTHERS = 2. + lv_filesize = lv_filesizec. + CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' + EXPORTING + input_length = lv_filesize + IMPORTING + buffer = lv_excel_data + TABLES + binary_tab = lt_mime + EXCEPTIONS + failed = 1 + OTHERS = 2. *--------------------------------------------------------------------* * Parse Excel data into ZCL_EXCEL object from binary string *--------------------------------------------------------------------* - ro_excel = io_reader->load( i_excel2007 = lv_excel_data ). + ro_excel = io_reader->load( i_excel2007 = lv_excel_data ). ENDFORM. diff --git a/src/zcl_excel.clas.abap b/src/zcl_excel.clas.abap index 29a6b12..2cb5f6e 100644 --- a/src/zcl_excel.clas.abap +++ b/src/zcl_excel.clas.abap @@ -147,8 +147,8 @@ CLASS zcl_excel DEFINITION IMPORTING !io_theme TYPE REF TO zcl_excel_theme . METHODS fill_template - importing - !iv_data TYPE REF TO ZCL_EXCEL_TEMPLATE_DATA + IMPORTING + !iv_data TYPE REF TO zcl_excel_template_data RAISING zcx_excel . PROTECTED SECTION. diff --git a/src/zcl_excel_autofilter.clas.abap b/src/zcl_excel_autofilter.clas.abap index 06fa438..b382fbb 100644 --- a/src/zcl_excel_autofilter.clas.abap +++ b/src/zcl_excel_autofilter.clas.abap @@ -401,9 +401,9 @@ CLASS zcl_excel_autofilter IMPLEMENTATION. METHOD validate_area. - DATA: l_col TYPE zexcel_cell_column, + DATA: l_col TYPE zexcel_cell_column, ls_original_filter_area TYPE zexcel_s_autofilter_area, - l_row TYPE zexcel_cell_row. + l_row TYPE zexcel_cell_row. l_row = worksheet->get_highest_row( ) . l_col = worksheet->get_highest_column( ) . diff --git a/src/zcl_excel_collection.clas.abap b/src/zcl_excel_collection.clas.abap index 868f5ed..48ff6b8 100644 --- a/src/zcl_excel_collection.clas.abap +++ b/src/zcl_excel_collection.clas.abap @@ -37,7 +37,7 @@ ENDCLASS. -CLASS ZCL_EXCEL_COLLECTION IMPLEMENTATION. +CLASS zcl_excel_collection IMPLEMENTATION. METHOD add . diff --git a/src/zcl_excel_collection_iterator.clas.abap b/src/zcl_excel_collection_iterator.clas.abap index d104dc2..6e418a7 100644 --- a/src/zcl_excel_collection_iterator.clas.abap +++ b/src/zcl_excel_collection_iterator.clas.abap @@ -15,7 +15,7 @@ CLASS zcl_excel_collection_iterator DEFINITION VALUE(object) TYPE REF TO object. METHODS constructor IMPORTING - collection TYPE REF TO zCL_excel_COLLECTION. + collection TYPE REF TO zcl_excel_collection. PROTECTED SECTION. PRIVATE SECTION. DATA index TYPE i VALUE 0. @@ -24,7 +24,7 @@ ENDCLASS. -CLASS ZCL_EXCEL_COLLECTION_ITERATOR IMPLEMENTATION. +CLASS zcl_excel_collection_iterator IMPLEMENTATION. METHOD constructor . diff --git a/src/zcl_excel_common.clas.abap b/src/zcl_excel_common.clas.abap index 6bc1490..6ae1159 100644 --- a/src/zcl_excel_common.clas.abap +++ b/src/zcl_excel_common.clas.abap @@ -221,7 +221,7 @@ ENDCLASS. -CLASS ZCL_EXCEL_COMMON IMPLEMENTATION. +CLASS zcl_excel_common IMPLEMENTATION. METHOD calculate_cell_distance. @@ -1082,32 +1082,32 @@ CLASS ZCL_EXCEL_COMMON IMPLEMENTATION. lcv_digits TYPE string VALUE '0123456789', lcv_cell_reference_error TYPE string VALUE '#REF!'. - DATA: lv_tcnt TYPE i, " Counter variable - lv_tlen TYPE i, " Temp variable length - lv_cnt TYPE i, " Counter variable - lv_cnt2 TYPE i, " Counter variable - lv_offset1 TYPE i, " Character offset - lv_numchars TYPE i, " Number of characters counter - lv_tchar(1) TYPE c, " Temp character - lv_tchar2(1) TYPE c, " Temp character - lv_cur_form TYPE string, " Formula for current cell - lv_ref_cell_addr TYPE string, " Reference cell address - lv_tcol1 TYPE string, " Temp column letter - lv_tcol2 TYPE string, " Temp column letter - lv_tcoln TYPE i, " Temp column number - lv_trow1 TYPE string, " Temp row number - lv_trow2 TYPE string, " Temp row number - lv_flen TYPE i, " Length of reference formula - lv_tlen2 TYPE i, " Temp variable length - lv_substr1 TYPE string, " Substring variable - lv_abscol TYPE string, " Absolute column symbol - lv_absrow TYPE string, " Absolute row symbol - lv_ref_formula TYPE string, - lv_compare_1 TYPE string, - lv_compare_2 TYPE string, - lv_level TYPE i, " Level of groups [..[..]..] or {..} + DATA: lv_tcnt TYPE i, " Counter variable + lv_tlen TYPE i, " Temp variable length + lv_cnt TYPE i, " Counter variable + lv_cnt2 TYPE i, " Counter variable + lv_offset1 TYPE i, " Character offset + lv_numchars TYPE i, " Number of characters counter + lv_tchar(1) TYPE c, " Temp character + lv_tchar2(1) TYPE c, " Temp character + lv_cur_form TYPE string, " Formula for current cell + lv_ref_cell_addr TYPE string, " Reference cell address + lv_tcol1 TYPE string, " Temp column letter + lv_tcol2 TYPE string, " Temp column letter + lv_tcoln TYPE i, " Temp column number + lv_trow1 TYPE string, " Temp row number + lv_trow2 TYPE string, " Temp row number + lv_flen TYPE i, " Length of reference formula + lv_tlen2 TYPE i, " Temp variable length + lv_substr1 TYPE string, " Substring variable + lv_abscol TYPE string, " Absolute column symbol + lv_absrow TYPE string, " Absolute row symbol + lv_ref_formula TYPE string, + lv_compare_1 TYPE string, + lv_compare_2 TYPE string, + lv_level TYPE i, " Level of groups [..[..]..] or {..} - lv_errormessage TYPE string. + lv_errormessage TYPE string. *--------------------------------------------------------------------* * When copying a cell in EXCEL to another cell any inherent formulas @@ -1289,17 +1289,17 @@ CLASS ZCL_EXCEL_COMMON IMPLEMENTATION. ENDDO. ENDIF. - " Is valid column & row ? - IF lv_tcol1 IS NOT INITIAL AND lv_trow1 IS NOT INITIAL. - " COLUMN + ROW - CONCATENATE lv_tcol1 lv_trow1 INTO lv_compare_1. - " Original condensed string - lv_compare_2 = lv_ref_cell_addr. - CONDENSE lv_compare_2. - IF lv_compare_1 <> lv_compare_2. - CLEAR: lv_trow1, lv_tchar2. + " Is valid column & row ? + IF lv_tcol1 IS NOT INITIAL AND lv_trow1 IS NOT INITIAL. + " COLUMN + ROW + CONCATENATE lv_tcol1 lv_trow1 INTO lv_compare_1. + " Original condensed string + lv_compare_2 = lv_ref_cell_addr. + CONDENSE lv_compare_2. + IF lv_compare_1 <> lv_compare_2. + CLEAR: lv_trow1, lv_tchar2. + ENDIF. ENDIF. - ENDIF. *--------------------------------------------------------------------* * Check for invalid cell address diff --git a/src/zcl_excel_common.clas.testclasses.abap b/src/zcl_excel_common.clas.testclasses.abap index 81e3720..3828002 100644 --- a/src/zcl_excel_common.clas.testclasses.abap +++ b/src/zcl_excel_common.clas.testclasses.abap @@ -56,15 +56,15 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING RAISING cx_static_check. METHODS: calc_cell_dist_samecell FOR TESTING RAISING cx_static_check, - calc_cell_dist_down1pl FOR TESTING RAISING cx_static_check, - calc_cell_dist_downsome FOR TESTING RAISING cx_static_check, - calc_cell_dist_up1pl FOR TESTING RAISING cx_static_check, - calc_cell_dist_upsome FOR TESTING RAISING cx_static_check, - calc_cell_dist_right1pl FOR TESTING RAISING cx_static_check, - calc_cell_dist_rightsome FOR TESTING RAISING cx_static_check, - calc_cell_dist_left1pl FOR TESTING RAISING cx_static_check, - calc_cell_dist_leftsome FOR TESTING RAISING cx_static_check, - calc_cell_dist_fullpack FOR TESTING RAISING cx_static_check. + calc_cell_dist_down1pl FOR TESTING RAISING cx_static_check, + calc_cell_dist_downsome FOR TESTING RAISING cx_static_check, + calc_cell_dist_up1pl FOR TESTING RAISING cx_static_check, + calc_cell_dist_upsome FOR TESTING RAISING cx_static_check, + calc_cell_dist_right1pl FOR TESTING RAISING cx_static_check, + calc_cell_dist_rightsome FOR TESTING RAISING cx_static_check, + calc_cell_dist_left1pl FOR TESTING RAISING cx_static_check, + calc_cell_dist_leftsome FOR TESTING RAISING cx_static_check, + calc_cell_dist_fullpack FOR TESTING RAISING cx_static_check. METHODS macro_shift_formula IMPORTING iv_reference_formula TYPE clike @@ -72,31 +72,31 @@ CLASS lcl_excel_common_test DEFINITION FOR TESTING iv_shift_rows TYPE i iv_expected TYPE string. METHODS: shift_formula_basic FOR TESTING, - shift_formula_rightdown FOR TESTING, - shift_formula_leftup FOR TESTING, - shift_formula_fixedcolrows FOR TESTING, - shift_formula_mixedfixedrows FOR TESTING, - shift_formula_rangename FOR TESTING, - shift_formula_stringlitconc FOR TESTING, - shift_formula_extref FOR TESTING, - shift_formula_charblanks FOR TESTING, - shift_formula_stringblanks FOR TESTING, - shift_formula_funcnoargs FOR TESTING, - shift_formula_nocellref FOR TESTING, - shift_formula_empty FOR TESTING, - shift_formula_referr_colunder FOR TESTING, - shift_formula_referr_rowunder FOR TESTING, - shift_formula_referr_rowcolund FOR TESTING, - shift_formula_sheet_nodigit FOR TESTING, - shift_formula_sheet_nodig FOR TESTING, - shift_formula_sheet_special FOR TESTING, - shift_formula_resp_blanks_1 FOR TESTING, - shift_formula_resp_blanks_2 FOR TESTING, - shift_formula_range FOR TESTING, - shift_formula_notcols FOR TESTING, - shift_formula_name FOR TESTING, - shift_formula_refcolumn1 FOR TESTING, - shift_formula_refcolumn2 FOR TESTING. + shift_formula_rightdown FOR TESTING, + shift_formula_leftup FOR TESTING, + shift_formula_fixedcolrows FOR TESTING, + shift_formula_mixedfixedrows FOR TESTING, + shift_formula_rangename FOR TESTING, + shift_formula_stringlitconc FOR TESTING, + shift_formula_extref FOR TESTING, + shift_formula_charblanks FOR TESTING, + shift_formula_stringblanks FOR TESTING, + shift_formula_funcnoargs FOR TESTING, + shift_formula_nocellref FOR TESTING, + shift_formula_empty FOR TESTING, + shift_formula_referr_colunder FOR TESTING, + shift_formula_referr_rowunder FOR TESTING, + shift_formula_referr_rowcolund FOR TESTING, + shift_formula_sheet_nodigit FOR TESTING, + shift_formula_sheet_nodig FOR TESTING, + shift_formula_sheet_special FOR TESTING, + shift_formula_resp_blanks_1 FOR TESTING, + shift_formula_resp_blanks_2 FOR TESTING, + shift_formula_range FOR TESTING, + shift_formula_notcols FOR TESTING, + shift_formula_name FOR TESTING, + shift_formula_refcolumn1 FOR TESTING, + shift_formula_refcolumn2 FOR TESTING. METHODS is_cell_in_range_ulc_in FOR TESTING. METHODS is_cell_in_range_lrc_in FOR TESTING. METHODS is_cell_in_range_leftside_out FOR TESTING. @@ -1405,7 +1405,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_sheet_nodigit. -" Sheet name not ending with digit + " Sheet name not ending with digit macro_shift_formula( iv_reference_formula = 'Sheet!A1' iv_shift_cols = 1 @@ -1416,7 +1416,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_sheet_nodig. -" Sheet name ending with digit + " Sheet name ending with digit macro_shift_formula( iv_reference_formula = 'Sheet2!A1' iv_shift_cols = 1 @@ -1427,7 +1427,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_sheet_special. -" Sheet name with special characters + " Sheet name with special characters macro_shift_formula( iv_reference_formula = |'Sheet name'!A1| iv_shift_cols = 1 @@ -1438,7 +1438,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_resp_blanks_1. -" Respecting blanks + " Respecting blanks macro_shift_formula( iv_reference_formula = 'SUBTOTAL(109,Table1[SUM 1])' iv_shift_cols = 1 @@ -1449,7 +1449,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_resp_blanks_2. -" Respecting blanks + " Respecting blanks macro_shift_formula( iv_reference_formula = 'B4 & C4' iv_shift_cols = 0 @@ -1460,7 +1460,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_range. -" F_1 is a range name, not a cell address + " F_1 is a range name, not a cell address macro_shift_formula( iv_reference_formula = 'SUM(F_1,F_2)' iv_shift_cols = 1 @@ -1470,7 +1470,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. ENDMETHOD. METHOD shift_formula_notcols. -" RC are not columns + " RC are not columns macro_shift_formula( iv_reference_formula = 'INDIRECT("RC[4]",FALSE)' iv_shift_cols = 1 @@ -1481,7 +1481,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_name. -" A1 is a sheet name + " A1 is a sheet name macro_shift_formula( iv_reference_formula = |'A1'!$A$1| iv_shift_cols = 1 @@ -1492,7 +1492,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_refcolumn1. -" Reference to another column in the same row of a Table, with a space in the column name + " Reference to another column in the same row of a Table, with a space in the column name macro_shift_formula( iv_reference_formula = 'Tbl[[#This Row],[Air fare]]' iv_shift_cols = 1 @@ -1503,7 +1503,7 @@ CLASS lcl_excel_common_test IMPLEMENTATION. METHOD shift_formula_refcolumn2. -" Reference to another column in the same row of a Table, inside more complex expression + " Reference to another column in the same row of a Table, inside more complex expression macro_shift_formula( iv_reference_formula = 'Tbl[[#This Row],[Air]]+A1' iv_shift_cols = 1 diff --git a/src/zcl_excel_converter.clas.abap b/src/zcl_excel_converter.clas.abap index 25e4fd0..2dff15a 100644 --- a/src/zcl_excel_converter.clas.abap +++ b/src/zcl_excel_converter.clas.abap @@ -255,7 +255,7 @@ ENDCLASS. -CLASS ZCL_EXCEL_CONVERTER IMPLEMENTATION. +CLASS zcl_excel_converter IMPLEMENTATION. METHOD ask_option. diff --git a/src/zcl_excel_drawing.clas.abap b/src/zcl_excel_drawing.clas.abap index be4c140..51a0521 100644 --- a/src/zcl_excel_drawing.clas.abap +++ b/src/zcl_excel_drawing.clas.abap @@ -131,9 +131,9 @@ CLASS zcl_excel_drawing DEFINITION DATA type TYPE zexcel_drawing_type VALUE type_image. "#EC NOTEXT . . . . . . . . . . . " . DATA index TYPE string . DATA anchor TYPE zexcel_drawing_anchor VALUE anchor_one_cell. "#EC NOTEXT . . . . . . . . . . . " . - CONSTANTS c_media_source_www TYPE c VALUE 1. "#EC NOTEXT - CONSTANTS c_media_source_xstring TYPE c VALUE 0. "#EC NOTEXT - CONSTANTS c_media_source_mime TYPE c VALUE 2. "#EC NOTEXT + CONSTANTS c_media_source_www TYPE c VALUE 1. "#EC NOTEXT + CONSTANTS c_media_source_xstring TYPE c VALUE 0. "#EC NOTEXT + CONSTANTS c_media_source_mime TYPE c VALUE 2. "#EC NOTEXT DATA guid TYPE guid_16 . DATA media TYPE xstring . DATA media_key_www TYPE wwwdatatab . diff --git a/src/zcl_excel_font.clas.abap b/src/zcl_excel_font.clas.abap index ceaeea1..c7f0e2e 100644 --- a/src/zcl_excel_font.clas.abap +++ b/src/zcl_excel_font.clas.abap @@ -46,23 +46,23 @@ ENDCLASS. -CLASS ZCL_EXCEL_FONT IMPLEMENTATION. +CLASS zcl_excel_font IMPLEMENTATION. METHOD calculate_text_width. CONSTANTS lc_excel_cell_padding TYPE float VALUE '0.75'. - DATA: ld_current_character TYPE c LENGTH 1, - lt_itcfc TYPE STANDARD TABLE OF itcfc, - ld_offset TYPE i, - ld_length TYPE i, - ld_uccp TYPE i, - ls_font_metric TYPE mty_s_font_metric, - ld_width_from_font_metrics TYPE i, - ld_font_family TYPE itcfh-tdfamily, - lt_font_families LIKE STANDARD TABLE OF ld_font_family, - ls_font_cache TYPE mty_s_font_cache. + DATA: ld_current_character TYPE c LENGTH 1, + lt_itcfc TYPE STANDARD TABLE OF itcfc, + ld_offset TYPE i, + ld_length TYPE i, + ld_uccp TYPE i, + ls_font_metric TYPE mty_s_font_metric, + ld_width_from_font_metrics TYPE i, + ld_font_family TYPE itcfh-tdfamily, + lt_font_families LIKE STANDARD TABLE OF ld_font_family, + ls_font_cache TYPE mty_s_font_cache. FIELD-SYMBOLS: TYPE mty_s_font_cache, TYPE mty_s_font_metric, diff --git a/src/zcl_excel_font.clas.testclasses.abap b/src/zcl_excel_font.clas.testclasses.abap index 9801cec..a98b7d4 100644 --- a/src/zcl_excel_font.clas.testclasses.abap +++ b/src/zcl_excel_font.clas.testclasses.abap @@ -1,11 +1,11 @@ -CLASS ltcl_Test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL. +CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL. PRIVATE SECTION. METHODS calculate FOR TESTING RAISING cx_static_check. ENDCLASS. -CLASS ltcl_Test IMPLEMENTATION. +CLASS ltcl_test IMPLEMENTATION. METHOD calculate. diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index 2ee2087..023c5f9 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -20,12 +20,12 @@ CLASS zcl_excel_reader_2007 DEFINITION *"* protected components of class ZCL_EXCEL_READER_2007 *"* do not include other source files here!!! BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - targetmode TYPE string, - worksheet TYPE REF TO zcl_excel_worksheet, - sheetid TYPE string, "ins #235 - repeat rows/cols - needed to identify correct sheet + id TYPE string, + type TYPE string, + target TYPE string, + targetmode TYPE string, + worksheet TYPE REF TO zcl_excel_worksheet, + sheetid TYPE string, "ins #235 - repeat rows/cols - needed to identify correct sheet localsheetid TYPE string, END OF t_relationship . TYPES: @@ -876,7 +876,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. lo_node_si TYPE REF TO if_ixml_element, lo_node_si_child TYPE REF TO if_ixml_element, lo_node_r_child_t TYPE REF TO if_ixml_element, - lo_node_r_child_rPr TYPE REF TO if_ixml_element, + lo_node_r_child_rpr TYPE REF TO if_ixml_element, lo_font TYPE REF TO zcl_excel_style_font, ls_rtf TYPE zexcel_s_rtf, lv_current_offset TYPE int2, @@ -1528,96 +1528,96 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. lo_node_font = io_xml_element. - CREATE OBJECT lo_font. + CREATE OBJECT lo_font. *--------------------------------------------------------------------* * Bold *--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'b' ) IS BOUND. - lo_font->bold = abap_true. - ENDIF. + IF lo_node_font->find_from_name( 'b' ) IS BOUND. + lo_font->bold = abap_true. + ENDIF. *--------------------------------------------------------------------* * Italic *--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'i' ) IS BOUND. - lo_font->italic = abap_true. - ENDIF. + IF lo_node_font->find_from_name( 'i' ) IS BOUND. + lo_font->italic = abap_true. + ENDIF. *--------------------------------------------------------------------* * Underline *--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'u' ). - IF lo_node2 IS BOUND. - lo_font->underline = abap_true. - lo_font->underline_mode = lo_node2->get_attribute( 'val' ). - ENDIF. + lo_node2 = lo_node_font->find_from_name( 'u' ). + IF lo_node2 IS BOUND. + lo_font->underline = abap_true. + lo_font->underline_mode = lo_node2->get_attribute( 'val' ). + ENDIF. *--------------------------------------------------------------------* * StrikeThrough *--------------------------------------------------------------------* - IF lo_node_font->find_from_name( 'strike' ) IS BOUND. - lo_font->strikethrough = abap_true. - ENDIF. + IF lo_node_font->find_from_name( 'strike' ) IS BOUND. + lo_font->strikethrough = abap_true. + ENDIF. *--------------------------------------------------------------------* * Fontsize *--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'sz' ). - IF lo_node2 IS BOUND. - lo_font->size = lo_node2->get_attribute( 'val' ). - ENDIF. + lo_node2 = lo_node_font->find_from_name( 'sz' ). + IF lo_node2 IS BOUND. + lo_font->size = lo_node2->get_attribute( 'val' ). + ENDIF. *--------------------------------------------------------------------* * Fontname *--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'name' ). + lo_node2 = lo_node_font->find_from_name( 'name' ). + IF lo_node2 IS BOUND. + lo_font->name = lo_node2->get_attribute( 'val' ). + ELSE. + lo_node2 = lo_node_font->find_from_name( 'rFont' ). IF lo_node2 IS BOUND. lo_font->name = lo_node2->get_attribute( 'val' ). - ELSE. - lo_node2 = lo_node_font->find_from_name( 'rFont' ). - IF lo_node2 IS BOUND. - lo_font->name = lo_node2->get_attribute( 'val' ). - ENDIF. ENDIF. + ENDIF. *--------------------------------------------------------------------* * Fontfamily *--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'family' ). - IF lo_node2 IS BOUND. - lo_font->family = lo_node2->get_attribute( 'val' ). - ENDIF. + lo_node2 = lo_node_font->find_from_name( 'family' ). + IF lo_node2 IS BOUND. + lo_font->family = lo_node2->get_attribute( 'val' ). + ENDIF. *--------------------------------------------------------------------* * Fontscheme *--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'scheme' ). - IF lo_node2 IS BOUND. - lo_font->scheme = lo_node2->get_attribute( 'val' ). - ELSE. - CLEAR lo_font->scheme. - ENDIF. + lo_node2 = lo_node_font->find_from_name( 'scheme' ). + IF lo_node2 IS BOUND. + lo_font->scheme = lo_node2->get_attribute( 'val' ). + ELSE. + CLEAR lo_font->scheme. + ENDIF. *--------------------------------------------------------------------* * Fontcolor *--------------------------------------------------------------------* - lo_node2 = lo_node_font->find_from_name( 'color' ). - IF lo_node2 IS BOUND. - fill_struct_from_attributes( EXPORTING - ip_element = lo_node2 - CHANGING - cp_structure = ls_color ). - lo_font->color-rgb = ls_color-rgb. - IF ls_color-indexed IS NOT INITIAL. - lo_font->color-indexed = ls_color-indexed. - ENDIF. - - IF ls_color-theme IS NOT INITIAL. - lo_font->color-theme = ls_color-theme. - ENDIF. - lo_font->color-tint = ls_color-tint. + lo_node2 = lo_node_font->find_from_name( 'color' ). + IF lo_node2 IS BOUND. + fill_struct_from_attributes( EXPORTING + ip_element = lo_node2 + CHANGING + cp_structure = ls_color ). + lo_font->color-rgb = ls_color-rgb. + IF ls_color-indexed IS NOT INITIAL. + lo_font->color-indexed = ls_color-indexed. ENDIF. + IF ls_color-theme IS NOT INITIAL. + lo_font->color-theme = ls_color-theme. + ENDIF. + lo_font->color-tint = ls_color-tint. + ENDIF. + ro_font = lo_font. ENDMETHOD. @@ -3572,9 +3572,9 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. DATA: lo_ixml_ignored_errors TYPE REF TO if_ixml_node_collection, lo_ixml_ignored_error TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, - ls_ignored_error TYPE zcl_excel_worksheet=>mty_s_ignored_errors, - lt_ignored_errors TYPE zcl_excel_worksheet=>mty_th_ignored_errors. + lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, + ls_ignored_error TYPE zcl_excel_worksheet=>mty_s_ignored_errors, + lt_ignored_errors TYPE zcl_excel_worksheet=>mty_th_ignored_errors. DATA: BEGIN OF ls_raw_ignored_error, sqref TYPE string, diff --git a/src/zcl_excel_reader_huge_file.clas.abap b/src/zcl_excel_reader_huge_file.clas.abap index 17b56c4..99aa7b0 100644 --- a/src/zcl_excel_reader_huge_file.clas.abap +++ b/src/zcl_excel_reader_huge_file.clas.abap @@ -28,7 +28,7 @@ CLASS zcl_excel_reader_huge_file DEFINITION BEGIN OF t_cell. INCLUDE TYPE t_cell_coord AS coord. INCLUDE TYPE t_cell_content AS content. - TYPES: END OF t_cell . + TYPES: END OF t_cell . INTERFACE if_sxml_node LOAD . CONSTANTS c_end_of_stream TYPE if_sxml_node=>node_type VALUE if_sxml_node=>co_nt_final. "#EC NOTEXT diff --git a/src/zcl_excel_reader_huge_file.clas.testclasses.abap b/src/zcl_excel_reader_huge_file.clas.testclasses.abap index 25cfe88..f7e98c2 100644 --- a/src/zcl_excel_reader_huge_file.clas.testclasses.abap +++ b/src/zcl_excel_reader_huge_file.clas.testclasses.abap @@ -1,133 +1,133 @@ *"* use this source file for your ABAP unit test classes -class lcl_test definition deferred. -class zcl_excel_reader_huge_file definition local friends lcl_test. +CLASS lcl_test DEFINITION DEFERRED. +CLASS zcl_excel_reader_huge_file DEFINITION LOCAL FRIENDS lcl_test. * -class lcl_test definition for testing - risk level harmless - duration short. +CLASS lcl_test DEFINITION FOR TESTING + RISK LEVEL HARMLESS + DURATION SHORT. - private section. - data: - out type ref to zcl_excel_reader_huge_file, " object under test - excel type ref to zcl_excel, - worksheet type ref to zcl_excel_worksheet. - methods: - setup raising cx_static_check, - test_number for testing raising cx_static_check, - test_shared_string for testing raising cx_static_check, - test_shared_string_missing for testing raising cx_static_check, - test_inline_string for testing raising cx_static_check, - test_empty_cells for testing raising cx_static_check, - test_boolean for testing raising cx_static_check, - test_style for testing raising cx_static_check, - test_style_missing for testing raising cx_static_check, - test_formula for testing raising cx_static_check, - test_read_shared_strings for testing raising cx_static_check, - test_shared_string_some_empty for testing raising cx_static_check, - test_skip_to_inexistent for testing raising cx_static_check, - get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader, - assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string, - assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string, - assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE, - assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string. + PRIVATE SECTION. + DATA: + out TYPE REF TO zcl_excel_reader_huge_file, " object under test + excel TYPE REF TO zcl_excel, + worksheet TYPE REF TO zcl_excel_worksheet. + METHODS: + setup RAISING cx_static_check, + test_number FOR TESTING RAISING cx_static_check, + test_shared_string FOR TESTING RAISING cx_static_check, + test_shared_string_missing FOR TESTING RAISING cx_static_check, + test_inline_string FOR TESTING RAISING cx_static_check, + test_empty_cells FOR TESTING RAISING cx_static_check, + test_boolean FOR TESTING RAISING cx_static_check, + test_style FOR TESTING RAISING cx_static_check, + test_style_missing FOR TESTING RAISING cx_static_check, + test_formula FOR TESTING RAISING cx_static_check, + test_read_shared_strings FOR TESTING RAISING cx_static_check, + test_shared_string_some_empty FOR TESTING RAISING cx_static_check, + test_skip_to_inexistent FOR TESTING RAISING cx_static_check, + get_reader IMPORTING iv_xml TYPE string RETURNING VALUE(eo_reader) TYPE REF TO if_sxml_reader, + assert_value_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_value TYPE string, + assert_formula_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_formula TYPE string, + assert_style_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_style TYPE zexcel_cell_style, + assert_datatype_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_datatype TYPE string. -endclass. "lcl_test DEFINITION +ENDCLASS. "lcl_test DEFINITION * -class lcl_test implementation. +CLASS lcl_test IMPLEMENTATION. * - method test_number. - data lo_reader type ref to if_sxml_reader. + METHOD test_number. + DATA lo_reader TYPE REF TO if_sxml_reader. lo_reader = get_reader( `17` ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). assert_value_equals( `17` ). assert_datatype_equals( `n` ). - endmethod. "test_shared_string + ENDMETHOD. "test_shared_string * - method test_shared_string. - data lo_reader type ref to if_sxml_reader. - data: ls_shared_string type zcl_excel_reader_huge_file=>t_shared_string. + METHOD test_shared_string. + DATA lo_reader TYPE REF TO if_sxml_reader. + DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string. ls_shared_string-value = `Test1`. - append ls_shared_string to out->shared_strings. + APPEND ls_shared_string TO out->shared_strings. ls_shared_string-value = `Test2`. - append ls_shared_string to out->shared_strings. + APPEND ls_shared_string TO out->shared_strings. lo_reader = get_reader( `1` ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). assert_value_equals( `Test2` ). assert_datatype_equals( `s` ). - endmethod. "test_shared_string + ENDMETHOD. "test_shared_string * - method test_shared_string_missing. + METHOD test_shared_string_missing. - data: lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. - data: ls_shared_string type zcl_excel_reader_huge_file=>t_shared_string. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. + DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string. ls_shared_string-value = `Test`. - append ls_shared_string to out->shared_strings. + APPEND ls_shared_string TO out->shared_strings. lo_reader = get_reader( `1` ). - try. + TRY. out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - CL_ABAP_UNIT_ASSERT=>fail( `Index to non-existent shared string should give an error` ). - catch lcx_not_found into lo_ex. + cl_abap_unit_assert=>fail( `Index to non-existent shared string should give an error` ). + CATCH lcx_not_found INTO lo_ex. lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. + ENDTRY. - endmethod. + ENDMETHOD. * - method test_inline_string. - data lo_reader type ref to if_sxml_reader. + METHOD test_inline_string. + DATA lo_reader TYPE REF TO if_sxml_reader. lo_reader = get_reader( `Alpha` ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). assert_value_equals( `Alpha` ). assert_datatype_equals( `inlineStr` ). - endmethod. "test_inline_string + ENDMETHOD. "test_inline_string * - method test_boolean. - data lo_reader type ref to if_sxml_reader. + METHOD test_boolean. + DATA lo_reader TYPE REF TO if_sxml_reader. lo_reader = get_reader( `1` ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). assert_value_equals( `1` ). assert_datatype_equals( `b` ). - endmethod. "test_boolean + ENDMETHOD. "test_boolean * - method test_formula. - data lo_reader type ref to if_sxml_reader. + METHOD test_formula. + DATA lo_reader TYPE REF TO if_sxml_reader. lo_reader = get_reader( `A2*A2` ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). assert_formula_equals( `A2*A2` ). assert_datatype_equals( `n` ). - endmethod. "test_formula + ENDMETHOD. "test_formula * - method test_empty_cells. + METHOD test_empty_cells. * There is no need to store an empty cell in the ABAP worksheet structure - data: lo_reader type ref to if_sxml_reader. - data: ls_shared_string type zcl_excel_reader_huge_file=>t_shared_string. + DATA: lo_reader TYPE REF TO if_sxml_reader. + DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string. ls_shared_string-value = ``. - append ls_shared_string to out->shared_strings. + APPEND ls_shared_string TO out->shared_strings. ls_shared_string-value = `t`. - append ls_shared_string to out->shared_strings. + APPEND ls_shared_string TO out->shared_strings. lo_reader = get_reader( `0` & `` & @@ -140,17 +140,17 @@ class lcl_test implementation. assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). - endmethod. + ENDMETHOD. * - method test_style. - data: - lo_reader type ref to if_sxml_reader, - lo_style type ref to zcl_excel_style, - lv_guid type ZEXCEL_CELL_STYLE. - create object lo_style. - append lo_style to out->styles. - lv_guid = lo_style->get_guid( ). + METHOD test_style. + DATA: + lo_reader TYPE REF TO if_sxml_reader, + lo_style TYPE REF TO zcl_excel_style, + lv_guid TYPE zexcel_cell_style. + CREATE OBJECT lo_style. + APPEND lo_style TO out->styles. + lv_guid = lo_style->get_guid( ). lo_reader = get_reader( `18` @@ -159,173 +159,173 @@ class lcl_test implementation. assert_style_equals( lv_guid ). - endmethod. "test_style + ENDMETHOD. "test_style * - method test_style_missing. + METHOD test_style_missing. - data: - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. + DATA: + lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. lo_reader = get_reader( `18` ). - try. + TRY. out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). - CL_ABAP_UNIT_ASSERT=>fail( `Reference to non-existent style should throw an lcx_not_found exception` ). - catch lcx_not_found into lo_ex. + cl_abap_unit_assert=>fail( `Reference to non-existent style should throw an lcx_not_found exception` ). + CATCH lcx_not_found INTO lo_ex. lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger - endtry. + ENDTRY. - endmethod. "test_style + ENDMETHOD. "test_style * - method test_read_shared_strings. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. + METHOD test_read_shared_strings. + DATA: lo_c2x TYPE REF TO cl_abap_conv_out_ce, + lv_xstring TYPE xstring, + lo_reader TYPE REF TO if_sxml_reader, + lt_act TYPE stringtab, + lt_exp TYPE stringtab. lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `AlphaBravo` - importing buffer = lv_xstring ). + lo_c2x->convert( EXPORTING data = `AlphaBravo` + IMPORTING buffer = lv_xstring ). lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `Bravo` to lt_exp. + APPEND : + `` TO lt_exp, + `Alpha` TO lt_exp, + `Bravo` TO lt_exp. lt_act = out->read_shared_strings( lo_reader ). - CL_ABAP_UNIT_ASSERT=>assert_equals( act = lt_act + cl_abap_unit_assert=>assert_equals( act = lt_act exp = lt_exp ). - endmethod. + ENDMETHOD. * - method test_shared_string_some_empty. - data: lo_reader type ref to if_sxml_reader, - lt_act type stringtab, - lt_exp type stringtab. + METHOD test_shared_string_some_empty. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lt_act TYPE stringtab, + lt_exp TYPE stringtab. lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( `` & `Alpha` & `` & `Bravo` ) ). - append : - `` to lt_exp, - `Alpha` to lt_exp, - `` to lt_exp, - `Bravo` to lt_exp. + APPEND : + `` TO lt_exp, + `Alpha` TO lt_exp, + `` TO lt_exp, + `Bravo` TO lt_exp. lt_act = out->read_shared_strings( lo_reader ). - CL_ABAP_UNIT_ASSERT=>assert_equals( act = lt_act + cl_abap_unit_assert=>assert_equals( act = lt_act exp = lt_exp ). - endmethod. + ENDMETHOD. * - method test_skip_to_inexistent. - data: lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring, - lo_reader type ref to if_sxml_reader, - lo_ex type ref to lcx_not_found, - lv_text type string. + METHOD test_skip_to_inexistent. + DATA: lo_c2x TYPE REF TO cl_abap_conv_out_ce, + lv_xstring TYPE xstring, + lo_reader TYPE REF TO if_sxml_reader, + lo_ex TYPE REF TO lcx_not_found, + lv_text TYPE string. lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = `AlphaBravo` - importing buffer = lv_xstring ). + lo_c2x->convert( EXPORTING data = `AlphaBravo` + IMPORTING buffer = lv_xstring ). lo_reader = cl_sxml_string_reader=>create( lv_xstring ). - try. + TRY. out->skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). - CL_ABAP_UNIT_ASSERT=>fail( `Skipping to non-existing element must raise lcx_not_found exception` ). - catch lcx_not_found into lo_ex. + cl_abap_unit_assert=>fail( `Skipping to non-existing element must raise lcx_not_found exception` ). + CATCH lcx_not_found INTO lo_ex. lv_text = lo_ex->get_text( ). " May inspect exception text in debugger - endtry. - endmethod. + ENDTRY. + ENDMETHOD. * - method get_reader. - data: lv_full type string, - lo_c2x type ref to cl_abap_conv_out_ce, - lv_xstring type xstring. - concatenate `` iv_xml `` into lv_full. + METHOD get_reader. + DATA: lv_full TYPE string, + lo_c2x TYPE REF TO cl_abap_conv_out_ce, + lv_xstring TYPE xstring. + CONCATENATE `` iv_xml `` INTO lv_full. lo_c2x = cl_abap_conv_out_ce=>create( ). - lo_c2x->convert( exporting data = lv_full - importing buffer = lv_xstring ). + lo_c2x->convert( EXPORTING data = lv_full + IMPORTING buffer = lv_xstring ). eo_reader = cl_sxml_string_reader=>create( lv_xstring ). - endmethod. "get_reader + ENDMETHOD. "get_reader * - method assert_value_equals. + METHOD assert_value_equals. - constants: lc_empty_string type string value is initial. + CONSTANTS: lc_empty_string TYPE string VALUE IS INITIAL. - field-symbols: type zexcel_s_cell_data, - type string. + FIELD-SYMBOLS: TYPE zexcel_s_cell_data, + TYPE string. - read table worksheet->sheet_content assigning - with table key cell_row = iv_row cell_column = iv_col. - if sy-subrc eq 0. - assign -cell_value to . - else. - assign lc_empty_string to . - endif. + READ TABLE worksheet->sheet_content ASSIGNING + WITH TABLE KEY cell_row = iv_row cell_column = iv_col. + IF sy-subrc EQ 0. + ASSIGN -cell_value TO . + ELSE. + ASSIGN lc_empty_string TO . + ENDIF. - CL_ABAP_UNIT_ASSERT=>assert_equals( act = + cl_abap_unit_assert=>assert_equals( act = exp = iv_value ). - endmethod. "assert_value_equals + ENDMETHOD. "assert_value_equals ** - method assert_formula_equals. + METHOD assert_formula_equals. - field-symbols: type zexcel_s_cell_data. + FIELD-SYMBOLS: TYPE zexcel_s_cell_data. - read table worksheet->sheet_content assigning - with table key cell_row = iv_row cell_column = iv_col. - CL_ABAP_UNIT_ASSERT=>assert_subrc( sy-subrc ). + READ TABLE worksheet->sheet_content ASSIGNING + WITH TABLE KEY cell_row = iv_row cell_column = iv_col. + cl_abap_unit_assert=>assert_subrc( sy-subrc ). - CL_ABAP_UNIT_ASSERT=>assert_equals( act = -cell_formula + cl_abap_unit_assert=>assert_equals( act = -cell_formula exp = iv_formula ). - endmethod. "assert_formula_equals + ENDMETHOD. "assert_formula_equals * - method assert_style_equals. + METHOD assert_style_equals. - field-symbols: type zexcel_s_cell_data. + FIELD-SYMBOLS: TYPE zexcel_s_cell_data. - read table worksheet->sheet_content assigning - with table key cell_row = iv_row cell_column = iv_col. - CL_ABAP_UNIT_ASSERT=>assert_subrc( sy-subrc ). + READ TABLE worksheet->sheet_content ASSIGNING + WITH TABLE KEY cell_row = iv_row cell_column = iv_col. + cl_abap_unit_assert=>assert_subrc( sy-subrc ). - CL_ABAP_UNIT_ASSERT=>assert_equals( act = -cell_style + cl_abap_unit_assert=>assert_equals( act = -cell_style exp = iv_style ). - endmethod. + ENDMETHOD. * - method assert_datatype_equals. + METHOD assert_datatype_equals. - field-symbols: type zexcel_s_cell_data. + FIELD-SYMBOLS: TYPE zexcel_s_cell_data. - read table worksheet->sheet_content assigning - with table key cell_row = iv_row cell_column = iv_col. - CL_ABAP_UNIT_ASSERT=>assert_subrc( sy-subrc ). + READ TABLE worksheet->sheet_content ASSIGNING + WITH TABLE KEY cell_row = iv_row cell_column = iv_col. + cl_abap_unit_assert=>assert_subrc( sy-subrc ). - CL_ABAP_UNIT_ASSERT=>assert_equals( act = -data_type + cl_abap_unit_assert=>assert_equals( act = -data_type exp = iv_datatype ). - endmethod. "assert_datatype_equals - method setup. - create object out. - create object excel. - create object worksheet - exporting + ENDMETHOD. "assert_datatype_equals + METHOD setup. + CREATE OBJECT out. + CREATE OBJECT excel. + CREATE OBJECT worksheet + EXPORTING ip_excel = excel. - endmethod. "setup -endclass. "lcl_test IMPLEMENTATION + ENDMETHOD. "setup +ENDCLASS. "lcl_test IMPLEMENTATION diff --git a/src/zcl_excel_style_color.clas.abap b/src/zcl_excel_style_color.clas.abap index cbe9afb..424329f 100644 --- a/src/zcl_excel_style_color.clas.abap +++ b/src/zcl_excel_style_color.clas.abap @@ -57,7 +57,7 @@ CLASS zcl_excel_style_color DEFINITION *"* private components of class ZCL_EXCEL_STYLE_COLOR *"* do not include other source files here!!! - CONSTANTS c_alpha TYPE c LENGTH 2 VALUE 'FF'. "#EC NOTEXT + CONSTANTS c_alpha TYPE c LENGTH 2 VALUE 'FF'. "#EC NOTEXT ENDCLASS. diff --git a/src/zcl_excel_style_number_format.clas.abap b/src/zcl_excel_style_number_format.clas.abap index 7a60219..9064556 100644 --- a/src/zcl_excel_style_number_format.clas.abap +++ b/src/zcl_excel_style_number_format.clas.abap @@ -92,8 +92,8 @@ CLASS zcl_excel_style_number_format DEFINITION PRIVATE SECTION. CLASS-METHODS add_format IMPORTING - id TYPE string - code TYPE zexcel_number_format. + id TYPE string + code TYPE zexcel_number_format. *"* private components of class ZCL_EXCEL_STYLE_NUMBER_FORMAT *"* do not include other source files here!!! ENDCLASS. diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 1c7b97b..e647e30 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -725,7 +725,7 @@ ENDCLASS. -CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. +CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD add_comment. diff --git a/src/zcl_excel_worksheet.clas.testclasses.abap b/src/zcl_excel_worksheet.clas.testclasses.abap index e33e3cf..b9bb8e7 100644 --- a/src/zcl_excel_worksheet.clas.testclasses.abap +++ b/src/zcl_excel_worksheet.clas.testclasses.abap @@ -79,9 +79,9 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION. CREATE OBJECT lo_excel. TRY. - CREATE OBJECT f_cut - EXPORTING - ip_excel = lo_excel. + CREATE OBJECT f_cut + EXPORTING + ip_excel = lo_excel. CATCH zcx_excel. cl_abap_unit_assert=>fail( 'Could not create instance' ). ENDTRY. diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index b303750..abf6f32 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -251,11 +251,11 @@ CLASS zcl_excel_writer_2007 DEFINITION METHODS add_1_val_child_node IMPORTING - io_document TYPE REF TO if_ixml_document - io_parent TYPE REF TO if_ixml_element - iv_elem_name TYPE string - iv_attr_name TYPE string - iv_attr_value TYPE string. + io_document TYPE REF TO if_ixml_document + io_parent TYPE REF TO if_ixml_element + iv_elem_name TYPE string + iv_attr_name TYPE string + iv_attr_value TYPE string. METHODS flag2bool IMPORTING !ip_flag TYPE flag @@ -274,15 +274,15 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. METHOD add_1_val_child_node. - DATA: lo_child TYPE REF TO if_ixml_element. + DATA: lo_child TYPE REF TO if_ixml_element. - lo_child = io_document->create_simple_element( name = iv_elem_name - parent = io_document ). - IF iv_attr_name IS NOT INITIAL. - lo_child->set_attribute_ns( name = iv_attr_name - value = iv_attr_value ). - ENDIF. - io_parent->append_child( new_child = lo_child ). + lo_child = io_document->create_simple_element( name = iv_elem_name + parent = io_document ). + IF iv_attr_name IS NOT INITIAL. + lo_child->set_attribute_ns( name = iv_attr_name + value = iv_attr_value ). + ENDIF. + io_parent->append_child( new_child = lo_child ). ENDMETHOD. @@ -3650,13 +3650,13 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element = lo_document->create_simple_element( name = lc_xml_node_si parent = lo_document ). IF -rtf_tab IS INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - IF boolc( contains( val = -string_value start = ` ` ) ) = abap_true - OR boolc( contains( val = -string_value end = ` ` ) ) = abap_true. - lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ). - ENDIF. - lo_sub_element->set_value( value = -string_value ). + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t + parent = lo_document ). + IF boolc( contains( val = -string_value start = ` ` ) ) = abap_true + OR boolc( contains( val = -string_value end = ` ` ) ) = abap_true. + lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ). + ENDIF. + lo_sub_element->set_value( value = -string_value ). ELSE. LOOP AT -rtf_tab ASSIGNING . lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_r @@ -3846,7 +3846,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lc_xml_attr_priority TYPE string VALUE 'priority', lc_xml_attr_operator TYPE string VALUE 'operator', lc_xml_attr_text TYPE string VALUE 'text', - lc_xml_attr_notContainsText TYPE string VALUE 'notContainsText', + lc_xml_attr_notcontainstext TYPE string VALUE 'notContainsText', lc_xml_attr_allowblank TYPE string VALUE 'allowBlank', lc_xml_attr_showinputmessage TYPE string VALUE 'showInputMessage', lc_xml_attr_showerrormessage TYPE string VALUE 'showErrorMessage', @@ -4645,7 +4645,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lv_value = lo_style_cond->mode_textfunction-textfunction. ENDIF. ELSE. - lv_value = lo_style_cond->rule. + lv_value = lo_style_cond->rule. ENDIF. lo_element_2->set_attribute_ns( name = lc_xml_attr_type value = lv_value ). @@ -5536,7 +5536,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. io_element_root->append_child( lo_element ). - ENDIF. + ENDIF. ENDMETHOD. METHOD create_xl_sheet_column_formula. @@ -7276,16 +7276,16 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. METHOD create_xl_styles_font_node. - CONSTANTS: lc_xml_node_b TYPE string VALUE 'b', "bold - lc_xml_node_i TYPE string VALUE 'i', "italic - lc_xml_node_u TYPE string VALUE 'u', "underline - lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_name TYPE string VALUE 'name', - lc_xml_node_rfont TYPE string VALUE 'rFont', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_scheme TYPE string VALUE 'scheme', - lc_xml_attr_val TYPE string VALUE 'val'. + CONSTANTS: lc_xml_node_b TYPE string VALUE 'b', "bold + lc_xml_node_i TYPE string VALUE 'i', "italic + lc_xml_node_u TYPE string VALUE 'u', "underline + lc_xml_node_strike TYPE string VALUE 'strike', "strikethrough + lc_xml_node_sz TYPE string VALUE 'sz', + lc_xml_node_name TYPE string VALUE 'name', + lc_xml_node_rfont TYPE string VALUE 'rFont', + lc_xml_node_family TYPE string VALUE 'family', + lc_xml_node_scheme TYPE string VALUE 'scheme', + lc_xml_attr_val TYPE string VALUE 'val'. DATA: lo_document TYPE REF TO if_ixml_document, lo_element_font TYPE REF TO if_ixml_element, @@ -7297,74 +7297,74 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element_font = io_parent. ls_font = is_font. - IF ls_font-bold EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-italic EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-underline EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u - parent = lo_document ). - lv_value = ls_font-underline_mode. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - IF ls_font-strikethrough EQ abap_true. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike - parent = lo_document ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. - "size - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz + IF ls_font-bold EQ abap_true. + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b parent = lo_document ). - lv_value = ls_font-size. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. + lo_element_font->append_child( new_child = lo_sub_element ). + ENDIF. + IF ls_font-italic EQ abap_true. + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i + parent = lo_document ). + lo_element_font->append_child( new_child = lo_sub_element ). + ENDIF. + IF ls_font-underline EQ abap_true. + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u + parent = lo_document ). + lv_value = ls_font-underline_mode. lo_sub_element->set_attribute_ns( name = lc_xml_attr_val value = lv_value ). lo_element_font->append_child( new_child = lo_sub_element ). - "color - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_element_font - is_color = ls_font-color ). + ENDIF. + IF ls_font-strikethrough EQ abap_true. + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike + parent = lo_document ). + lo_element_font->append_child( new_child = lo_sub_element ). + ENDIF. + "size + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz + parent = lo_document ). + lv_value = ls_font-size. + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_val + value = lv_value ). + lo_element_font->append_child( new_child = lo_sub_element ). + "color + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_element_font + is_color = ls_font-color ). - "name - IF iv_use_rtf = abap_false. + "name + IF iv_use_rtf = abap_false. lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name parent = lo_document ). - ELSE. + ELSE. lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_rfont parent = lo_document ). - ENDIF. - lv_value = ls_font-name. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - "family - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family + ENDIF. + lv_value = ls_font-name. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_val + value = lv_value ). + lo_element_font->append_child( new_child = lo_sub_element ). + "family + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family + parent = lo_document ). + lv_value = ls_font-family. + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_val + value = lv_value ). + lo_element_font->append_child( new_child = lo_sub_element ). + "scheme + IF ls_font-scheme IS NOT INITIAL. + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme parent = lo_document ). - lv_value = ls_font-family. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. + lv_value = ls_font-scheme. lo_sub_element->set_attribute_ns( name = lc_xml_attr_val value = lv_value ). lo_element_font->append_child( new_child = lo_sub_element ). - "scheme - IF ls_font-scheme IS NOT INITIAL. - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme - parent = lo_document ). - lv_value = ls_font-scheme. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_val - value = lv_value ). - lo_element_font->append_child( new_child = lo_sub_element ). - ENDIF. + ENDIF. ENDMETHOD. @@ -7903,8 +7903,8 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. * READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. IF it_rtf IS INITIAL. - READ TABLE shared_strings INTO ls_shared_string WITH TABLE KEY string_value = ip_cell_value. - ep_index = ls_shared_string-string_no. + READ TABLE shared_strings INTO ls_shared_string WITH TABLE KEY string_value = ip_cell_value. + ep_index = ls_shared_string-string_no. ELSE. LOOP AT shared_strings INTO ls_shared_string WHERE string_value = ip_cell_value AND rtf_tab = it_rtf. diff --git a/src/zcl_excel_writer_csv.clas.abap b/src/zcl_excel_writer_csv.clas.abap index 44f4560..dbab77d 100644 --- a/src/zcl_excel_writer_csv.clas.abap +++ b/src/zcl_excel_writer_csv.clas.abap @@ -53,7 +53,7 @@ ENDCLASS. -CLASS ZCL_EXCEL_WRITER_CSV IMPLEMENTATION. +CLASS zcl_excel_writer_csv IMPLEMENTATION. METHOD create. diff --git a/src/zcl_excel_writer_huge_file.clas.abap b/src/zcl_excel_writer_huge_file.clas.abap index c271f92..46e28e9 100644 --- a/src/zcl_excel_writer_huge_file.clas.abap +++ b/src/zcl_excel_writer_huge_file.clas.abap @@ -69,7 +69,7 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. ********************************************************************** * STEP 0: Build Regex for invalid characters -" uccpi returns 2 chars but for this specific input 1 char is enough + " uccpi returns 2 chars but for this specific input 1 char is enough CASE cl_abap_char_utilities=>charsize. WHEN 1.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 255 ). " FF in non-Unicode WHEN 2.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 65533 )." FFFD in Unicode From 3167c6a8f26ca21b353a8b342c2d9a62acfa3b15 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Mon, 29 Nov 2021 14:40:22 +0100 Subject: [PATCH 06/19] huge reader reading cells multiple styles (#897) * huge reader reading cells multiple styles Fix #614 Co-authored-by: sandraros Co-authored-by: Abo --- src/zcl_excel_reader_huge_file.clas.abap | 24 +++++++++++-------- ...cel_reader_huge_file.clas.testclasses.abap | 24 +++++++++++++++++++ 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/zcl_excel_reader_huge_file.clas.abap b/src/zcl_excel_reader_huge_file.clas.abap index 99aa7b0..714402e 100644 --- a/src/zcl_excel_reader_huge_file.clas.abap +++ b/src/zcl_excel_reader_huge_file.clas.abap @@ -249,16 +249,20 @@ CLASS zcl_excel_reader_huge_file IMPLEMENTATION. WHILE io_reader->node_type NE c_end_of_stream. io_reader->next_node( ). - IF io_reader->name EQ `t`. - CASE io_reader->node_type . - WHEN c_element_open . - CLEAR lv_value . - WHEN c_node_value . - lv_value = lv_value && io_reader->value . - WHEN c_element_close . - APPEND lv_value TO et_shared_strings. - ENDCASE . - ENDIF. + CASE io_reader->name. + WHEN 'si'. + CASE io_reader->node_type . + WHEN c_element_open . + CLEAR lv_value . + WHEN c_element_close . + APPEND lv_value TO et_shared_strings. + ENDCASE . + WHEN 't'. + CASE io_reader->node_type . + WHEN c_node_value . + lv_value = lv_value && io_reader->value . + ENDCASE . + ENDCASE . ENDWHILE. ENDMETHOD. diff --git a/src/zcl_excel_reader_huge_file.clas.testclasses.abap b/src/zcl_excel_reader_huge_file.clas.testclasses.abap index f7e98c2..d06f54a 100644 --- a/src/zcl_excel_reader_huge_file.clas.testclasses.abap +++ b/src/zcl_excel_reader_huge_file.clas.testclasses.abap @@ -25,6 +25,7 @@ CLASS lcl_test DEFINITION FOR TESTING test_formula FOR TESTING RAISING cx_static_check, test_read_shared_strings FOR TESTING RAISING cx_static_check, test_shared_string_some_empty FOR TESTING RAISING cx_static_check, + test_shared_string_multi_style FOR TESTING RAISING cx_static_check, test_skip_to_inexistent FOR TESTING RAISING cx_static_check, get_reader IMPORTING iv_xml TYPE string RETURNING VALUE(eo_reader) TYPE REF TO if_sxml_reader, assert_value_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_value TYPE string, @@ -230,6 +231,29 @@ CLASS lcl_test IMPLEMENTATION. ENDMETHOD. +* + METHOD test_shared_string_multi_style. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lt_act TYPE stringtab, + lt_exp TYPE stringtab. + lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( + `` && + `Cell A2` && + `the following coloured part will be preserved` && + `Cell A3` && + `` ) ). + APPEND : + `Cell A2` TO lt_exp, + `the following coloured part will be preserved` TO lt_exp, + `Cell A3` TO lt_exp. + + lt_act = out->read_shared_strings( lo_reader ). + + cl_abap_unit_assert=>assert_equals( act = lt_act + exp = lt_exp ). + + ENDMETHOD. + * METHOD test_skip_to_inexistent. From a5a1d65c3a84e1d9aef264ca4b5689a185d2b10b Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Fri, 3 Dec 2021 09:58:01 +0100 Subject: [PATCH 07/19] changelog (#887) * zcl_excel_apack version 7.14.0 * Create changelog.txt * Proposing a bigger changelog FWIW * zcl_excel=>version = '7.14.0' Co-authored-by: sandraros Co-authored-by: Abo --- .apack-manifest.xml | 12 ++++ changelog.txt | 122 ++++++++++++++++++++++++++++++++++ src/zcl_excel.clas.abap | 2 +- src/zcl_excel_apack.clas.abap | 32 +++++++++ src/zcl_excel_apack.clas.xml | 16 +++++ 5 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 .apack-manifest.xml create mode 100644 changelog.txt create mode 100644 src/zcl_excel_apack.clas.abap create mode 100644 src/zcl_excel_apack.clas.xml diff --git a/.apack-manifest.xml b/.apack-manifest.xml new file mode 100644 index 0000000..78a3d01 --- /dev/null +++ b/.apack-manifest.xml @@ -0,0 +1,12 @@ + + + + + github.com/sapmentors/abap2xlsx + abap2xlsx + 7.14.0 + abapGit + https://github.com/sapmentors/abap2xlsx.git + + + diff --git a/changelog.txt b/changelog.txt new file mode 100644 index 0000000..2af5c70 --- /dev/null +++ b/changelog.txt @@ -0,0 +1,122 @@ +abapGit changelog +================= + +Legend +------ +* : fixed +! : changed ++ : added +- : removed + +2021-11-11 v7.14.0 +------------------ ++ changelog +! Refactor ABAP Cloud: column width based on SAP font +! Refactor ABAP Cloud: DDIC references changed +! Refactor ABAP Cloud: collection classes +! Refactor: split unit tests into one method per case +! pretty print zcl_excel_worksheet +* SET_CELL_FORMULA: set formula even if cell was uninitialized +! Refactor: replace all macros with methods ++ Add ability to generate report from template +* Read range of print titles ++ Multiple Styles in One Cell ("rich text format") ++ Bind ALV with non-displayed SALV data ++ new feature "Ignored Errors" +* Ignore invalid Excel Table names ++ new feature "Calculated Columns" +* better error message for ZDEMO_EXCEL25 + +2021-10-11 v7.13.0 +------------------ +! zcl_excel_common: refactor unit tests +! Refactor: replace zcl_excel_aunit with cl_abap_unit_assert +! Refactor ABAP Cloud: DDIC references changed +* clear Style exporting parameter in GET_CELL ++ Conditional Formatting for Cells that "Begin With" and more +- Delete unused customui objects +* ZDEMO_EXCEL37 incorrect screen field labels +* SHIFT_FORMULA +! Refactor: replace macro with method in zcl_excel_style_number_format +* autofilter messed up if several sheets +* autofilter + filtering value, then read it, the filtering value is lost +* autofilter on row 2 is incorrectly set on row 1 +! Refactor: change EXIT to RETURN, where applicable +! Refactor: zcl_excel_common: refactor STATICS to CLASS-DATA +* Writer: trailing spaces of cell values lost +! Refactor: move zexcel_s_org_rel to demos +! update to latest abapGit format +! abaplint to not change sy fields anymore +! Refactor: Do not change sy fields anymore +! abapGit diff says zdemo_calendar_classes has changed +! update abaplint configuration to latest +! Refactor: Move non-Cloud code to separate package (#795) … +* Reader: empty Excel date -> ABAP 00000000 + +2021-09-11 v7.12.0 +------------------ +! First draft of the contributing guidelines +! Refactor: remove usage of CHAR07 domain + +2021-08-11 v7.11.0 +------------------ +! Pretty print on all source code +! Create coding-guidelines.md +! remove usage of CHAR08 DTEL +! remove usage of CHAR10 domain +! remove usage of OS_BOOLEAN + +2021-07-11 v7.10.0 +------------------ +! remove unused DOMA +! Reader: wrong worksheet dimension +* GET_TABLE: support fields of type date +* Vietnamese, Emoji and other characters not rendered in old SAP versions +* SET_TABLE: support table headers with newline +* SET_CELL: support values with wildcard format like `_x0041_` + +2021-06-11 v7.9.0 +------------------ +! update linter config to latest ++ Remove 15 chars. limit at encrypt password ++ Reader to read range of hyperlinks and new method SET_AREA_HYPERLINK +* Vietnamese, Emoji and other characters not rendered +* Update of ZDEMO_EXCEL31 to use CALCULATE_COLUMN_WIDTHS +! remove CHAR01 + +2021-05-11 v7.8.0 +------------------ +! remove "BOOLEAN" domain +! replace messages with ones from ZABAP2XLSX message class + +2021-04-11 v7.7.0 +------------------ +! remove CHAR_02 domain +! abapGit format update + +2021-03-11 v7.6.0 +------------------ +! AUnit warning zcl excel reader huge file "# au > "#au +! Remove doma ZEXCEL_BOOLE01 + +2021-02-11 v7.5.0 +------------------ ++ Possibility to get the fieldcatalog with mandt +! cleanup types in zif_excel_book_protection + +2021-01-11 v7.4.0 +------------------ +! warning about SAPLink in documentation, and replace obsolete links in zangry_birds and zdemo_excel1 +! remove XFELD usage +! Dynamic prefill of date in zdemo_calendar + +2021-12-11 v7.3.0 +------------------ +* Fix in ZDEMO_EXCEL11: Field-symbol usage +! Update abapGit-installation.md + +2021-11-11 v7.2.0 +------------------ +! Improve Documentaiton +! Fix package errors ++ Feature: Enable custom converters diff --git a/src/zcl_excel.clas.abap b/src/zcl_excel.clas.abap index 2cb5f6e..0a709ec 100644 --- a/src/zcl_excel.clas.abap +++ b/src/zcl_excel.clas.abap @@ -156,7 +156,7 @@ CLASS zcl_excel DEFINITION DATA worksheets TYPE REF TO zcl_excel_worksheets . PRIVATE SECTION. - CONSTANTS version TYPE c LENGTH 10 VALUE '7.2.0'. "#EC NOTEXT + CONSTANTS version TYPE c LENGTH 10 VALUE '7.14.0'. "#EC NOTEXT DATA autofilters TYPE REF TO zcl_excel_autofilters . DATA charts TYPE REF TO zcl_excel_drawings . DATA default_style TYPE zexcel_cell_style . diff --git a/src/zcl_excel_apack.clas.abap b/src/zcl_excel_apack.clas.abap new file mode 100644 index 0000000..c91160d --- /dev/null +++ b/src/zcl_excel_apack.clas.abap @@ -0,0 +1,32 @@ +CLASS zcl_excel_apack DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + INTERFACES if_apack_manifest. + + METHODS: constructor. + + ALIASES descriptor FOR if_apack_manifest~descriptor. + + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS zcl_excel_apack IMPLEMENTATION. + + METHOD constructor. + + descriptor-group_id = 'github.com/sapmentors/abap2xlsx'. + descriptor-artifact_id = 'abap2xlsx'. + descriptor-version = '7.14.0'. + descriptor-repository_type = 'abapGit'. + descriptor-git_url = 'https://github.com/sapmentors/abap2xlsx.git'. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zcl_excel_apack.clas.xml b/src/zcl_excel_apack.clas.xml new file mode 100644 index 0000000..f48bc93 --- /dev/null +++ b/src/zcl_excel_apack.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_EXCEL_APACK + E + abap2xlsx version and dependencies + 1 + X + X + X + + + + From 730ab2f1744431aa38b9848149b83e77783b930a Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 3 Dec 2021 12:21:52 +0100 Subject: [PATCH 08/19] remove use of DTEL DSTRING (#900) use builtin type instead, ref #692 Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- src/zexcel_s_table_settings.tabl.xml | 6 ++++-- src/zexcel_s_worksheet_head_foot.tabl.xml | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/zexcel_s_table_settings.tabl.xml b/src/zexcel_s_table_settings.tabl.xml index 9ac440a..da593d1 100644 --- a/src/zexcel_s_table_settings.tabl.xml +++ b/src/zexcel_s_table_settings.tabl.xml @@ -18,9 +18,11 @@ TABLE_NAME - DSTRING 0 - E + g + 000008 + STRG + STRG TOP_LEFT_COLUMN diff --git a/src/zexcel_s_worksheet_head_foot.tabl.xml b/src/zexcel_s_worksheet_head_foot.tabl.xml index ee6b25d..d439e3a 100644 --- a/src/zexcel_s_worksheet_head_foot.tabl.xml +++ b/src/zexcel_s_worksheet_head_foot.tabl.xml @@ -12,9 +12,11 @@ LEFT_VALUE - DSTRING 0 - E + g + 000008 + STRG + STRG LEFT_FONT @@ -26,9 +28,11 @@ CENTER_VALUE - DSTRING 0 - E + g + 000008 + STRG + STRG CENTER_FONT @@ -40,9 +44,11 @@ RIGHT_VALUE - DSTRING 0 - E + g + 000008 + STRG + STRG RIGHT_FONT From adde441cd2b3bd1c874d10ab3d8e253573e2a794 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Fri, 3 Dec 2021 15:25:17 +0100 Subject: [PATCH 09/19] remove use of DOMA INT2 (#899) use builtin type instead, ref #692 Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- src/zexcel_sheet_zoomscale.dtel.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/zexcel_sheet_zoomscale.dtel.xml b/src/zexcel_sheet_zoomscale.dtel.xml index 7f463aa..4732eb4 100644 --- a/src/zexcel_sheet_zoomscale.dtel.xml +++ b/src/zexcel_sheet_zoomscale.dtel.xml @@ -5,7 +5,6 @@ ZEXCEL_SHEET_ZOOMSCALE E - INT2 16 10 16 @@ -16,7 +15,9 @@ Sheet Zoom Scale Sheet Zoom Scale E - D + INT2 + 000005 + 000006 From 3eaf645fe28249fdd4cf478ff62bf97f6dba1756 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 4 Dec 2021 12:14:02 +0100 Subject: [PATCH 10/19] Error on year 2021 -> 2020 (#901) --- changelog.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.txt b/changelog.txt index 2af5c70..d95465d 100644 --- a/changelog.txt +++ b/changelog.txt @@ -110,12 +110,12 @@ Legend ! remove XFELD usage ! Dynamic prefill of date in zdemo_calendar -2021-12-11 v7.3.0 +2020-12-11 v7.3.0 ------------------ * Fix in ZDEMO_EXCEL11: Field-symbol usage ! Update abapGit-installation.md -2021-11-11 v7.2.0 +2020-11-11 v7.2.0 ------------------ ! Improve Documentaiton ! Fix package errors From 6ffcba1aa1f5a59a8c49188ff618fa969c810963 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 11 Dec 2021 11:21:50 +0100 Subject: [PATCH 11/19] # Huge writer error height/hight and fit to page (#912) Fix #553 Co-authored-by: sandraros --- src/zcl_excel_writer_huge_file.clas.abap | 2 -- src/zexcel_tr_sheet.xslt.source.xml | 18 +++++++++--------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/zcl_excel_writer_huge_file.clas.abap b/src/zcl_excel_writer_huge_file.clas.abap index 46e28e9..d97dffa 100644 --- a/src/zcl_excel_writer_huge_file.clas.abap +++ b/src/zcl_excel_writer_huge_file.clas.abap @@ -249,7 +249,6 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. draft TYPE c, errors TYPE string, firstpagenumber TYPE i, - fittopage TYPE c, fittoheight TYPE i, fittowidth TYPE i, horizontaldpi TYPE i, @@ -676,7 +675,6 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. l_worksheet-pagesetup-cellcomments = io_worksheet->sheet_setup->cell_comments. l_worksheet-pagesetup-copies = io_worksheet->sheet_setup->copies. l_worksheet-pagesetup-firstpagenumber = io_worksheet->sheet_setup->first_page_number. - l_worksheet-pagesetup-fittopage = io_worksheet->sheet_setup->fit_to_page. l_worksheet-pagesetup-fittoheight = io_worksheet->sheet_setup->fit_to_height. l_worksheet-pagesetup-fittowidth = io_worksheet->sheet_setup->fit_to_width. l_worksheet-pagesetup-horizontaldpi = io_worksheet->sheet_setup->horizontal_dpi. diff --git a/src/zexcel_tr_sheet.xslt.source.xml b/src/zexcel_tr_sheet.xslt.source.xml index ba1f533..e7bd3ee 100644 --- a/src/zexcel_tr_sheet.xslt.source.xml +++ b/src/zexcel_tr_sheet.xslt.source.xml @@ -27,12 +27,12 @@ + + + + + - - - - - @@ -112,8 +112,8 @@ - - + + @@ -229,8 +229,8 @@ - - + + From 41196fd58a6d6389a90d8784cf0e66493623872b Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sun, 12 Dec 2021 09:13:19 +0100 Subject: [PATCH 12/19] README.md, update urls (#914) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 07110cf..825ed9a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # abap2xlsx - Read and generate Excel Spreadsheets with ABAP -For general information please refer to the blog series [abap2xlsx - Generate your professional Excel spreadsheet from ABAP](http://scn.sap.com/community/abap/blog/2010/07/12/abap2xlsx--generate-your-professional-excel-spreadsheet-from-abap) and the [documentation](https://sapmentors.github.io/abap2xlsx/). -Please refer to the official wiki for the [abapGit installation guide](https://sapmentors.github.io/abap2xlsx/abapGit-installation). +For general information please refer to the blog series [abap2xlsx - Generate your professional Excel spreadsheet from ABAP](http://scn.sap.com/community/abap/blog/2010/07/12/abap2xlsx--generate-your-professional-excel-spreadsheet-from-abap) and the [documentation](https://abap2xlsx/.github.io/abap2xlsx/). +Please refer to the official wiki for the [abapGit installation guide](https://abap2xlsx/.github.io/abap2xlsx/abapGit-installation). For questions, bug reports and more information on contributing to the project, please refer to the [contributing guidelines](./CONTRIBUTING.md). From 6532e0e0b5790064a5f683e4d2970d81a9ab007e Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sun, 12 Dec 2021 09:14:17 +0100 Subject: [PATCH 13/19] + worksheet columns right-to-left (#911) fix #890 Co-authored-by: sandraros Co-authored-by: Lars Hvam --- src/zcl_excel_reader_2007.clas.abap | 5 +++++ src/zcl_excel_worksheet.clas.abap | 11 +++++++++++ src/zcl_excel_writer_2007.clas.abap | 4 ++++ src/zcl_excel_writer_huge_file.clas.abap | 7 +++++++ src/zexcel_tr_sheet.xslt.source.xml | 1 + src/zif_excel_sheet_properties.intf.abap | 6 ++++++ 6 files changed, 34 insertions(+) diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index 023c5f9..4307e24 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -2212,6 +2212,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. zoomscalenormal TYPE string, workbookviewid TYPE string, showrowcolheaders TYPE string, + righttoleft TYPE string, END OF lty_sheetview. TYPES: BEGIN OF lty_mergecell, @@ -2728,6 +2729,10 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. ls_sheetview-showgridlines = abap_false. ENDIF. io_worksheet->set_show_gridlines( ls_sheetview-showgridlines ). + IF ls_sheetview-righttoleft = lc_xml_attr_true + OR ls_sheetview-righttoleft = lc_xml_attr_true_int. + io_worksheet->zif_excel_sheet_properties~set_right_to_left( abap_true ). + ENDIF. "Add merge cell information diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index e647e30..1532826 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -667,6 +667,7 @@ CLASS zcl_excel_worksheet DEFINITION DATA title TYPE zexcel_sheet_title VALUE 'Worksheet'. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . " . DATA upper_cell TYPE zexcel_s_cell_data . DATA mt_ignored_errors TYPE mty_th_ignored_errors. + DATA right_to_left TYPE abap_bool. METHODS calculate_cell_width IMPORTING @@ -4260,6 +4261,11 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDMETHOD. "ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_ROWS + METHOD zif_excel_sheet_properties~get_right_to_left. + result = right_to_left. + ENDMETHOD. + + METHOD zif_excel_sheet_properties~get_style. IF zif_excel_sheet_properties~style IS NOT INITIAL. ep_style = zif_excel_sheet_properties~style. @@ -4283,6 +4289,11 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. ENDMETHOD. "ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE + METHOD zif_excel_sheet_properties~set_right_to_left. + me->right_to_left = right_to_left. + ENDMETHOD. + + METHOD zif_excel_sheet_properties~set_style. zif_excel_sheet_properties~style = ip_style. ENDMETHOD. "ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index abf6f32..9fc333a 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -4088,6 +4088,10 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element_2->set_attribute_ns( name = lc_xml_attr_zoomscalesheetview value = lv_value ). ENDIF. + IF io_worksheet->zif_excel_sheet_properties~get_right_to_left( ) EQ abap_true. + lo_element_2->set_attribute_ns( name = 'rightToLeft' + value = '1' ). + ENDIF. lo_element_2->set_attribute_ns( name = lc_xml_attr_workbookviewid value = '0' ). " showGridLines attribute diff --git a/src/zcl_excel_writer_huge_file.clas.abap b/src/zcl_excel_writer_huge_file.clas.abap index d97dffa..68f6eb1 100644 --- a/src/zcl_excel_writer_huge_file.clas.abap +++ b/src/zcl_excel_writer_huge_file.clas.abap @@ -209,6 +209,7 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. zoomscalenormal TYPE i, zoomscalepageview TYPE i, zoomscalesheetview TYPE i, + righttoleft TYPE i, workbookviewid TYPE c, showgridlines TYPE c, showrowcolheaders TYPE c, @@ -380,6 +381,12 @@ CLASS zcl_excel_writer_huge_file IMPLEMENTATION. l_worksheet-zoomscalesheetview = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview. ENDIF. + IF io_worksheet->zif_excel_sheet_properties~get_right_to_left( ) EQ abap_true. + l_worksheet-righttoleft = lc_one. + ELSE. + l_worksheet-righttoleft = lc_zero. + ENDIF. + l_worksheet-workbookviewid = lc_zero. IF io_worksheet->show_gridlines = abap_true. diff --git a/src/zexcel_tr_sheet.xslt.source.xml b/src/zexcel_tr_sheet.xslt.source.xml index e7bd3ee..56f8c96 100644 --- a/src/zexcel_tr_sheet.xslt.source.xml +++ b/src/zexcel_tr_sheet.xslt.source.xml @@ -48,6 +48,7 @@ + diff --git a/src/zif_excel_sheet_properties.intf.abap b/src/zif_excel_sheet_properties.intf.abap index f68aa9c..9eda219 100644 --- a/src/zif_excel_sheet_properties.intf.abap +++ b/src/zif_excel_sheet_properties.intf.abap @@ -25,9 +25,15 @@ INTERFACE zif_excel_sheet_properties DATA hide_columns_from TYPE zexcel_cell_column_alpha . METHODS initialize . + METHODS get_right_to_left + RETURNING + VALUE(result) TYPE abap_bool. METHODS get_style RETURNING VALUE(ep_style) TYPE zexcel_cell_style . + METHODS set_right_to_left + IMPORTING + !right_to_left TYPE abap_bool . METHODS set_style IMPORTING !ip_style TYPE zexcel_cell_style . From cb315c557225928baacbbcfd42087c3a8ed34a12 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sun, 12 Dec 2021 13:21:01 +0100 Subject: [PATCH 14/19] Reader fails for workbook with chart (#910) * Reader fails for workbook with chart fix #790 * pretty printer Co-authored-by: sandraros Co-authored-by: Lars Hvam --- src/zcl_excel_drawing.clas.abap | 42 ++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/src/zcl_excel_drawing.clas.abap b/src/zcl_excel_drawing.clas.abap index 51a0521..f08e51c 100644 --- a/src/zcl_excel_drawing.clas.abap +++ b/src/zcl_excel_drawing.clas.abap @@ -825,8 +825,10 @@ CLASS zcl_excel_drawing IMPLEMENTATION. node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ). node2 ?= node->find_from_name( name = 'marker' namespace = 'c' depth = '1' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_markerval = ls_prop-val. + IF node2 IS BOUND. + zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). + lo_linechart->ns_markerval = ls_prop-val. + ENDIF. node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' depth = '1' ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). lo_linechart->ns_smoothval = ls_prop-val. @@ -973,25 +975,37 @@ CLASS zcl_excel_drawing IMPLEMENTATION. CASE me->graph_type. WHEN c_graph_bars. node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_legendposval = ls_prop-val. + IF node2 IS BOUND. + zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). + lo_barchart->ns_legendposval = ls_prop-val. + ENDIF. node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_barchart->ns_overlayval = ls_prop-val. + IF node2 IS BOUND. + zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). + lo_barchart->ns_overlayval = ls_prop-val. + ENDIF. WHEN c_graph_line. node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_legendposval = ls_prop-val. + IF node2 IS BOUND. + zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). + lo_linechart->ns_legendposval = ls_prop-val. + ENDIF. node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_linechart->ns_overlayval = ls_prop-val. + IF node2 IS BOUND. + zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). + lo_linechart->ns_overlayval = ls_prop-val. + ENDIF. WHEN c_graph_pie. node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_legendposval = ls_prop-val. + IF node2 IS BOUND. + zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). + lo_piechart->ns_legendposval = ls_prop-val. + ENDIF. node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ). - zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). - lo_piechart->ns_overlayval = ls_prop-val. + IF node2 IS BOUND. + zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). + lo_piechart->ns_overlayval = ls_prop-val. + ENDIF. node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ). zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ). lo_piechart->ns_pprrtl = ls_prop-rtl. From 7898a21548817866e2635268e2b2cea8c13a78e4 Mon Sep 17 00:00:00 2001 From: Christian Aasan Date: Sun, 12 Dec 2021 15:37:37 +0100 Subject: [PATCH 15/19] Correcting broken links after moving of repo (#916) The link to the documentation and abapGit installation instructions are broken after the move. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 825ed9a..67d7994 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # abap2xlsx - Read and generate Excel Spreadsheets with ABAP -For general information please refer to the blog series [abap2xlsx - Generate your professional Excel spreadsheet from ABAP](http://scn.sap.com/community/abap/blog/2010/07/12/abap2xlsx--generate-your-professional-excel-spreadsheet-from-abap) and the [documentation](https://abap2xlsx/.github.io/abap2xlsx/). -Please refer to the official wiki for the [abapGit installation guide](https://abap2xlsx/.github.io/abap2xlsx/abapGit-installation). +For general information please refer to the blog series [abap2xlsx - Generate your professional Excel spreadsheet from ABAP](http://scn.sap.com/community/abap/blog/2010/07/12/abap2xlsx--generate-your-professional-excel-spreadsheet-from-abap) and the [documentation](https://abap2xlsx.github.io/abap2xlsx/). +Please refer to the official wiki for the [abapGit installation guide](https://abap2xlsx.github.io/abap2xlsx/abapGit-installation). For questions, bug reports and more information on contributing to the project, please refer to the [contributing guidelines](./CONTRIBUTING.md). From 0f51d6d884dc2b376ca6ca76bfe124cd054014cc Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Tue, 14 Dec 2021 22:57:06 +0100 Subject: [PATCH 16/19] refactor method change_cell_style in zcl_excel_worksheet (#904) * refactor worksheet change_cell_style Co-authored-by: sandraros Co-authored-by: Abo --- src/zcl_excel_style_changer.clas.abap | 1675 +++++++++++++++++++++++++ src/zcl_excel_style_changer.clas.xml | 16 + src/zcl_excel_worksheet.clas.abap | 529 +++----- src/zif_excel_style_changer.intf.abap | 495 ++++++++ src/zif_excel_style_changer.intf.xml | 15 + 5 files changed, 2343 insertions(+), 387 deletions(-) create mode 100644 src/zcl_excel_style_changer.clas.abap create mode 100644 src/zcl_excel_style_changer.clas.xml create mode 100644 src/zif_excel_style_changer.intf.abap create mode 100644 src/zif_excel_style_changer.intf.xml diff --git a/src/zcl_excel_style_changer.clas.abap b/src/zcl_excel_style_changer.clas.abap new file mode 100644 index 0000000..22bcfd0 --- /dev/null +++ b/src/zcl_excel_style_changer.clas.abap @@ -0,0 +1,1675 @@ +CLASS zcl_excel_style_changer DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + INTERFACES zif_excel_style_changer. + + CLASS-METHODS create + IMPORTING + excel TYPE REF TO zcl_excel + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer + RAISING + zcx_excel. + + PROTECTED SECTION. + PRIVATE SECTION. + + METHODS clear_initial_colorxfields + IMPORTING + is_color TYPE zexcel_s_style_color + CHANGING + cs_xcolor TYPE zexcel_s_cstylex_color. + + METHODS move_supplied_borders + IMPORTING + iv_border_supplied TYPE abap_bool + is_border TYPE zexcel_s_cstyle_border + iv_xborder_supplied TYPE abap_bool + is_xborder TYPE zexcel_s_cstylex_border + CHANGING + cs_complete_style_border TYPE zexcel_s_cstyle_border + cs_complete_stylex_border TYPE zexcel_s_cstylex_border. + + DATA: excel TYPE REF TO zcl_excel, + lv_xborder_supplied TYPE abap_bool, + single_change_requested TYPE zexcel_s_cstylex_complete, + BEGIN OF multiple_change_requested, + complete TYPE abap_bool, + font TYPE abap_bool, + fill TYPE abap_bool, + BEGIN OF borders, + complete TYPE abap_bool, + allborders TYPE abap_bool, + diagonal TYPE abap_bool, + down TYPE abap_bool, + left TYPE abap_bool, + right TYPE abap_bool, + top TYPE abap_bool, + END OF borders, + alignment TYPE abap_bool, + protection TYPE abap_bool, + END OF multiple_change_requested. + CONSTANTS: + lv_border_supplied TYPE abap_bool VALUE abap_true. + ALIASES: + complete_style FOR zif_excel_style_changer~complete_style, + complete_stylex FOR zif_excel_style_changer~complete_stylex. + +ENDCLASS. + + + +CLASS zcl_excel_style_changer IMPLEMENTATION. + + + METHOD clear_initial_colorxfields. + + IF is_color-rgb IS INITIAL. + CLEAR cs_xcolor-rgb. + ENDIF. + IF is_color-indexed IS INITIAL. + CLEAR cs_xcolor-indexed. + ENDIF. + IF is_color-theme IS INITIAL. + CLEAR cs_xcolor-theme. + ENDIF. + IF is_color-tint IS INITIAL. + CLEAR cs_xcolor-tint. + ENDIF. + + ENDMETHOD. + + + METHOD create. + + DATA: style TYPE REF TO zcl_excel_style_changer. + + CREATE OBJECT style. + style->excel = excel. + result = style. + + ENDMETHOD. + + + METHOD move_supplied_borders. + + DATA: cs_borderx TYPE zexcel_s_cstylex_border. + + IF iv_border_supplied = abap_true. " only act if parameter was supplied + IF iv_xborder_supplied = abap_true. " + cs_borderx = is_xborder. " use supplied x-parameter + ELSE. + CLEAR cs_borderx WITH 'X'. " <============================== DDIC structure enh. category to set? + " clear in a way that would be expected to work easily + IF is_border-border_style IS INITIAL. + CLEAR cs_borderx-border_style. + ENDIF. + clear_initial_colorxfields( + EXPORTING + is_color = is_border-border_color + CHANGING + cs_xcolor = cs_borderx-border_color ). + ENDIF. + cs_complete_style_border = is_border. + cs_complete_stylex_border = cs_borderx. + ENDIF. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~apply. + + DATA: stylemapping TYPE zexcel_s_stylemapping, + lo_worksheet TYPE REF TO zcl_excel_worksheet, + l_guid TYPE zexcel_cell_style. + + lo_worksheet = excel->get_worksheet_by_name( ip_sheet_name = ip_worksheet->get_title( ) ). + IF lo_worksheet <> ip_worksheet. + zcx_excel=>raise_text( 'Worksheet doesn''t correspond to workbook of style changer'(001) ). + ENDIF. + + TRY. + ip_worksheet->get_cell( EXPORTING ip_column = ip_column + ip_row = ip_row + IMPORTING ep_guid = l_guid ). + stylemapping = excel->get_style_to_guid( l_guid ). + CATCH zcx_excel. +* Error --> use submitted style + ENDTRY. + + + IF multiple_change_requested-complete = abap_true. + stylemapping-complete_style = complete_style. + stylemapping-complete_stylex = complete_stylex. + ENDIF. + + IF multiple_change_requested-font = abap_true. + stylemapping-complete_style-font = complete_style-font. + stylemapping-complete_stylex-font = complete_stylex-font. + ENDIF. + + IF multiple_change_requested-fill = abap_true. + stylemapping-complete_style-fill = complete_style-fill. + stylemapping-complete_stylex-fill = complete_stylex-fill. + ENDIF. + + IF multiple_change_requested-borders-complete = abap_true. + stylemapping-complete_style-borders = complete_style-borders. + stylemapping-complete_stylex-borders = complete_stylex-borders. + ENDIF. + + IF multiple_change_requested-borders-allborders = abap_true. + stylemapping-complete_style-borders-allborders = complete_style-borders-allborders. + stylemapping-complete_stylex-borders-allborders = complete_stylex-borders-allborders. + ENDIF. + + IF multiple_change_requested-borders-diagonal = abap_true. + stylemapping-complete_style-borders-diagonal = complete_style-borders-diagonal. + stylemapping-complete_stylex-borders-diagonal = complete_stylex-borders-diagonal. + ENDIF. + + IF multiple_change_requested-borders-down = abap_true. + stylemapping-complete_style-borders-down = complete_style-borders-down. + stylemapping-complete_stylex-borders-down = complete_stylex-borders-down. + ENDIF. + + IF multiple_change_requested-borders-left = abap_true. + stylemapping-complete_style-borders-left = complete_style-borders-left. + stylemapping-complete_stylex-borders-left = complete_stylex-borders-left. + ENDIF. + + IF multiple_change_requested-borders-right = abap_true. + stylemapping-complete_style-borders-right = complete_style-borders-right. + stylemapping-complete_stylex-borders-right = complete_stylex-borders-right. + ENDIF. + + IF multiple_change_requested-borders-TOP = abap_true. + stylemapping-complete_style-borders-TOP = complete_style-borders-TOP. + stylemapping-complete_stylex-borders-TOP = complete_stylex-borders-TOP. + ENDIF. + + IF multiple_change_requested-alignment = abap_true. + stylemapping-complete_style-alignment = complete_style-alignment. + stylemapping-complete_stylex-alignment = complete_stylex-alignment. + ENDIF. + + IF multiple_change_requested-protection = abap_true. + stylemapping-complete_style-protection = complete_style-protection. + stylemapping-complete_stylex-protection = complete_stylex-protection. + ENDIF. + + IF complete_stylex-number_format = abap_true. + stylemapping-complete_style-number_format-format_code = complete_style-number_format-format_code. + stylemapping-complete_stylex-number_format-format_code = abap_true. + ENDIF. + IF complete_stylex-font-bold = abap_true. + stylemapping-complete_style-font-bold = complete_style-font-bold. + stylemapping-complete_stylex-font-bold = complete_stylex-font-bold. + ENDIF. + IF complete_stylex-font-color = abap_true. + stylemapping-complete_style-font-color = complete_style-font-color. + stylemapping-complete_stylex-font-color = complete_stylex-font-color. + ENDIF. + IF complete_stylex-font-color-rgb = abap_true. + stylemapping-complete_style-font-color-rgb = complete_style-font-color-rgb. + stylemapping-complete_stylex-font-color-rgb = complete_stylex-font-color-rgb. + ENDIF. + IF complete_stylex-font-color-indexed = abap_true. + stylemapping-complete_style-font-color-indexed = complete_style-font-color-indexed. + stylemapping-complete_stylex-font-color-indexed = complete_stylex-font-color-indexed. + ENDIF. + IF complete_stylex-font-color-theme = abap_true. + stylemapping-complete_style-font-color-theme = complete_style-font-color-theme. + stylemapping-complete_stylex-font-color-theme = complete_stylex-font-color-theme. + ENDIF. + IF complete_stylex-font-color-tint = abap_true. + stylemapping-complete_style-font-color-tint = complete_style-font-color-tint. + stylemapping-complete_stylex-font-color-tint = complete_stylex-font-color-tint. + ENDIF. + IF complete_stylex-font-family = abap_true. + stylemapping-complete_style-font-family = complete_style-font-family. + stylemapping-complete_stylex-font-family = complete_stylex-font-family. + ENDIF. + IF complete_stylex-font-italic = abap_true. + stylemapping-complete_style-font-italic = complete_style-font-italic. + stylemapping-complete_stylex-font-italic = complete_stylex-font-italic. + ENDIF. + IF complete_stylex-font-name = abap_true. + stylemapping-complete_style-font-name = complete_style-font-name. + stylemapping-complete_stylex-font-name = complete_stylex-font-name. + ENDIF. + IF complete_stylex-font-scheme = abap_true. + stylemapping-complete_style-font-scheme = complete_style-font-scheme. + stylemapping-complete_stylex-font-scheme = complete_stylex-font-scheme. + ENDIF. + IF complete_stylex-font-size = abap_true. + stylemapping-complete_style-font-size = complete_style-font-size. + stylemapping-complete_stylex-font-size = complete_stylex-font-size. + ENDIF. + IF complete_stylex-font-strikethrough = abap_true. + stylemapping-complete_style-font-strikethrough = complete_style-font-strikethrough. + stylemapping-complete_stylex-font-strikethrough = complete_stylex-font-strikethrough. + ENDIF. + IF complete_stylex-font-underline = abap_true. + stylemapping-complete_style-font-underline = complete_style-font-underline. + stylemapping-complete_stylex-font-underline = complete_stylex-font-underline. + ENDIF. + IF complete_stylex-font-underline_mode = abap_true. + stylemapping-complete_style-font-underline_mode = complete_style-font-underline_mode. + stylemapping-complete_stylex-font-underline_mode = complete_stylex-font-underline_mode. + ENDIF. + + IF complete_stylex-fill-filltype = abap_true. + stylemapping-complete_style-fill-filltype = complete_style-fill-filltype. + stylemapping-complete_stylex-fill-filltype = complete_stylex-fill-filltype. + ENDIF. + IF complete_stylex-fill-rotation = abap_true. + stylemapping-complete_style-fill-rotation = complete_style-fill-rotation. + stylemapping-complete_stylex-fill-rotation = complete_stylex-fill-rotation. + ENDIF. + IF complete_stylex-fill-fgcolor = abap_true. + stylemapping-complete_style-fill-fgcolor = complete_style-fill-fgcolor. + stylemapping-complete_stylex-fill-fgcolor = complete_stylex-fill-fgcolor. + ENDIF. + IF complete_stylex-fill-fgcolor-rgb = abap_true. + stylemapping-complete_style-fill-fgcolor-rgb = complete_style-fill-fgcolor-rgb. + stylemapping-complete_stylex-fill-fgcolor-rgb = complete_stylex-fill-fgcolor-rgb. + ENDIF. + IF complete_stylex-fill-fgcolor-indexed = abap_true. + stylemapping-complete_style-fill-fgcolor-indexed = complete_style-fill-fgcolor-indexed. + stylemapping-complete_stylex-fill-fgcolor-indexed = complete_stylex-fill-fgcolor-indexed. + ENDIF. + IF complete_stylex-fill-fgcolor-theme = abap_true. + stylemapping-complete_style-fill-fgcolor-theme = complete_style-fill-fgcolor-theme. + stylemapping-complete_stylex-fill-fgcolor-theme = complete_stylex-fill-fgcolor-theme. + ENDIF. + IF complete_stylex-fill-fgcolor-tint = abap_true. + stylemapping-complete_style-fill-fgcolor-tint = complete_style-fill-fgcolor-tint. + stylemapping-complete_stylex-fill-fgcolor-tint = complete_stylex-fill-fgcolor-tint. + ENDIF. + + IF complete_stylex-fill-bgcolor = abap_true. + stylemapping-complete_style-fill-bgcolor = complete_style-fill-bgcolor. + stylemapping-complete_stylex-fill-bgcolor = complete_stylex-fill-bgcolor. + ENDIF. + IF complete_stylex-fill-bgcolor-rgb = abap_true. + stylemapping-complete_style-fill-bgcolor-rgb = complete_style-fill-bgcolor-rgb. + stylemapping-complete_stylex-fill-bgcolor-rgb = complete_stylex-fill-bgcolor-rgb. + ENDIF. + IF complete_stylex-fill-bgcolor-indexed = abap_true. + stylemapping-complete_style-fill-bgcolor-indexed = complete_style-fill-bgcolor-indexed. + stylemapping-complete_stylex-fill-bgcolor-indexed = complete_stylex-fill-bgcolor-indexed. + ENDIF. + IF complete_stylex-fill-bgcolor-theme = abap_true. + stylemapping-complete_style-fill-bgcolor-theme = complete_style-fill-bgcolor-theme. + stylemapping-complete_stylex-fill-bgcolor-theme = complete_stylex-fill-bgcolor-theme. + ENDIF. + IF complete_stylex-fill-bgcolor-tint = abap_true. + stylemapping-complete_style-fill-bgcolor-tint = complete_style-fill-bgcolor-tint. + stylemapping-complete_stylex-fill-bgcolor-tint = complete_stylex-fill-bgcolor-tint. + ENDIF. + + IF complete_stylex-fill-gradtype-type = abap_true. + stylemapping-complete_style-fill-gradtype-type = complete_style-fill-gradtype-type. + stylemapping-complete_stylex-fill-gradtype-type = complete_stylex-fill-gradtype-type. + ENDIF. + IF complete_stylex-fill-gradtype-degree = abap_true. + stylemapping-complete_style-fill-gradtype-degree = complete_style-fill-gradtype-degree. + stylemapping-complete_stylex-fill-gradtype-degree = complete_stylex-fill-gradtype-degree. + ENDIF. + IF complete_stylex-fill-gradtype-bottom = abap_true. + stylemapping-complete_style-fill-gradtype-bottom = complete_style-fill-gradtype-bottom. + stylemapping-complete_stylex-fill-gradtype-bottom = complete_stylex-fill-gradtype-bottom. + ENDIF. + IF complete_stylex-fill-gradtype-left = abap_true. + stylemapping-complete_style-fill-gradtype-left = complete_style-fill-gradtype-left. + stylemapping-complete_stylex-fill-gradtype-left = complete_stylex-fill-gradtype-left. + ENDIF. + IF complete_stylex-fill-gradtype-top = abap_true. + stylemapping-complete_style-fill-gradtype-top = complete_style-fill-gradtype-top. + stylemapping-complete_stylex-fill-gradtype-top = complete_stylex-fill-gradtype-top. + ENDIF. + IF complete_stylex-fill-gradtype-right = abap_true. + stylemapping-complete_style-fill-gradtype-right = complete_style-fill-gradtype-right. + stylemapping-complete_stylex-fill-gradtype-right = complete_stylex-fill-gradtype-right. + ENDIF. + IF complete_stylex-fill-gradtype-position1 = abap_true. + stylemapping-complete_style-fill-gradtype-position1 = complete_style-fill-gradtype-position1. + stylemapping-complete_stylex-fill-gradtype-position1 = complete_stylex-fill-gradtype-position1. + ENDIF. + IF complete_stylex-fill-gradtype-position2 = abap_true. + stylemapping-complete_style-fill-gradtype-position2 = complete_style-fill-gradtype-position2. + stylemapping-complete_stylex-fill-gradtype-position2 = complete_stylex-fill-gradtype-position2. + ENDIF. + IF complete_stylex-fill-gradtype-position3 = abap_true. + stylemapping-complete_style-fill-gradtype-position3 = complete_style-fill-gradtype-position3. + stylemapping-complete_stylex-fill-gradtype-position3 = complete_stylex-fill-gradtype-position3. + ENDIF. + + + + IF complete_stylex-borders-diagonal_mode = abap_true. + stylemapping-complete_style-borders-diagonal_mode = complete_style-borders-diagonal_mode. + stylemapping-complete_stylex-borders-diagonal_mode = complete_stylex-borders-diagonal_mode. + ENDIF. + IF complete_stylex-alignment-horizontal = abap_true. + stylemapping-complete_style-alignment-horizontal = complete_style-alignment-horizontal. + stylemapping-complete_stylex-alignment-horizontal = complete_stylex-alignment-horizontal. + ENDIF. + IF complete_stylex-alignment-vertical = abap_true. + stylemapping-complete_style-alignment-vertical = complete_style-alignment-vertical. + stylemapping-complete_stylex-alignment-vertical = complete_stylex-alignment-vertical. + ENDIF. + IF complete_stylex-alignment-textrotation = abap_true. + stylemapping-complete_style-alignment-textrotation = complete_style-alignment-textrotation. + stylemapping-complete_stylex-alignment-textrotation = complete_stylex-alignment-textrotation. + ENDIF. + IF complete_stylex-alignment-wraptext = abap_true. + stylemapping-complete_style-alignment-wraptext = complete_style-alignment-wraptext. + stylemapping-complete_stylex-alignment-wraptext = complete_stylex-alignment-wraptext. + ENDIF. + IF complete_stylex-alignment-shrinktofit = abap_true. + stylemapping-complete_style-alignment-shrinktofit = complete_style-alignment-shrinktofit. + stylemapping-complete_stylex-alignment-shrinktofit = complete_stylex-alignment-shrinktofit. + ENDIF. + IF complete_stylex-alignment-indent = abap_true. + stylemapping-complete_style-alignment-indent = complete_style-alignment-indent. + stylemapping-complete_stylex-alignment-indent = complete_stylex-alignment-indent. + ENDIF. + IF complete_stylex-protection-hidden = abap_true. + stylemapping-complete_style-protection-hidden = complete_style-protection-hidden. + stylemapping-complete_stylex-protection-hidden = complete_stylex-protection-hidden. + ENDIF. + IF complete_stylex-protection-locked = abap_true. + stylemapping-complete_style-protection-locked = complete_style-protection-locked. + stylemapping-complete_stylex-protection-locked = complete_stylex-protection-locked. + ENDIF. + + IF complete_stylex-borders-allborders-border_style = abap_true. + stylemapping-complete_style-borders-allborders-border_style = complete_style-borders-allborders-border_style. + stylemapping-complete_stylex-borders-allborders-border_style = complete_stylex-borders-allborders-border_style. + ENDIF. + IF complete_stylex-borders-allborders-border_color-rgb = abap_true. + stylemapping-complete_style-borders-allborders-border_color-rgb = complete_style-borders-allborders-border_color-rgb. + stylemapping-complete_stylex-borders-allborders-border_color-rgb = complete_stylex-borders-allborders-border_color-rgb. + ENDIF. + IF complete_stylex-borders-allborders-border_color-indexed = abap_true. + stylemapping-complete_style-borders-allborders-border_color-indexed = complete_style-borders-allborders-border_color-indexed. + stylemapping-complete_stylex-borders-allborders-border_color-indexed = complete_stylex-borders-allborders-border_color-indexed. + ENDIF. + IF complete_stylex-borders-allborders-border_color-theme = abap_true. + stylemapping-complete_style-borders-allborders-border_color-theme = complete_style-borders-allborders-border_color-theme. + stylemapping-complete_stylex-borders-allborders-border_color-theme = complete_stylex-borders-allborders-border_color-theme. + ENDIF. + IF complete_stylex-borders-allborders-border_color-tint = abap_true. + stylemapping-complete_style-borders-allborders-border_color-tint = complete_style-borders-allborders-border_color-tint. + stylemapping-complete_stylex-borders-allborders-border_color-tint = complete_stylex-borders-allborders-border_color-tint. + ENDIF. + + IF complete_stylex-borders-diagonal-border_style = abap_true. + stylemapping-complete_style-borders-diagonal-border_style = complete_style-borders-diagonal-border_style. + stylemapping-complete_stylex-borders-diagonal-border_style = complete_stylex-borders-diagonal-border_style. + ENDIF. + IF complete_stylex-borders-diagonal-border_color-rgb = abap_true. + stylemapping-complete_style-borders-diagonal-border_color-rgb = complete_style-borders-diagonal-border_color-rgb. + stylemapping-complete_stylex-borders-diagonal-border_color-rgb = complete_stylex-borders-diagonal-border_color-rgb. + ENDIF. + IF complete_stylex-borders-diagonal-border_color-indexed = abap_true. + stylemapping-complete_style-borders-diagonal-border_color-indexed = complete_style-borders-diagonal-border_color-indexed. + stylemapping-complete_stylex-borders-diagonal-border_color-indexed = complete_stylex-borders-diagonal-border_color-indexed. + ENDIF. + IF complete_stylex-borders-diagonal-border_color-theme = abap_true. + stylemapping-complete_style-borders-diagonal-border_color-theme = complete_style-borders-diagonal-border_color-theme. + stylemapping-complete_stylex-borders-diagonal-border_color-theme = complete_stylex-borders-diagonal-border_color-theme. + ENDIF. + IF complete_stylex-borders-diagonal-border_color-tint = abap_true. + stylemapping-complete_style-borders-diagonal-border_color-tint = complete_style-borders-diagonal-border_color-tint. + stylemapping-complete_stylex-borders-diagonal-border_color-tint = complete_stylex-borders-diagonal-border_color-tint. + ENDIF. + + IF complete_stylex-borders-down-border_style = abap_true. + stylemapping-complete_style-borders-down-border_style = complete_style-borders-down-border_style. + stylemapping-complete_stylex-borders-down-border_style = complete_stylex-borders-down-border_style. + ENDIF. + IF complete_stylex-borders-down-border_color-rgb = abap_true. + stylemapping-complete_style-borders-down-border_color-rgb = complete_style-borders-down-border_color-rgb. + stylemapping-complete_stylex-borders-down-border_color-rgb = complete_stylex-borders-down-border_color-rgb. + ENDIF. + IF complete_stylex-borders-down-border_color-indexed = abap_true. + stylemapping-complete_style-borders-down-border_color-indexed = complete_style-borders-down-border_color-indexed. + stylemapping-complete_stylex-borders-down-border_color-indexed = complete_stylex-borders-down-border_color-indexed. + ENDIF. + IF complete_stylex-borders-down-border_color-theme = abap_true. + stylemapping-complete_style-borders-down-border_color-theme = complete_style-borders-down-border_color-theme. + stylemapping-complete_stylex-borders-down-border_color-theme = complete_stylex-borders-down-border_color-theme. + ENDIF. + IF complete_stylex-borders-down-border_color-tint = abap_true. + stylemapping-complete_style-borders-down-border_color-tint = complete_style-borders-down-border_color-tint. + stylemapping-complete_stylex-borders-down-border_color-tint = complete_stylex-borders-down-border_color-tint. + ENDIF. + + IF complete_stylex-borders-left-border_style = abap_true. + stylemapping-complete_style-borders-left-border_style = complete_style-borders-left-border_style. + stylemapping-complete_stylex-borders-left-border_style = complete_stylex-borders-left-border_style. + ENDIF. + IF complete_stylex-borders-left-border_color-rgb = abap_true. + stylemapping-complete_style-borders-left-border_color-rgb = complete_style-borders-left-border_color-rgb. + stylemapping-complete_stylex-borders-left-border_color-rgb = complete_stylex-borders-left-border_color-rgb. + ENDIF. + IF complete_stylex-borders-left-border_color-indexed = abap_true. + stylemapping-complete_style-borders-left-border_color-indexed = complete_style-borders-left-border_color-indexed. + stylemapping-complete_stylex-borders-left-border_color-indexed = complete_stylex-borders-left-border_color-indexed. + ENDIF. + IF complete_stylex-borders-left-border_color-theme = abap_true. + stylemapping-complete_style-borders-left-border_color-theme = complete_style-borders-left-border_color-theme. + stylemapping-complete_stylex-borders-left-border_color-theme = complete_stylex-borders-left-border_color-theme. + ENDIF. + IF complete_stylex-borders-left-border_color-tint = abap_true. + stylemapping-complete_style-borders-left-border_color-tint = complete_style-borders-left-border_color-tint. + stylemapping-complete_stylex-borders-left-border_color-tint = complete_stylex-borders-left-border_color-tint. + ENDIF. + + IF complete_stylex-borders-right-border_style = abap_true. + stylemapping-complete_style-borders-right-border_style = complete_style-borders-right-border_style. + stylemapping-complete_stylex-borders-right-border_style = complete_stylex-borders-right-border_style. + ENDIF. + IF complete_stylex-borders-right-border_color-rgb = abap_true. + stylemapping-complete_style-borders-right-border_color-rgb = complete_style-borders-right-border_color-rgb. + stylemapping-complete_stylex-borders-right-border_color-rgb = complete_stylex-borders-right-border_color-rgb. + ENDIF. + IF complete_stylex-borders-right-border_color-indexed = abap_true. + stylemapping-complete_style-borders-right-border_color-indexed = complete_style-borders-right-border_color-indexed. + stylemapping-complete_stylex-borders-right-border_color-indexed = complete_stylex-borders-right-border_color-indexed. + ENDIF. + IF complete_stylex-borders-right-border_color-theme = abap_true. + stylemapping-complete_style-borders-right-border_color-theme = complete_style-borders-right-border_color-theme. + stylemapping-complete_stylex-borders-right-border_color-theme = complete_stylex-borders-right-border_color-theme. + ENDIF. + IF complete_stylex-borders-right-border_color-tint = abap_true. + stylemapping-complete_style-borders-right-border_color-tint = complete_style-borders-right-border_color-tint. + stylemapping-complete_stylex-borders-right-border_color-tint = complete_stylex-borders-right-border_color-tint. + ENDIF. + + IF complete_stylex-borders-top-border_style = abap_true. + stylemapping-complete_style-borders-top-border_style = complete_style-borders-top-border_style. + stylemapping-complete_stylex-borders-top-border_style = complete_stylex-borders-top-border_style. + ENDIF. + IF complete_stylex-borders-top-border_color-rgb = abap_true. + stylemapping-complete_style-borders-top-border_color-rgb = complete_style-borders-top-border_color-rgb. + stylemapping-complete_stylex-borders-top-border_color-rgb = complete_stylex-borders-top-border_color-rgb. + ENDIF. + IF complete_stylex-borders-top-border_color-indexed = abap_true. + stylemapping-complete_style-borders-top-border_color-indexed = complete_style-borders-top-border_color-indexed. + stylemapping-complete_stylex-borders-top-border_color-indexed = complete_stylex-borders-top-border_color-indexed. + ENDIF. + IF complete_stylex-borders-top-border_color-theme = abap_true. + stylemapping-complete_style-borders-top-border_color-theme = complete_style-borders-top-border_color-theme. + stylemapping-complete_stylex-borders-top-border_color-theme = complete_stylex-borders-top-border_color-theme. + ENDIF. + IF complete_stylex-borders-top-border_color-tint = abap_true. + stylemapping-complete_style-borders-top-border_color-tint = complete_style-borders-top-border_color-tint. + stylemapping-complete_stylex-borders-top-border_color-tint = complete_stylex-borders-top-border_color-tint. + ENDIF. + + +* Now we have a completly filled styles. +* This can be used to get the guid +* Return guid if requested. Might be used if copy&paste of styles is requested + ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = stylemapping-complete_style + ip_cstylex_complete = stylemapping-complete_stylex ). + lo_worksheet->set_cell_style( ip_column = ip_column + ip_row = ip_row + ip_style = ep_guid ). + + ENDMETHOD. + + + METHOD zif_excel_style_changer~get_guid. + + result = excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style + ip_cstylex_complete = complete_stylex ). + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_size. + + complete_style-font-size = value. + complete_stylex-font-size = abap_true. + single_change_requested-font-size = abap_true. + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_number_format. + + complete_style-number_format-format_code = value. + complete_stylex-number_format-format_code = abap_true. + single_change_requested-number_format-format_code = abap_true. + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete. + + complete_style = ip_complete. + complete_stylex = ip_xcomplete. + multiple_change_requested-complete = abap_true. + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_font. + + DATA: fontx TYPE zexcel_s_cstylex_font. + + IF ip_xfont IS SUPPLIED. + fontx = ip_xfont. + ELSE. +* Only supplied values should be used - exception: Flags bold and italic strikethrough underline + MOVE 'X' TO: fontx-bold, + fontx-italic, + fontx-strikethrough, + fontx-underline_mode. + CLEAR fontx-color WITH 'X'. + clear_initial_colorxfields( + EXPORTING + is_color = ip_font-color + CHANGING + cs_xcolor = fontx-color ). + IF ip_font-family IS NOT INITIAL. + fontx-family = 'X'. + ENDIF. + IF ip_font-name IS NOT INITIAL. + fontx-name = 'X'. + ENDIF. + IF ip_font-scheme IS NOT INITIAL. + fontx-scheme = 'X'. + ENDIF. + IF ip_font-size IS NOT INITIAL. + fontx-size = 'X'. + ENDIF. + IF ip_font-underline_mode IS NOT INITIAL. + fontx-underline_mode = 'X'. + ENDIF. + ENDIF. + + complete_style-font = ip_font. + complete_stylex-font = fontx. + multiple_change_requested-font = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_fill. + + DATA: fillx LIKE ip_xfill. + IF ip_xfill IS SUPPLIED. + fillx = ip_xfill. + ELSE. + CLEAR fillx WITH 'X'. + IF ip_fill-filltype IS INITIAL. + CLEAR fillx-filltype. + ENDIF. + clear_initial_colorxfields( + EXPORTING + is_color = ip_fill-fgcolor + CHANGING + cs_xcolor = fillx-fgcolor ). + clear_initial_colorxfields( + EXPORTING + is_color = ip_fill-bgcolor + CHANGING + cs_xcolor = fillx-bgcolor ). + + ENDIF. + + complete_style-fill = ip_fill. + complete_stylex-fill = fillx. + multiple_change_requested-fill = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_borders. + + DATA: bordersx LIKE ip_xborders. + IF ip_xborders IS SUPPLIED. + bordersx = ip_xborders. + ELSE. + CLEAR bordersx WITH 'X'. + IF ip_borders-allborders-border_style IS INITIAL. + CLEAR bordersx-allborders-border_style. + ENDIF. + IF ip_borders-diagonal-border_style IS INITIAL. + CLEAR bordersx-diagonal-border_style. + ENDIF. + IF ip_borders-down-border_style IS INITIAL. + CLEAR bordersx-down-border_style. + ENDIF. + IF ip_borders-left-border_style IS INITIAL. + CLEAR bordersx-left-border_style. + ENDIF. + IF ip_borders-right-border_style IS INITIAL. + CLEAR bordersx-right-border_style. + ENDIF. + IF ip_borders-top-border_style IS INITIAL. + CLEAR bordersx-top-border_style. + ENDIF. + + clear_initial_colorxfields( + EXPORTING + is_color = ip_borders-allborders-border_color + CHANGING + cs_xcolor = bordersx-allborders-border_color ). + + clear_initial_colorxfields( + EXPORTING + is_color = ip_borders-diagonal-border_color + CHANGING + cs_xcolor = bordersx-diagonal-border_color ). + + clear_initial_colorxfields( + EXPORTING + is_color = ip_borders-down-border_color + CHANGING + cs_xcolor = bordersx-down-border_color ). + + clear_initial_colorxfields( + EXPORTING + is_color = ip_borders-left-border_color + CHANGING + cs_xcolor = bordersx-left-border_color ). + + clear_initial_colorxfields( + EXPORTING + is_color = ip_borders-right-border_color + CHANGING + cs_xcolor = bordersx-right-border_color ). + + clear_initial_colorxfields( + EXPORTING + is_color = ip_borders-top-border_color + CHANGING + cs_xcolor = bordersx-top-border_color ). + + ENDIF. + + complete_style-borders = ip_borders. + complete_stylex-borders = bordersx. + multiple_change_requested-borders-complete = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_alignment. + + DATA: alignmentx LIKE ip_xalignment. + + IF ip_xalignment IS SUPPLIED. + alignmentx = ip_xalignment. + ELSE. + CLEAR alignmentx WITH 'X'. + IF ip_alignment-horizontal IS INITIAL. + CLEAR alignmentx-horizontal. + ENDIF. + IF ip_alignment-vertical IS INITIAL. + CLEAR alignmentx-vertical. + ENDIF. + ENDIF. + + complete_style-alignment = ip_alignment . + complete_stylex-alignment = alignmentx . + multiple_change_requested-alignment = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_protection. + + MOVE-CORRESPONDING ip_protection TO complete_style-protection. + IF ip_xprotection IS SUPPLIED. + MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. + ELSE. + IF ip_protection-hidden IS NOT INITIAL. + complete_stylex-protection-hidden = 'X'. + ENDIF. + IF ip_protection-locked IS NOT INITIAL. + complete_stylex-protection-locked = 'X'. + ENDIF. + ENDIF. + multiple_change_requested-protection = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_borders_all. + +* lv_border_supplied = boolc( ip_borders_allborders IS SUPPLIED ). + lv_xborder_supplied = boolc( ip_xborders_allborders IS SUPPLIED ). + move_supplied_borders( + EXPORTING + iv_border_supplied = lv_border_supplied + is_border = ip_borders_allborders + iv_xborder_supplied = lv_xborder_supplied + is_xborder = ip_xborders_allborders + CHANGING + cs_complete_style_border = complete_style-borders-allborders + cs_complete_stylex_border = complete_stylex-borders-allborders ). + multiple_change_requested-borders-allborders = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_borders_diagonal. + + lv_xborder_supplied = boolc( ip_xborders_diagonal IS SUPPLIED ). + move_supplied_borders( + EXPORTING + iv_border_supplied = lv_border_supplied + is_border = ip_borders_diagonal + iv_xborder_supplied = lv_xborder_supplied + is_xborder = ip_xborders_diagonal + CHANGING + cs_complete_style_border = complete_style-borders-diagonal + cs_complete_stylex_border = complete_stylex-borders-diagonal ). + multiple_change_requested-borders-diagonal = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_borders_down. + + lv_xborder_supplied = boolc( ip_xborders_down IS SUPPLIED ). + move_supplied_borders( + EXPORTING + iv_border_supplied = lv_border_supplied + is_border = ip_borders_down + iv_xborder_supplied = lv_xborder_supplied + is_xborder = ip_xborders_down + CHANGING + cs_complete_style_border = complete_style-borders-down + cs_complete_stylex_border = complete_stylex-borders-down ). + multiple_change_requested-borders-down = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_borders_left. + + lv_xborder_supplied = boolc( ip_xborders_left IS SUPPLIED ). + move_supplied_borders( + EXPORTING + iv_border_supplied = lv_border_supplied + is_border = ip_borders_left + iv_xborder_supplied = lv_xborder_supplied + is_xborder = ip_xborders_left + CHANGING + cs_complete_style_border = complete_style-borders-left + cs_complete_stylex_border = complete_stylex-borders-left ). + multiple_change_requested-borders-left = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_borders_right. + + lv_xborder_supplied = boolc( ip_xborders_right IS SUPPLIED ). + move_supplied_borders( + EXPORTING + iv_border_supplied = lv_border_supplied + is_border = ip_borders_right + iv_xborder_supplied = lv_xborder_supplied + is_xborder = ip_xborders_right + CHANGING + cs_complete_style_border = complete_style-borders-right + cs_complete_stylex_border = complete_stylex-borders-right ). + multiple_change_requested-borders-right = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_complete_borders_top. + + lv_xborder_supplied = boolc( ip_xborders_top IS SUPPLIED ). + move_supplied_borders( + EXPORTING + iv_border_supplied = lv_border_supplied + is_border = ip_borders_top + iv_xborder_supplied = lv_xborder_supplied + is_xborder = ip_xborders_top + CHANGING + cs_complete_style_border = complete_style-borders-top + cs_complete_stylex_border = complete_stylex-borders-top ). + multiple_change_requested-borders-top = abap_true. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_bold. + + complete_style-font-bold = value. + complete_stylex-font-bold = 'X'. + single_change_requested-font-bold = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_color. + + complete_style-font-color = value. + complete_stylex-font-color-rgb = 'X'. + single_change_requested-font-color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_color_rgb. + + complete_style-font-color-rgb = value. + complete_stylex-font-color-rgb = 'X'. + single_change_requested-font-color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_color_indexed. + + complete_style-font-color-indexed = value. + complete_stylex-font-color-indexed = 'X'. + single_change_requested-font-color-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_color_theme. + + complete_style-font-color-theme = value. + complete_stylex-font-color-theme = 'X'. + single_change_requested-font-color-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_color_tint. + + complete_style-font-color-tint = value. + complete_stylex-font-color-tint = 'X'. + single_change_requested-font-color-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_family. + + complete_style-font-family = value. + complete_stylex-font-family = 'X'. + single_change_requested-font-family = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_italic. + + complete_style-font-italic = value. + complete_stylex-font-italic = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_name. + + complete_style-font-name = value. + complete_stylex-font-name = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_scheme. + + complete_style-font-scheme = value. + complete_stylex-font-scheme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_strikethrough. + + complete_style-font-strikethrough = value. + complete_stylex-font-strikethrough = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_underline. + + complete_style-font-underline = value. + complete_stylex-font-underline = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_font_underline_mode. + + complete_style-font-underline_mode = value. + complete_stylex-font-underline_mode = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_filltype. + + complete_style-fill-filltype = value. + complete_stylex-fill-filltype = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_rotation. + + complete_style-fill-rotation = value. + complete_stylex-fill-rotation = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_fgcolor. + + complete_style-fill-fgcolor = value. + complete_stylex-fill-fgcolor-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_fgcolor_rgb. + + complete_style-fill-fgcolor-rgb = value. + complete_stylex-fill-fgcolor-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_fgcolor_indexed. + + complete_style-fill-fgcolor-indexed = value. + complete_stylex-fill-fgcolor-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_fgcolor_theme. + + complete_style-fill-fgcolor-theme = value. + complete_stylex-fill-fgcolor-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_fgcolor_tint. + + complete_style-fill-fgcolor-tint = value. + complete_stylex-fill-fgcolor-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_bgcolor. + + complete_style-fill-bgcolor = value. + complete_stylex-fill-bgcolor-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_bgcolor_rgb. + + complete_style-fill-bgcolor-rgb = value. + complete_stylex-fill-bgcolor-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_bgcolor_indexed. + + complete_style-fill-bgcolor-indexed = value. + complete_stylex-fill-bgcolor-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_bgcolor_theme. + + complete_style-fill-bgcolor-theme = value. + complete_stylex-fill-bgcolor-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_bgcolor_tint. + + complete_style-fill-bgcolor-tint = value. + complete_stylex-fill-bgcolor-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_type. + + complete_style-fill-gradtype-type = value. + complete_stylex-fill-gradtype-type = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_degree. + + complete_style-fill-gradtype-degree = value. + complete_stylex-fill-gradtype-degree = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_bottom. + + complete_style-fill-gradtype-bottom = value. + complete_stylex-fill-gradtype-bottom = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_left. + + complete_style-fill-gradtype-left = value. + complete_stylex-fill-gradtype-left = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_top. + + complete_style-fill-gradtype-top = value. + complete_stylex-fill-gradtype-top = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_right. + + complete_style-fill-gradtype-right = value. + complete_stylex-fill-gradtype-right = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_position1. + + complete_style-fill-gradtype-position1 = value. + complete_stylex-fill-gradtype-position1 = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_position2. + + complete_style-fill-gradtype-position2 = value. + complete_stylex-fill-gradtype-position2 = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_fill_gradtype_position3. + + complete_style-fill-gradtype-position3 = value. + complete_stylex-fill-gradtype-position3 = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_diagonal_mode. + + complete_style-borders-diagonal_mode = value. + complete_stylex-borders-diagonal_mode = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_alignment_horizontal. + + complete_style-alignment-horizontal = value. + complete_stylex-alignment-horizontal = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_alignment_vertical. + + complete_style-alignment-vertical = value. + complete_stylex-alignment-vertical = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_alignment_textrotation. + + complete_style-alignment-textrotation = value. + complete_stylex-alignment-textrotation = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_alignment_wraptext. + + complete_style-alignment-wraptext = value. + complete_stylex-alignment-wraptext = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_alignment_shrinktofit. + + complete_style-alignment-shrinktofit = value. + complete_stylex-alignment-shrinktofit = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_alignment_indent. + + complete_style-alignment-indent = value. + complete_stylex-alignment-indent = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_protection_hidden. + + complete_style-protection-hidden = value. + complete_stylex-protection-hidden = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_protection_locked. + + complete_style-protection-locked = value. + complete_stylex-protection-locked = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_allborders_style. + + complete_style-borders-allborders-border_style = value. + complete_stylex-borders-allborders-border_style = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_allborders_color. + + complete_style-borders-allborders-border_color = value. + complete_stylex-borders-allborders-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_allbo_color_rgb. + + complete_style-borders-allborders-border_color-rgb = value. + complete_stylex-borders-allborders-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_allbo_color_indexe. + + complete_style-borders-allborders-border_color-indexed = value. + complete_stylex-borders-allborders-border_color-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_allbo_color_theme. + + complete_style-borders-allborders-border_color-theme = value. + complete_stylex-borders-allborders-border_color-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_allbo_color_tint. + + complete_style-borders-allborders-border_color-tint = value. + complete_stylex-borders-allborders-border_color-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_diagonal_style. + + complete_style-borders-diagonal-border_style = value. + complete_stylex-borders-diagonal-border_style = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_diagonal_color. + + complete_style-borders-diagonal-border_color = value. + complete_stylex-borders-diagonal-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_diagonal_color_rgb. + + complete_style-borders-diagonal-border_color-rgb = value. + complete_stylex-borders-diagonal-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_diagonal_color_ind. + + complete_style-borders-diagonal-border_color-indexed = value. + complete_stylex-borders-diagonal-border_color-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_diagonal_color_the. + + complete_style-borders-diagonal-border_color-theme = value. + complete_stylex-borders-diagonal-border_color-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_diagonal_color_tin. + + complete_style-borders-diagonal-border_color-tint = value. + complete_stylex-borders-diagonal-border_color-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_down_style. + + complete_style-borders-down-border_style = value. + complete_stylex-borders-down-border_style = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_down_color. + + complete_style-borders-down-border_color = value. + complete_stylex-borders-down-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_down_color_rgb. + + complete_style-borders-down-border_color-rgb = value. + complete_stylex-borders-down-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_down_color_indexed. + + complete_style-borders-down-border_color-indexed = value. + complete_stylex-borders-down-border_color-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_down_color_theme. + + complete_style-borders-down-border_color-theme = value. + complete_stylex-borders-down-border_color-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_down_color_tint. + + complete_style-borders-down-border_color-tint = value. + complete_stylex-borders-down-border_color-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_left_style. + + complete_style-borders-left-border_style = value. + complete_stylex-borders-left-border_style = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_left_color. + + complete_style-borders-left-border_color = value. + complete_stylex-borders-left-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_left_color_rgb. + + complete_style-borders-left-border_color-rgb = value. + complete_stylex-borders-left-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_left_color_indexed. + + complete_style-borders-left-border_color-indexed = value. + complete_stylex-borders-left-border_color-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_left_color_theme. + + complete_style-borders-left-border_color-theme = value. + complete_stylex-borders-left-border_color-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_left_color_tint. + + complete_style-borders-left-border_color-tint = value. + complete_stylex-borders-left-border_color-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_right_style. + + complete_style-borders-right-border_style = value. + complete_stylex-borders-right-border_style = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_right_color. + + complete_style-borders-right-border_color = value. + complete_stylex-borders-right-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_right_color_rgb. + + complete_style-borders-right-border_color-rgb = value. + complete_stylex-borders-right-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_right_color_indexe. + + complete_style-borders-right-border_color-indexed = value. + complete_stylex-borders-right-border_color-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_right_color_theme. + + complete_style-borders-right-border_color-theme = value. + complete_stylex-borders-right-border_color-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_right_color_tint. + + complete_style-borders-right-border_color-tint = value. + complete_stylex-borders-right-border_color-tint = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_top_style. + + complete_style-borders-top-border_style = value. + complete_stylex-borders-top-border_style = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_top_color. + + complete_style-borders-top-border_color = value. + complete_stylex-borders-top-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_top_color_rgb. + + complete_style-borders-top-border_color-rgb = value. + complete_stylex-borders-top-border_color-rgb = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_top_color_indexed. + + complete_style-borders-top-border_color-indexed = value. + complete_stylex-borders-top-border_color-indexed = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_top_color_theme. + + complete_style-borders-top-border_color-theme = value. + complete_stylex-borders-top-border_color-theme = 'X'. + + result = me. + + ENDMETHOD. + + + METHOD zif_excel_style_changer~set_borders_top_color_tint. + + complete_style-borders-top-border_color-tint = value. + complete_stylex-borders-top-border_color-tint = 'X'. + + result = me. + + ENDMETHOD. + + +ENDCLASS. diff --git a/src/zcl_excel_style_changer.clas.xml b/src/zcl_excel_style_changer.clas.xml new file mode 100644 index 0000000..5b262b8 --- /dev/null +++ b/src/zcl_excel_style_changer.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_EXCEL_STYLE_CHANGER + E + Style changer + 1 + X + X + X + + + + diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 1532826..b5ada1f 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -1388,619 +1388,374 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD change_cell_style. - " issue # 139 - DATA: stylemapping TYPE zexcel_s_stylemapping, - complete_style TYPE zexcel_s_cstyle_complete, - complete_stylex TYPE zexcel_s_cstylex_complete, - l_guid TYPE zexcel_cell_style. "issue # 177 - DATA: lv_border_supplied TYPE abap_bool, - lv_xborder_supplied TYPE abap_bool, - lv_style_supplied TYPE abap_bool. -* First get current stylsettings - TRY. - me->get_cell( EXPORTING ip_column = ip_column " Cell Column - ip_row = ip_row " Cell Row - IMPORTING ep_guid = l_guid )." Cell Value ). "issue # 177 + DATA: changer TYPE REF TO zif_excel_style_changer. - stylemapping = me->excel->get_style_to_guid( l_guid ). "issue # 177 - complete_style = stylemapping-complete_style. - complete_stylex = stylemapping-complete_stylex. - CATCH zcx_excel. -* Error --> use submitted style - ENDTRY. + changer = zcl_excel_style_changer=>create( excel = excel ). + -* move_supplied_multistyles: complete. IF ip_complete IS SUPPLIED. IF ip_xcomplete IS NOT SUPPLIED. zcx_excel=>raise_text( 'Complete styleinfo has to be supplied with corresponding X-field' ). ENDIF. - MOVE-CORRESPONDING ip_complete TO complete_style. - MOVE-CORRESPONDING ip_xcomplete TO complete_stylex. + changer->set_complete( ip_complete = ip_complete ip_xcomplete = ip_xcomplete ). ENDIF. IF ip_font IS SUPPLIED. - DATA: fontx LIKE ip_xfont. IF ip_xfont IS SUPPLIED. - fontx = ip_xfont. + changer->set_complete_font( ip_font = ip_font ip_xfont = ip_xfont ). ELSE. -* Only supplied values should be used - exception: Flags bold and italic strikethrough underline - MOVE 'X' TO: fontx-bold, - fontx-italic, - fontx-strikethrough, - fontx-underline_mode. - CLEAR fontx-color WITH 'X'. - clear_initial_colorxfields( - EXPORTING - is_color = ip_font-color - CHANGING - cs_xcolor = fontx-color ). - IF ip_font-family IS NOT INITIAL. - fontx-family = 'X'. - ENDIF. - IF ip_font-name IS NOT INITIAL. - fontx-name = 'X'. - ENDIF. - IF ip_font-scheme IS NOT INITIAL. - fontx-scheme = 'X'. - ENDIF. - IF ip_font-size IS NOT INITIAL. - fontx-size = 'X'. - ENDIF. - IF ip_font-underline_mode IS NOT INITIAL. - fontx-underline_mode = 'X'. - ENDIF. + changer->set_complete_font( ip_font = ip_font ). ENDIF. - MOVE-CORRESPONDING ip_font TO complete_style-font. - MOVE-CORRESPONDING fontx TO complete_stylex-font. -* Correction for undeline mode ENDIF. IF ip_fill IS SUPPLIED. - DATA: fillx LIKE ip_xfill. IF ip_xfill IS SUPPLIED. - fillx = ip_xfill. + changer->set_complete_fill( ip_fill = ip_fill ip_xfill = ip_xfill ). ELSE. - CLEAR fillx WITH 'X'. - IF ip_fill-filltype IS INITIAL. - CLEAR fillx-filltype. - ENDIF. - clear_initial_colorxfields( - EXPORTING - is_color = ip_fill-fgcolor - CHANGING - cs_xcolor = fillx-fgcolor ). - clear_initial_colorxfields( - EXPORTING - is_color = ip_fill-bgcolor - CHANGING - cs_xcolor = fillx-bgcolor ). - + changer->set_complete_fill( ip_fill = ip_fill ). ENDIF. - MOVE-CORRESPONDING ip_fill TO complete_style-fill. - MOVE-CORRESPONDING fillx TO complete_stylex-fill. ENDIF. IF ip_borders IS SUPPLIED. - DATA: bordersx LIKE ip_xborders. IF ip_xborders IS SUPPLIED. - bordersx = ip_xborders. + changer->set_complete_borders( ip_borders = ip_borders ip_xborders = ip_xborders ). ELSE. - CLEAR bordersx WITH 'X'. - IF ip_borders-allborders-border_style IS INITIAL. - CLEAR bordersx-allborders-border_style. - ENDIF. - IF ip_borders-diagonal-border_style IS INITIAL. - CLEAR bordersx-diagonal-border_style. - ENDIF. - IF ip_borders-down-border_style IS INITIAL. - CLEAR bordersx-down-border_style. - ENDIF. - IF ip_borders-left-border_style IS INITIAL. - CLEAR bordersx-left-border_style. - ENDIF. - IF ip_borders-right-border_style IS INITIAL. - CLEAR bordersx-right-border_style. - ENDIF. - IF ip_borders-top-border_style IS INITIAL. - CLEAR bordersx-top-border_style. - ENDIF. - - clear_initial_colorxfields( - EXPORTING - is_color = ip_borders-allborders-border_color - CHANGING - cs_xcolor = bordersx-allborders-border_color ). - - clear_initial_colorxfields( - EXPORTING - is_color = ip_borders-diagonal-border_color - CHANGING - cs_xcolor = bordersx-diagonal-border_color ). - - clear_initial_colorxfields( - EXPORTING - is_color = ip_borders-down-border_color - CHANGING - cs_xcolor = bordersx-down-border_color ). - - clear_initial_colorxfields( - EXPORTING - is_color = ip_borders-left-border_color - CHANGING - cs_xcolor = bordersx-left-border_color ). - - clear_initial_colorxfields( - EXPORTING - is_color = ip_borders-right-border_color - CHANGING - cs_xcolor = bordersx-right-border_color ). - - clear_initial_colorxfields( - EXPORTING - is_color = ip_borders-top-border_color - CHANGING - cs_xcolor = bordersx-top-border_color ). - + changer->set_complete_borders( ip_borders = ip_borders ). ENDIF. - MOVE-CORRESPONDING ip_borders TO complete_style-borders. - MOVE-CORRESPONDING bordersx TO complete_stylex-borders. ENDIF. IF ip_alignment IS SUPPLIED. - DATA: alignmentx LIKE ip_xalignment. IF ip_xalignment IS SUPPLIED. - alignmentx = ip_xalignment. + changer->set_complete_alignment( ip_alignment = ip_alignment ip_xalignment = ip_xalignment ). ELSE. - CLEAR alignmentx WITH 'X'. - IF ip_alignment-horizontal IS INITIAL. - CLEAR alignmentx-horizontal. - ENDIF. - IF ip_alignment-vertical IS INITIAL. - CLEAR alignmentx-vertical. - ENDIF. + changer->set_complete_alignment( ip_alignment = ip_alignment ). ENDIF. - MOVE-CORRESPONDING ip_alignment TO complete_style-alignment. - MOVE-CORRESPONDING alignmentx TO complete_stylex-alignment. ENDIF. IF ip_protection IS SUPPLIED. - MOVE-CORRESPONDING ip_protection TO complete_style-protection. IF ip_xprotection IS SUPPLIED. - MOVE-CORRESPONDING ip_xprotection TO complete_stylex-protection. + changer->set_complete_protection( ip_protection = ip_protection ip_xprotection = ip_xprotection ). ELSE. - IF ip_protection-hidden IS NOT INITIAL. - complete_stylex-protection-hidden = 'X'. - ENDIF. - IF ip_protection-locked IS NOT INITIAL. - complete_stylex-protection-locked = 'X'. - ENDIF. + changer->set_complete_protection( ip_protection = ip_protection ). ENDIF. ENDIF. - lv_border_supplied = boolc( ip_borders_allborders IS SUPPLIED ). - lv_xborder_supplied = boolc( ip_xborders_allborders IS SUPPLIED ). - move_supplied_borders( - EXPORTING - iv_border_supplied = lv_border_supplied - is_border = ip_borders_allborders - iv_xborder_supplied = lv_xborder_supplied - is_xborder = ip_xborders_allborders - CHANGING - cs_complete_style_border = complete_style-borders-allborders - cs_complete_stylex_border = complete_stylex-borders-allborders ). + IF ip_borders_allborders IS SUPPLIED. + IF ip_xborders_allborders IS SUPPLIED. + changer->set_complete_borders_all( ip_borders_allborders = ip_borders_allborders ip_xborders_allborders = ip_xborders_allborders ). + ELSE. + changer->set_complete_borders_all( ip_borders_allborders = ip_borders_allborders ). + ENDIF. + ENDIF. - lv_border_supplied = boolc( ip_borders_diagonal IS SUPPLIED ). - lv_xborder_supplied = boolc( ip_xborders_diagonal IS SUPPLIED ). - move_supplied_borders( - EXPORTING - iv_border_supplied = lv_border_supplied - is_border = ip_borders_diagonal - iv_xborder_supplied = lv_xborder_supplied - is_xborder = ip_xborders_diagonal - CHANGING - cs_complete_style_border = complete_style-borders-diagonal - cs_complete_stylex_border = complete_stylex-borders-diagonal ). + IF ip_borders_diagonal IS SUPPLIED. + IF ip_xborders_diagonal IS SUPPLIED. + changer->set_complete_borders_diagonal( ip_borders_diagonal = ip_borders_diagonal ip_xborders_diagonal = ip_xborders_diagonal ). + ELSE. + changer->set_complete_borders_diagonal( ip_borders_diagonal = ip_borders_diagonal ). + ENDIF. + ENDIF. - lv_border_supplied = boolc( ip_borders_down IS SUPPLIED ). - lv_xborder_supplied = boolc( ip_xborders_down IS SUPPLIED ). - move_supplied_borders( - EXPORTING - iv_border_supplied = lv_border_supplied - is_border = ip_borders_down - iv_xborder_supplied = lv_xborder_supplied - is_xborder = ip_xborders_down - CHANGING - cs_complete_style_border = complete_style-borders-down - cs_complete_stylex_border = complete_stylex-borders-down ). + IF ip_borders_down IS SUPPLIED. + IF ip_xborders_down IS SUPPLIED. + changer->set_complete_borders_down( ip_borders_down = ip_borders_down ip_xborders_down = ip_xborders_down ). + ELSE. + changer->set_complete_borders_down( ip_borders_down = ip_borders_down ). + ENDIF. + ENDIF. - lv_border_supplied = boolc( ip_borders_left IS SUPPLIED ). - lv_xborder_supplied = boolc( ip_xborders_left IS SUPPLIED ). - move_supplied_borders( - EXPORTING - iv_border_supplied = lv_border_supplied - is_border = ip_borders_left - iv_xborder_supplied = lv_xborder_supplied - is_xborder = ip_xborders_left - CHANGING - cs_complete_style_border = complete_style-borders-left - cs_complete_stylex_border = complete_stylex-borders-left ). + IF ip_borders_left IS SUPPLIED. + IF ip_xborders_left IS SUPPLIED. + changer->set_complete_borders_left( ip_borders_left = ip_borders_left ip_xborders_left = ip_xborders_left ). + ELSE. + changer->set_complete_borders_left( ip_borders_left = ip_borders_left ). + ENDIF. + ENDIF. - lv_border_supplied = boolc( ip_borders_right IS SUPPLIED ). - lv_xborder_supplied = boolc( ip_xborders_right IS SUPPLIED ). - move_supplied_borders( - EXPORTING - iv_border_supplied = lv_border_supplied - is_border = ip_borders_right - iv_xborder_supplied = lv_xborder_supplied - is_xborder = ip_xborders_right - CHANGING - cs_complete_style_border = complete_style-borders-right - cs_complete_stylex_border = complete_stylex-borders-right ). + IF ip_borders_right IS SUPPLIED. + IF ip_xborders_right IS SUPPLIED. + changer->set_complete_borders_right( ip_borders_right = ip_borders_right ip_xborders_right = ip_xborders_right ). + ELSE. + changer->set_complete_borders_right( ip_borders_right = ip_borders_right ). + ENDIF. + ENDIF. - lv_border_supplied = boolc( ip_borders_top IS SUPPLIED ). - lv_xborder_supplied = boolc( ip_xborders_top IS SUPPLIED ). - move_supplied_borders( - EXPORTING - iv_border_supplied = lv_border_supplied - is_border = ip_borders_top - iv_xborder_supplied = lv_xborder_supplied - is_xborder = ip_xborders_top - CHANGING - cs_complete_style_border = complete_style-borders-top - cs_complete_stylex_border = complete_stylex-borders-top ). + IF ip_borders_top IS SUPPLIED. + IF ip_xborders_top IS SUPPLIED. + changer->set_complete_borders_top( ip_borders_top = ip_borders_top ip_xborders_top = ip_xborders_top ). + ELSE. + changer->set_complete_borders_top( ip_borders_top = ip_borders_top ). + ENDIF. + ENDIF. IF ip_number_format_format_code IS SUPPLIED. - complete_style-number_format-format_code = ip_number_format_format_code. - complete_stylex-number_format-format_code = 'X'. + changer->set_number_format( ip_number_format_format_code ). ENDIF. IF ip_font_bold IS SUPPLIED. - complete_style-font-bold = ip_font_bold. - complete_stylex-font-bold = 'X'. + changer->set_font_bold( ip_font_bold ). ENDIF. IF ip_font_color IS SUPPLIED. - complete_style-font-color = ip_font_color. - complete_stylex-font-color-rgb = 'X'. + changer->set_font_color( ip_font_color ). ENDIF. IF ip_font_color_rgb IS SUPPLIED. - complete_style-font-color-rgb = ip_font_color_rgb. - complete_stylex-font-color-rgb = 'X'. + changer->set_font_color_rgb( ip_font_color_rgb ). ENDIF. IF ip_font_color_indexed IS SUPPLIED. - complete_style-font-color-indexed = ip_font_color_indexed. - complete_stylex-font-color-indexed = 'X'. + changer->set_font_color_indexed( ip_font_color_indexed ). ENDIF. IF ip_font_color_theme IS SUPPLIED. - complete_style-font-color-theme = ip_font_color_theme. - complete_stylex-font-color-theme = 'X'. + changer->set_font_color_theme( ip_font_color_theme ). ENDIF. IF ip_font_color_tint IS SUPPLIED. - complete_style-font-color-tint = ip_font_color_tint. - complete_stylex-font-color-tint = 'X'. + changer->set_font_color_tint( ip_font_color_tint ). ENDIF. IF ip_font_family IS SUPPLIED. - complete_style-font-family = ip_font_family. - complete_stylex-font-family = 'X'. + changer->set_font_family( ip_font_family ). ENDIF. IF ip_font_italic IS SUPPLIED. - complete_style-font-italic = ip_font_italic. - complete_stylex-font-italic = 'X'. + changer->set_font_italic( ip_font_italic ). ENDIF. IF ip_font_name IS SUPPLIED. - complete_style-font-name = ip_font_name. - complete_stylex-font-name = 'X'. + changer->set_font_name( ip_font_name ). ENDIF. IF ip_font_scheme IS SUPPLIED. - complete_style-font-scheme = ip_font_scheme. - complete_stylex-font-scheme = 'X'. + changer->set_font_scheme( ip_font_scheme ). ENDIF. IF ip_font_size IS SUPPLIED. - complete_style-font-size = ip_font_size. - complete_stylex-font-size = 'X'. + changer->set_font_size( ip_font_size ). ENDIF. IF ip_font_strikethrough IS SUPPLIED. - complete_style-font-strikethrough = ip_font_strikethrough. - complete_stylex-font-strikethrough = 'X'. + changer->set_font_strikethrough( ip_font_strikethrough ). ENDIF. IF ip_font_underline IS SUPPLIED. - complete_style-font-underline = ip_font_underline. - complete_stylex-font-underline = 'X'. + changer->set_font_underline( ip_font_underline ). ENDIF. IF ip_font_underline_mode IS SUPPLIED. - complete_style-font-underline_mode = ip_font_underline_mode. - complete_stylex-font-underline_mode = 'X'. + changer->set_font_underline_mode( ip_font_underline_mode ). ENDIF. + IF ip_fill_filltype IS SUPPLIED. - complete_style-fill-filltype = ip_fill_filltype. - complete_stylex-fill-filltype = 'X'. + changer->set_fill_filltype( ip_fill_filltype ). ENDIF. IF ip_fill_rotation IS SUPPLIED. - complete_style-fill-rotation = ip_fill_rotation. - complete_stylex-fill-rotation = 'X'. + changer->set_fill_rotation( ip_fill_rotation ). ENDIF. IF ip_fill_fgcolor IS SUPPLIED. - complete_style-fill-fgcolor = ip_fill_fgcolor. - complete_stylex-fill-fgcolor-rgb = 'X'. + changer->set_fill_fgcolor( ip_fill_fgcolor ). ENDIF. IF ip_fill_fgcolor_rgb IS SUPPLIED. - complete_style-fill-fgcolor-rgb = ip_fill_fgcolor_rgb. - complete_stylex-fill-fgcolor-rgb = 'X'. + changer->set_fill_fgcolor_rgb( ip_fill_fgcolor_rgb ). ENDIF. IF ip_fill_fgcolor_indexed IS SUPPLIED. - complete_style-fill-fgcolor-indexed = ip_fill_fgcolor_indexed. - complete_stylex-fill-fgcolor-indexed = 'X'. + changer->set_fill_fgcolor_indexed( ip_fill_fgcolor_indexed ). ENDIF. IF ip_fill_fgcolor_theme IS SUPPLIED. - complete_style-fill-fgcolor-theme = ip_fill_fgcolor_theme. - complete_stylex-fill-fgcolor-theme = 'X'. + changer->set_fill_fgcolor_theme( ip_fill_fgcolor_theme ). ENDIF. IF ip_fill_fgcolor_tint IS SUPPLIED. - complete_style-fill-fgcolor-tint = ip_fill_fgcolor_tint. - complete_stylex-fill-fgcolor-tint = 'X'. + changer->set_fill_fgcolor_tint( ip_fill_fgcolor_tint ). ENDIF. IF ip_fill_bgcolor IS SUPPLIED. - complete_style-fill-bgcolor = ip_fill_bgcolor. - complete_stylex-fill-bgcolor-rgb = 'X'. + changer->set_fill_bgcolor( ip_fill_bgcolor ). ENDIF. IF ip_fill_bgcolor_rgb IS SUPPLIED. - complete_style-fill-bgcolor-rgb = ip_fill_bgcolor_rgb. - complete_stylex-fill-bgcolor-rgb = 'X'. + changer->set_fill_bgcolor_rgb( ip_fill_bgcolor_rgb ). ENDIF. IF ip_fill_bgcolor_indexed IS SUPPLIED. - complete_style-fill-bgcolor-indexed = ip_fill_bgcolor_indexed. - complete_stylex-fill-bgcolor-indexed = 'X'. + changer->set_fill_bgcolor_indexed( ip_fill_bgcolor_indexed ). ENDIF. IF ip_fill_bgcolor_theme IS SUPPLIED. - complete_style-fill-bgcolor-theme = ip_fill_bgcolor_theme. - complete_stylex-fill-bgcolor-theme = 'X'. + changer->set_fill_bgcolor_theme( ip_fill_bgcolor_theme ). ENDIF. IF ip_fill_bgcolor_tint IS SUPPLIED. - complete_style-fill-bgcolor-tint = ip_fill_bgcolor_tint. - complete_stylex-fill-bgcolor-tint = 'X'. + changer->set_fill_bgcolor_tint( ip_fill_bgcolor_tint ). ENDIF. IF ip_fill_gradtype_type IS SUPPLIED. - complete_style-fill-gradtype-type = ip_fill_gradtype_type. - complete_stylex-fill-gradtype-type = 'X'. + changer->set_fill_gradtype_type( ip_fill_gradtype_type ). ENDIF. IF ip_fill_gradtype_degree IS SUPPLIED. - complete_style-fill-gradtype-degree = ip_fill_gradtype_degree. - complete_stylex-fill-gradtype-degree = 'X'. + changer->set_fill_gradtype_degree( ip_fill_gradtype_degree ). ENDIF. IF ip_fill_gradtype_bottom IS SUPPLIED. - complete_style-fill-gradtype-bottom = ip_fill_gradtype_bottom. - complete_stylex-fill-gradtype-bottom = 'X'. + changer->set_fill_gradtype_bottom( ip_fill_gradtype_bottom ). ENDIF. IF ip_fill_gradtype_left IS SUPPLIED. - complete_style-fill-gradtype-left = ip_fill_gradtype_left. - complete_stylex-fill-gradtype-left = 'X'. + changer->set_fill_gradtype_left( ip_fill_gradtype_left ). ENDIF. IF ip_fill_gradtype_top IS SUPPLIED. - complete_style-fill-gradtype-top = ip_fill_gradtype_top. - complete_stylex-fill-gradtype-top = 'X'. + changer->set_fill_gradtype_top( ip_fill_gradtype_top ). ENDIF. IF ip_fill_gradtype_right IS SUPPLIED. - complete_style-fill-gradtype-right = ip_fill_gradtype_right. - complete_stylex-fill-gradtype-right = 'X'. + changer->set_fill_gradtype_right( ip_fill_gradtype_right ). ENDIF. IF ip_fill_gradtype_position1 IS SUPPLIED. - complete_style-fill-gradtype-position1 = ip_fill_gradtype_position1. - complete_stylex-fill-gradtype-position1 = 'X'. + changer->set_fill_gradtype_position1( ip_fill_gradtype_position1 ). ENDIF. IF ip_fill_gradtype_position2 IS SUPPLIED. - complete_style-fill-gradtype-position2 = ip_fill_gradtype_position2. - complete_stylex-fill-gradtype-position2 = 'X'. + changer->set_fill_gradtype_position2( ip_fill_gradtype_position2 ). ENDIF. IF ip_fill_gradtype_position3 IS SUPPLIED. - complete_style-fill-gradtype-position3 = ip_fill_gradtype_position3. - complete_stylex-fill-gradtype-position3 = 'X'. + changer->set_fill_gradtype_position3( ip_fill_gradtype_position3 ). ENDIF. IF ip_borders_diagonal_mode IS SUPPLIED. - complete_style-borders-diagonal_mode = ip_borders_diagonal_mode. - complete_stylex-borders-diagonal_mode = 'X'. + changer->set_borders_diagonal_mode( ip_borders_diagonal_mode ). ENDIF. IF ip_alignment_horizontal IS SUPPLIED. - complete_style-alignment-horizontal = ip_alignment_horizontal. - complete_stylex-alignment-horizontal = 'X'. + changer->set_alignment_horizontal( ip_alignment_horizontal ). ENDIF. IF ip_alignment_vertical IS SUPPLIED. - complete_style-alignment-vertical = ip_alignment_vertical. - complete_stylex-alignment-vertical = 'X'. + changer->set_alignment_vertical( ip_alignment_vertical ). ENDIF. IF ip_alignment_textrotation IS SUPPLIED. - complete_style-alignment-textrotation = ip_alignment_textrotation. - complete_stylex-alignment-textrotation = 'X'. + changer->set_alignment_textrotation( ip_alignment_textrotation ). ENDIF. IF ip_alignment_wraptext IS SUPPLIED. - complete_style-alignment-wraptext = ip_alignment_wraptext. - complete_stylex-alignment-wraptext = 'X'. + changer->set_alignment_wraptext( ip_alignment_wraptext ). ENDIF. IF ip_alignment_shrinktofit IS SUPPLIED. - complete_style-alignment-shrinktofit = ip_alignment_shrinktofit. - complete_stylex-alignment-shrinktofit = 'X'. + changer->set_alignment_shrinktofit( ip_alignment_shrinktofit ). ENDIF. IF ip_alignment_indent IS SUPPLIED. - complete_style-alignment-indent = ip_alignment_indent. - complete_stylex-alignment-indent = 'X'. + changer->set_alignment_indent( ip_alignment_indent ). ENDIF. IF ip_protection_hidden IS SUPPLIED. - complete_style-protection-hidden = ip_protection_hidden. - complete_stylex-protection-hidden = 'X'. + changer->set_protection_hidden( ip_protection_hidden ). ENDIF. IF ip_protection_locked IS SUPPLIED. - complete_style-protection-locked = ip_protection_locked. - complete_stylex-protection-locked = 'X'. + changer->set_protection_locked( ip_protection_locked ). ENDIF. IF ip_borders_allborders_style IS SUPPLIED. - complete_style-borders-allborders-border_style = ip_borders_allborders_style. - complete_stylex-borders-allborders-border_style = 'X'. + changer->set_borders_allborders_style( ip_borders_allborders_style ). ENDIF. IF ip_borders_allborders_color IS SUPPLIED. - complete_style-borders-allborders-border_color = ip_borders_allborders_color. - complete_stylex-borders-allborders-border_color-rgb = 'X'. + changer->set_borders_allborders_color( ip_borders_allborders_color ). ENDIF. IF ip_borders_allbo_color_rgb IS SUPPLIED. - complete_style-borders-allborders-border_color-rgb = ip_borders_allbo_color_rgb. - complete_stylex-borders-allborders-border_color-rgb = 'X'. + changer->set_borders_allbo_color_rgb( ip_borders_allbo_color_rgb ). ENDIF. IF ip_borders_allbo_color_indexed IS SUPPLIED. - complete_style-borders-allborders-border_color-indexed = ip_borders_allbo_color_indexed. - complete_stylex-borders-allborders-border_color-indexed = 'X'. + changer->set_borders_allbo_color_indexe( ip_borders_allbo_color_indexed ). ENDIF. IF ip_borders_allbo_color_theme IS SUPPLIED. - complete_style-borders-allborders-border_color-theme = ip_borders_allbo_color_theme. - complete_stylex-borders-allborders-border_color-theme = 'X'. + changer->set_borders_allbo_color_theme( ip_borders_allbo_color_theme ). ENDIF. IF ip_borders_allbo_color_tint IS SUPPLIED. - complete_style-borders-allborders-border_color-tint = ip_borders_allbo_color_tint. - complete_stylex-borders-allborders-border_color-tint = 'X'. + changer->set_borders_allbo_color_tint( ip_borders_allbo_color_tint ). ENDIF. IF ip_borders_diagonal_style IS SUPPLIED. - complete_style-borders-diagonal-border_style = ip_borders_diagonal_style. - complete_stylex-borders-diagonal-border_style = 'X'. + changer->set_borders_diagonal_style( ip_borders_diagonal_style ). ENDIF. IF ip_borders_diagonal_color IS SUPPLIED. - complete_style-borders-diagonal-border_color = ip_borders_diagonal_color. - complete_stylex-borders-diagonal-border_color-rgb = 'X'. + changer->set_borders_diagonal_color( ip_borders_diagonal_color ). ENDIF. IF ip_borders_diagonal_color_rgb IS SUPPLIED. - complete_style-borders-diagonal-border_color-rgb = ip_borders_diagonal_color_rgb. - complete_stylex-borders-diagonal-border_color-rgb = 'X'. + changer->set_borders_diagonal_color_rgb( ip_borders_diagonal_color_rgb ). ENDIF. IF ip_borders_diagonal_color_inde IS SUPPLIED. - complete_style-borders-diagonal-border_color-indexed = ip_borders_diagonal_color_inde. - complete_stylex-borders-diagonal-border_color-indexed = 'X'. + changer->set_borders_diagonal_color_ind( ip_borders_diagonal_color_inde ). ENDIF. IF ip_borders_diagonal_color_them IS SUPPLIED. - complete_style-borders-diagonal-border_color-theme = ip_borders_diagonal_color_them. - complete_stylex-borders-diagonal-border_color-theme = 'X'. + changer->set_borders_diagonal_color_the( ip_borders_diagonal_color_them ). ENDIF. IF ip_borders_diagonal_color_tint IS SUPPLIED. - complete_style-borders-diagonal-border_color-tint = ip_borders_diagonal_color_tint. - complete_stylex-borders-diagonal-border_color-tint = 'X'. + changer->set_borders_diagonal_color_tin( ip_borders_diagonal_color_tint ). ENDIF. IF ip_borders_down_style IS SUPPLIED. - complete_style-borders-down-border_style = ip_borders_down_style. - complete_stylex-borders-down-border_style = 'X'. + changer->set_borders_down_style( ip_borders_down_style ). ENDIF. IF ip_borders_down_color IS SUPPLIED. - complete_style-borders-down-border_color = ip_borders_down_color. - complete_stylex-borders-down-border_color-rgb = 'X'. + changer->set_borders_down_color( ip_borders_down_color ). ENDIF. IF ip_borders_down_color_rgb IS SUPPLIED. - complete_style-borders-down-border_color-rgb = ip_borders_down_color_rgb. - complete_stylex-borders-down-border_color-rgb = 'X'. + changer->set_borders_down_color_rgb( ip_borders_down_color_rgb ). ENDIF. IF ip_borders_down_color_indexed IS SUPPLIED. - complete_style-borders-down-border_color-indexed = ip_borders_down_color_indexed. - complete_stylex-borders-down-border_color-indexed = 'X'. + changer->set_borders_down_color_indexed( ip_borders_down_color_indexed ). ENDIF. IF ip_borders_down_color_theme IS SUPPLIED. - complete_style-borders-down-border_color-theme = ip_borders_down_color_theme. - complete_stylex-borders-down-border_color-theme = 'X'. + changer->set_borders_down_color_theme( ip_borders_down_color_theme ). ENDIF. IF ip_borders_down_color_tint IS SUPPLIED. - complete_style-borders-down-border_color-tint = ip_borders_down_color_tint. - complete_stylex-borders-down-border_color-tint = 'X'. + changer->set_borders_down_color_tint( ip_borders_down_color_tint ). ENDIF. IF ip_borders_left_style IS SUPPLIED. - complete_style-borders-left-border_style = ip_borders_left_style. - complete_stylex-borders-left-border_style = 'X'. + changer->set_borders_left_style( ip_borders_left_style ). ENDIF. IF ip_borders_left_color IS SUPPLIED. - complete_style-borders-left-border_color = ip_borders_left_color. - complete_stylex-borders-left-border_color-rgb = 'X'. + changer->set_borders_left_color( ip_borders_left_color ). ENDIF. IF ip_borders_left_color_rgb IS SUPPLIED. - complete_style-borders-left-border_color-rgb = ip_borders_left_color_rgb. - complete_stylex-borders-left-border_color-rgb = 'X'. + changer->set_borders_left_color_rgb( ip_borders_left_color_rgb ). ENDIF. IF ip_borders_left_color_indexed IS SUPPLIED. - complete_style-borders-left-border_color-indexed = ip_borders_left_color_indexed. - complete_stylex-borders-left-border_color-indexed = 'X'. + changer->set_borders_left_color_indexed( ip_borders_left_color_indexed ). ENDIF. IF ip_borders_left_color_theme IS SUPPLIED. - complete_style-borders-left-border_color-theme = ip_borders_left_color_theme. - complete_stylex-borders-left-border_color-theme = 'X'. + changer->set_borders_left_color_theme( ip_borders_left_color_theme ). ENDIF. IF ip_borders_left_color_tint IS SUPPLIED. - complete_style-borders-left-border_color-tint = ip_borders_left_color_tint. - complete_stylex-borders-left-border_color-tint = 'X'. + changer->set_borders_left_color_tint( ip_borders_left_color_tint ). ENDIF. IF ip_borders_right_style IS SUPPLIED. - complete_style-borders-right-border_style = ip_borders_right_style. - complete_stylex-borders-right-border_style = 'X'. + changer->set_borders_right_style( ip_borders_right_style ). ENDIF. IF ip_borders_right_color IS SUPPLIED. - complete_style-borders-right-border_color = ip_borders_right_color. - complete_stylex-borders-right-border_color-rgb = 'X'. + changer->set_borders_right_color( ip_borders_right_color ). ENDIF. IF ip_borders_right_color_rgb IS SUPPLIED. - complete_style-borders-right-border_color-rgb = ip_borders_right_color_rgb. - complete_stylex-borders-right-border_color-rgb = 'X'. + changer->set_borders_right_color_rgb( ip_borders_right_color_rgb ). ENDIF. IF ip_borders_right_color_indexed IS SUPPLIED. - complete_style-borders-right-border_color-indexed = ip_borders_right_color_indexed. - complete_stylex-borders-right-border_color-indexed = 'X'. + changer->set_borders_right_color_indexe( ip_borders_right_color_indexed ). ENDIF. IF ip_borders_right_color_theme IS SUPPLIED. - complete_style-borders-right-border_color-theme = ip_borders_right_color_theme. - complete_stylex-borders-right-border_color-theme = 'X'. + changer->set_borders_right_color_theme( ip_borders_right_color_theme ). ENDIF. IF ip_borders_right_color_tint IS SUPPLIED. - complete_style-borders-right-border_color-tint = ip_borders_right_color_tint. - complete_stylex-borders-right-border_color-tint = 'X'. + changer->set_borders_right_color_tint( ip_borders_right_color_tint ). ENDIF. IF ip_borders_top_style IS SUPPLIED. - complete_style-borders-top-border_style = ip_borders_top_style. - complete_stylex-borders-top-border_style = 'X'. + changer->set_borders_top_style( ip_borders_top_style ). ENDIF. IF ip_borders_top_color IS SUPPLIED. - complete_style-borders-top-border_color = ip_borders_top_color. - complete_stylex-borders-top-border_color-rgb = 'X'. + changer->set_borders_top_color( ip_borders_top_color ). ENDIF. IF ip_borders_top_color_rgb IS SUPPLIED. - complete_style-borders-top-border_color-rgb = ip_borders_top_color_rgb. - complete_stylex-borders-top-border_color-rgb = 'X'. + changer->set_borders_top_color_rgb( ip_borders_top_color_rgb ). ENDIF. IF ip_borders_top_color_indexed IS SUPPLIED. - complete_style-borders-top-border_color-indexed = ip_borders_top_color_indexed. - complete_stylex-borders-top-border_color-indexed = 'X'. + changer->set_borders_top_color_indexed( ip_borders_top_color_indexed ). ENDIF. IF ip_borders_top_color_theme IS SUPPLIED. - complete_style-borders-top-border_color-theme = ip_borders_top_color_theme. - complete_stylex-borders-top-border_color-theme = 'X'. + changer->set_borders_top_color_theme( ip_borders_top_color_theme ). ENDIF. IF ip_borders_top_color_tint IS SUPPLIED. - complete_style-borders-top-border_color-tint = ip_borders_top_color_tint. - complete_stylex-borders-top-border_color-tint = 'X'. + changer->set_borders_top_color_tint( ip_borders_top_color_tint ). ENDIF. -* Now we have a completly filled styles. -* This can be used to get the guid -* Return guid if requested. Might be used if copy&paste of styles is requested - ep_guid = me->excel->get_static_cellstyle_guid( ip_cstyle_complete = complete_style - ip_cstylex_complete = complete_stylex ). - me->set_cell_style( ip_column = ip_column - ip_row = ip_row - ip_style = ep_guid ). + ep_guid = changer->apply( ip_worksheet = me + ip_column = ip_column + ip_row = ip_row ). + ENDMETHOD. "CHANGE_CELL_STYLE diff --git a/src/zif_excel_style_changer.intf.abap b/src/zif_excel_style_changer.intf.abap new file mode 100644 index 0000000..de88462 --- /dev/null +++ b/src/zif_excel_style_changer.intf.abap @@ -0,0 +1,495 @@ +INTERFACE zif_excel_style_changer + PUBLIC . + + METHODS apply + IMPORTING + ip_worksheet TYPE REF TO zcl_excel_worksheet + ip_column TYPE simple + ip_row TYPE zexcel_cell_row + RETURNING + VALUE(ep_guid) TYPE zexcel_cell_style + RAISING + zcx_excel. + METHODS get_guid + RETURNING + VALUE(result) TYPE zexcel_cell_style. + METHODS set_complete + IMPORTING + ip_complete TYPE zexcel_s_cstyle_complete + ip_xcomplete TYPE zexcel_s_cstylex_complete + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_font + IMPORTING + ip_font TYPE zexcel_s_cstyle_font + ip_xfont TYPE zexcel_s_cstylex_font OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_fill + IMPORTING + ip_fill TYPE zexcel_s_cstyle_fill + ip_xfill TYPE zexcel_s_cstylex_fill OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_borders + IMPORTING + ip_borders TYPE zexcel_s_cstyle_borders + ip_xborders TYPE zexcel_s_cstylex_borders OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_alignment + IMPORTING + ip_alignment TYPE zexcel_s_cstyle_alignment + ip_xalignment TYPE zexcel_s_cstylex_alignment OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_protection + IMPORTING + ip_protection TYPE zexcel_s_cstyle_protection + ip_xprotection TYPE zexcel_s_cstylex_protection OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_borders_all + IMPORTING + ip_borders_allborders TYPE zexcel_s_cstyle_border + ip_xborders_allborders TYPE zexcel_s_cstylex_border OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_borders_diagonal + IMPORTING + ip_borders_diagonal TYPE zexcel_s_cstyle_border + ip_xborders_diagonal TYPE zexcel_s_cstylex_border OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_borders_down + IMPORTING + ip_borders_down TYPE zexcel_s_cstyle_border + ip_xborders_down TYPE zexcel_s_cstylex_border OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_borders_left + IMPORTING + ip_borders_left TYPE zexcel_s_cstyle_border + ip_xborders_left TYPE zexcel_s_cstylex_border OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_borders_right + IMPORTING + ip_borders_right TYPE zexcel_s_cstyle_border + ip_xborders_right TYPE zexcel_s_cstylex_border OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_complete_borders_top + IMPORTING + ip_borders_top TYPE zexcel_s_cstyle_border + ip_xborders_top TYPE zexcel_s_cstylex_border OPTIONAL + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_number_format + IMPORTING + value TYPE zexcel_number_format + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_bold + IMPORTING + value TYPE flag + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_color + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_color_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_color_indexed + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_color_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_color_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_family + IMPORTING + value TYPE zexcel_style_font_family + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_italic + IMPORTING + value TYPE flag + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_name + IMPORTING + value TYPE zexcel_style_font_name + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_scheme + IMPORTING + value TYPE zexcel_style_font_scheme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_size + IMPORTING + value TYPE numeric + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_strikethrough + IMPORTING + value TYPE flag + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_underline + IMPORTING + value TYPE flag + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_font_underline_mode + IMPORTING + value TYPE zexcel_style_font_underline + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_filltype + IMPORTING + value TYPE zexcel_fill_type + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_rotation + IMPORTING + value TYPE zexcel_rotation + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_fgcolor + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_fgcolor_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_fgcolor_indexed + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_fgcolor_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_fgcolor_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_bgcolor + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_bgcolor_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_bgcolor_indexed + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_bgcolor_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_bgcolor_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_type + IMPORTING + value TYPE zexcel_s_gradient_type-type + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_degree + IMPORTING + value TYPE zexcel_s_gradient_type-degree + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_bottom + IMPORTING + value TYPE zexcel_s_gradient_type-bottom + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_left + IMPORTING + value TYPE zexcel_s_gradient_type-left + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_top + IMPORTING + value TYPE zexcel_s_gradient_type-top + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_right + IMPORTING + value TYPE zexcel_s_gradient_type-right + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_position1 + IMPORTING + value TYPE zexcel_s_gradient_type-position1 + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_position2 + IMPORTING + value TYPE zexcel_s_gradient_type-position2 + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_fill_gradtype_position3 + IMPORTING + value TYPE zexcel_s_gradient_type-position3 + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_diagonal_mode + IMPORTING + value TYPE zexcel_diagonal + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_alignment_horizontal + IMPORTING + value TYPE zexcel_alignment + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_alignment_vertical + IMPORTING + value TYPE zexcel_alignment + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_alignment_textrotation + IMPORTING + value TYPE zexcel_text_rotation + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_alignment_wraptext + IMPORTING + value TYPE flag + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_alignment_shrinktofit + IMPORTING + value TYPE flag + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_alignment_indent + IMPORTING + value TYPE zexcel_indent + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_protection_hidden + IMPORTING + value TYPE zexcel_cell_protection + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_protection_locked + IMPORTING + value TYPE zexcel_cell_protection + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_allborders_style + IMPORTING + value TYPE zexcel_border + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_allborders_color + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_allbo_color_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_allbo_color_indexe + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_allbo_color_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_allbo_color_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_diagonal_style + IMPORTING + value TYPE zexcel_border + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_diagonal_color + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_diagonal_color_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_diagonal_color_ind + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_diagonal_color_the + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_diagonal_color_tin + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_down_style + IMPORTING + value TYPE zexcel_border + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_down_color + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_down_color_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_down_color_indexed + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_down_color_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_down_color_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_left_style + IMPORTING + value TYPE zexcel_border + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_left_color + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_left_color_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_left_color_indexed + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_left_color_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_left_color_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_right_style + IMPORTING + value TYPE zexcel_border + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_right_color + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_right_color_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_right_color_indexe + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_right_color_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_right_color_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_top_style + IMPORTING + value TYPE zexcel_border + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_top_color + IMPORTING + value TYPE zexcel_s_style_color + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_top_color_rgb + IMPORTING + value TYPE zexcel_style_color_argb + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_top_color_indexed + IMPORTING + value TYPE zexcel_style_color_indexed + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_top_color_theme + IMPORTING + value TYPE zexcel_style_color_theme + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + METHODS set_borders_top_color_tint + IMPORTING + value TYPE zexcel_style_color_tint + RETURNING + VALUE(result) TYPE REF TO zif_excel_style_changer. + DATA: complete_style TYPE zexcel_s_cstyle_complete READ-ONLY, + complete_stylex TYPE zexcel_s_cstylex_complete READ-ONLY. +ENDINTERFACE. diff --git a/src/zif_excel_style_changer.intf.xml b/src/zif_excel_style_changer.intf.xml new file mode 100644 index 0000000..05811c6 --- /dev/null +++ b/src/zif_excel_style_changer.intf.xml @@ -0,0 +1,15 @@ + + + + + + ZIF_EXCEL_STYLE_CHANGER + E + Excel style + 2 + 1 + X + + + + From 74a3559b28111f62ee44237a3564133337644232 Mon Sep 17 00:00:00 2001 From: Abo Date: Wed, 15 Dec 2021 06:54:32 +0100 Subject: [PATCH 17/19] Fix links after org. move (#919) * change links to new org * fixed links * fixed links --- docs/abapGit-installation.md | 2 +- docs/contributing/coding-guidelines.md | 2 +- src/demos/zangry_birds.prog.abap | 4 ++-- src/demos/zdemo_calendar.prog.xml | 4 ++-- src/demos/zdemo_calendar_classes.prog.abap | 4 ++-- src/demos/zdemo_excel1.prog.abap | 2 +- src/zcl_excel_apack.clas.abap | 4 ++-- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/abapGit-installation.md b/docs/abapGit-installation.md index 99a4f75..ecf54ab 100644 --- a/docs/abapGit-installation.md +++ b/docs/abapGit-installation.md @@ -4,7 +4,7 @@ ## Procedure -Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/sapmentors/abap2xlsx.git*, package with *$abap2xls* if you just want to test. If you want to transport abap2xlsx to production then use a non local package. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* +Execute abapGit using the report **ZABAPGIT_FULL**, click on *New Online*, fill the field *Git repository URL* with *https://github.com/abap2xlsx/abap2xlsx.git*, package with *$abap2xls* if you just want to test. If you want to transport abap2xlsx to production then use a non local package. Click *Create package* if the package doesn't exist yet. Then click *Clone online repo* ![abapGit New Online Repository](new-online-abap2xlsx.png) diff --git a/docs/contributing/coding-guidelines.md b/docs/contributing/coding-guidelines.md index e763921..bfd3425 100644 --- a/docs/contributing/coding-guidelines.md +++ b/docs/contributing/coding-guidelines.md @@ -1,6 +1,6 @@ # Naming convention of variables, etc. -In abap2xlsx, over time, alas, the ABAP code came to mix different [naming standards](https://github.com/sapmentors/abap2xlsx/issues/773). Naming standards may vary from one class to another, but one naming standards is usually correctly applied in each class. +In abap2xlsx, over time, alas, the ABAP code came to mix different [naming standards](https://github.com/abap2xlsx/abap2xlsx/issues/773). Naming standards may vary from one class to another, but one naming standards is usually correctly applied in each class. It's not possible to impose one naming standards by fixing the existing names, because clients may have developed custom programs which may already refer to them. When it's about adding a new variable, parameter or type in an existing object or method, it's embarrassing to impose one naming standards because that could be inconsistent with the variables, parameters or types which already exist at this place. diff --git a/src/demos/zangry_birds.prog.abap b/src/demos/zangry_birds.prog.abap index 46b5f70..1c3b053 100644 --- a/src/demos/zangry_birds.prog.abap +++ b/src/demos/zangry_birds.prog.abap @@ -722,10 +722,10 @@ START-OF-SELECTION. ip_value = 'Created with abap2xlsx' ip_style = lv_style_credit_guid ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://sapmentors.github.io/abap2xlsx' ). + lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://abap2xlsx.github.io/abap2xlsx' ). lo_worksheet->set_cell( ip_column = 'AP' ip_row = 24 - ip_value = 'https://sapmentors.github.io/abap2xlsx' + ip_value = 'https://abap2xlsx.github.io/abap2xlsx' ip_style = lv_style_link_guid ip_hyperlink = lo_hyperlink ). diff --git a/src/demos/zdemo_calendar.prog.xml b/src/demos/zdemo_calendar.prog.xml index 00580a1..c266e88 100644 --- a/src/demos/zdemo_calendar.prog.xml +++ b/src/demos/zdemo_calendar.prog.xml @@ -26,7 +26,7 @@ I 002 - Created with abap2xlsx. Find more information at https://github.com/sapmentors/abap2xlsx. + Created with abap2xlsx. Find more information at https://github.com/abap2xlsx/abap2xlsx. 132 @@ -84,7 +84,7 @@ I 002 - Erzeugt mit abap2xlsx. Weitere Informationen unter https://github.com/sapmentors/abap2xlsx. + Erzeugt mit abap2xlsx. Weitere Informationen unter https://github.com/abap2xlsx/abap2xlsx. 132 diff --git a/src/demos/zdemo_calendar_classes.prog.abap b/src/demos/zdemo_calendar_classes.prog.abap index 211f1e3..1e9ef3e 100644 --- a/src/demos/zdemo_calendar_classes.prog.abap +++ b/src/demos/zdemo_calendar_classes.prog.abap @@ -347,8 +347,8 @@ CLASS zcl_helper IMPLEMENTATION. DATA: value TYPE string, hyperlink TYPE REF TO zcl_excel_hyperlink. - value = 'Created with abap2xlsx. Find more information at https://github.com/sapmentors/abap2xlsx.'(002). - hyperlink = zcl_excel_hyperlink=>create_external_link( 'https://github.com/sapmentors/abap2xlsx' ). "#EC NOTEXT + value = 'Created with abap2xlsx. Find more information at https://github.com/abap2xlsx/abap2xlsx.'(002). + hyperlink = zcl_excel_hyperlink=>create_external_link( 'https://github.com/abap2xlsx/abap2xlsx' ). "#EC NOTEXT c_worksheet->set_cell( EXPORTING ip_column = i_from_col " Cell Column diff --git a/src/demos/zdemo_excel1.prog.abap b/src/demos/zdemo_excel1.prog.abap index f660856..5c3c083 100644 --- a/src/demos/zdemo_excel1.prog.abap +++ b/src/demos/zdemo_excel1.prog.abap @@ -28,7 +28,7 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://sapmentors.github.io/abap2xlsx' ). + lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'https://abap2xlsx.github.io/abap2xlsx' ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 6 ip_value = '你好,世界' ). diff --git a/src/zcl_excel_apack.clas.abap b/src/zcl_excel_apack.clas.abap index c91160d..a6d6966 100644 --- a/src/zcl_excel_apack.clas.abap +++ b/src/zcl_excel_apack.clas.abap @@ -21,11 +21,11 @@ CLASS zcl_excel_apack IMPLEMENTATION. METHOD constructor. - descriptor-group_id = 'github.com/sapmentors/abap2xlsx'. + descriptor-group_id = 'github.com/abap2xlsx/abap2xlsx'. descriptor-artifact_id = 'abap2xlsx'. descriptor-version = '7.14.0'. descriptor-repository_type = 'abapGit'. - descriptor-git_url = 'https://github.com/sapmentors/abap2xlsx.git'. + descriptor-git_url = 'https://github.com/abap2xlsx/abap2xlsx.git'. ENDMETHOD. From a479c0b337bcc6af7dac4b7ae6137a2dc35520a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Sat, 18 Dec 2021 12:22:57 +0100 Subject: [PATCH 18/19] Fix enhancement categories of several structures (#918) Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com> --- src/zexcel_s_cstylex_border.tabl.xml | 2 +- src/zexcel_s_cstylex_borders.tabl.xml | 2 +- src/zexcel_s_cstylex_color.tabl.xml | 3 ++- src/zexcel_s_cstylex_fill.tabl.xml | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/zexcel_s_cstylex_border.tabl.xml b/src/zexcel_s_cstylex_border.tabl.xml index fe278ca..53c2d82 100644 --- a/src/zexcel_s_cstylex_border.tabl.xml +++ b/src/zexcel_s_cstylex_border.tabl.xml @@ -7,7 +7,7 @@ E INTTAB Changeflag for Cells - border - 4 + 2 diff --git a/src/zexcel_s_cstylex_borders.tabl.xml b/src/zexcel_s_cstylex_borders.tabl.xml index 850c4a9..db70678 100644 --- a/src/zexcel_s_cstylex_borders.tabl.xml +++ b/src/zexcel_s_cstylex_borders.tabl.xml @@ -7,7 +7,7 @@ E INTTAB Changeflag for Cellstyles - Borders - 4 + 2 diff --git a/src/zexcel_s_cstylex_color.tabl.xml b/src/zexcel_s_cstylex_color.tabl.xml index ff89646..3406718 100644 --- a/src/zexcel_s_cstylex_color.tabl.xml +++ b/src/zexcel_s_cstylex_color.tabl.xml @@ -7,7 +7,8 @@ E INTTAB Changeflag Color - 4 + E + 2 diff --git a/src/zexcel_s_cstylex_fill.tabl.xml b/src/zexcel_s_cstylex_fill.tabl.xml index 63dbcfc..d2a766b 100644 --- a/src/zexcel_s_cstylex_fill.tabl.xml +++ b/src/zexcel_s_cstylex_fill.tabl.xml @@ -7,7 +7,7 @@ E INTTAB Changeflag for Cellstyles - Fill - 4 + 2 From 6efa4c6904f3ce9ce04ed1a0091475eac272df17 Mon Sep 17 00:00:00 2001 From: sandraros <34005250+sandraros@users.noreply.github.com> Date: Sat, 18 Dec 2021 18:20:04 +0100 Subject: [PATCH 19/19] Reflect new abap2xlsx project URL (#920) --- .apack-manifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.apack-manifest.xml b/.apack-manifest.xml index 78a3d01..3f58b9e 100644 --- a/.apack-manifest.xml +++ b/.apack-manifest.xml @@ -2,11 +2,11 @@ - github.com/sapmentors/abap2xlsx + github.com/abap2xlsx/abap2xlsx abap2xlsx 7.14.0 abapGit - https://github.com/sapmentors/abap2xlsx.git + https://github.com/abap2xlsx/abap2xlsx.git