diff --git a/ZA2X/CLAS/ZCL_EXCEL_AUTOFILTER.slnk b/ZA2X/CLAS/ZCL_EXCEL_AUTOFILTER.slnk index 8aab299..6447045 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_AUTOFILTER.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_AUTOFILTER.slnk @@ -1,5 +1,18 @@ - + + + + + *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes @@ -8,33 +21,55 @@ *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - + + ABAP + + + + + + + + - method CONSTRUCTOR. + METHOD constructor. worksheet = io_sheet. - endmethod. +ENDMETHOD. - + + + + METHOD get_column_filter. + + DATA: ls_filter LIKE LINE OF me->mt_filters. + + READ TABLE me->mt_filters REFERENCE INTO rr_filter WITH TABLE KEY column = i_column. + IF sy-subrc <> 0. + ls_filter-column = i_column. + INSERT ls_filter INTO TABLE me->mt_filters REFERENCE INTO rr_filter. + ENDIF. + +ENDMETHOD. + + - method GET_FILTER_AREA. + METHOD get_filter_area. validate_area( ). rs_area = filter_area. - endmethod. +ENDMETHOD. - + - method GET_FILTER_RANGE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. + METHOD get_filter_range. + DATA: l_row_start_c TYPE string, + l_row_end_c TYPE string, + l_col_start_c TYPE string, + l_col_end_c TYPE string, + l_value TYPE string. validate_area( ). @@ -49,16 +84,16 @@ CONCATENATE l_col_start_c l_row_start_c ':' l_col_end_c l_row_end_c INTO r_range. - endmethod. +ENDMETHOD. - + - method GET_FILTER_REFERENCE. - DATA: l_row_start_c TYPE string, - l_row_end_c TYPE string, - l_col_start_c TYPE string, - l_col_end_c TYPE string, - l_value TYPE string. + METHOD get_filter_reference. + DATA: l_row_start_c TYPE string, + l_row_end_c TYPE string, + l_col_start_c TYPE string, + l_col_end_c TYPE string, + l_value TYPE string. validate_area( ). @@ -76,52 +111,266 @@ CONCATENATE r_ref '!$' l_col_start_c '$' l_row_start_c ':$' l_col_end_c '$' l_row_end_c INTO r_ref. - endmethod. +ENDMETHOD. - method GET_VALUES. + METHOD get_values. - rt_filter = values. + FIELD-SYMBOLS: <ls_filter> LIKE LINE OF me->mt_filters, + <ls_value> LIKE LINE OF <ls_filter>-t_values. - endmethod. + DATA: ls_filter LIKE LINE OF rt_filter. + + LOOP AT me->mt_filters ASSIGNING <ls_filter> WHERE rule = mc_filter_rule_single_values. + + ls_filter-column = <ls_filter>-column. + LOOP AT <ls_filter>-t_values ASSIGNING <ls_value>. + ls_filter-value = <ls_value>. + APPEND ls_filter TO rt_filter. + ENDLOOP. + + ENDLOOP. + +ENDMETHOD. - + + + + METHOD is_row_hidden. + + + DATA: lr_filter TYPE REF TO ts_filter, + lv_col TYPE i, + ls_value TYPE zexcel_s_autofilter_values. + + FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. + + rv_is_hidden = abap_false. + +*--------------------------------------------------------------------* +* 1st row of filter area is never hidden, because here the filter +* symbol is being shown +*--------------------------------------------------------------------* + IF iv_row = me->filter_area-row_start. + RETURN. + ENDIF. + + + lv_col = me->filter_area-col_start. + + + WHILE lv_col <= me->filter_area-col_end. + + lr_filter = me->get_column_filter( lv_col ). + ASSIGN lr_filter->* TO <ls_filter>. + + CASE <ls_filter>-rule. + + WHEN mc_filter_rule_single_values. + rv_is_hidden = me->is_row_hidden_single_values( iv_row = iv_row + iv_col = lv_col + is_filter = <ls_filter> ). + + WHEN mc_filter_rule_text_pattern. + rv_is_hidden = me->is_row_hidden_text_pattern( iv_row = iv_row + iv_col = lv_col + is_filter = <ls_filter> ). + + ENDCASE. + + IF rv_is_hidden = abap_true. + RETURN. + ENDIF. + + + ADD 1 TO lv_col. + + ENDWHILE. + + +ENDMETHOD. + + + + + + + METHOD is_row_hidden_single_values. + + + DATA: lv_value TYPE string. + + FIELD-SYMBOLS: <ls_sheet_content> LIKE LINE OF me->worksheet->sheet_content. + + rv_is_hidden = abap_false. " Default setting is NOT HIDDEN = is in filter range + +*--------------------------------------------------------------------* +* No filter values --> only symbol should be shown but nothing is being hidden +*--------------------------------------------------------------------* + IF is_filter-t_values IS INITIAL. + RETURN. + ENDIF. + +*--------------------------------------------------------------------* +* Get value of cell +*--------------------------------------------------------------------* + READ TABLE me->worksheet->sheet_content ASSIGNING <ls_sheet_content> WITH TABLE KEY cell_row = iv_row + cell_column = iv_col. + IF sy-subrc = 0. + lv_value = <ls_sheet_content>-cell_value. + ELSE. + CLEAR lv_value. + ENDIF. + +*--------------------------------------------------------------------* +* Check whether it is affected by filter +* this needs to be extended if we support other filtertypes +* other than single values +*--------------------------------------------------------------------* + READ TABLE is_filter-t_values TRANSPORTING NO FIELDS WITH TABLE KEY table_line = lv_value. + IF sy-subrc <> 0. + rv_is_hidden = abap_true. + RETURN. + ENDIF. + +ENDMETHOD. + + + + + + + METHOD is_row_hidden_text_pattern. + + + + DATA: lv_value TYPE string. + + FIELD-SYMBOLS: <ls_sheet_content> LIKE LINE OF me->worksheet->sheet_content. + + rv_is_hidden = abap_false. " Default setting is NOT HIDDEN = is in filter range + +*--------------------------------------------------------------------* +* Get value of cell +*--------------------------------------------------------------------* + READ TABLE me->worksheet->sheet_content ASSIGNING <ls_sheet_content> WITH TABLE KEY cell_row = iv_row + cell_column = iv_col. + IF sy-subrc = 0. + lv_value = <ls_sheet_content>-cell_value. + ELSE. + CLEAR lv_value. + ENDIF. + +*--------------------------------------------------------------------* +* Check whether it is affected by filter +* this needs to be extended if we support other filtertypes +* other than single values +*--------------------------------------------------------------------* + IF lv_value NOT IN is_filter-tr_textfilter1. + rv_is_hidden = abap_true. + RETURN. + ENDIF. + +ENDMETHOD. + + - method SET_FILTER_AREA. + METHOD set_filter_area. filter_area = is_area. - endmethod. +ENDMETHOD. - + + + + + + METHOD set_text_filter. +* see method documentation how to use this + + DATA: lr_filter TYPE REF TO ts_filter, + ls_value1 TYPE LINE OF ts_filter-tr_textfilter1. + + FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. + + + lr_filter = me->get_column_filter( i_column ). + ASSIGN lr_filter->* TO <ls_filter>. + + <ls_filter>-rule = mc_filter_rule_text_pattern. + CLEAR <ls_filter>-tr_textfilter1. + + IF iv_textfilter1 CA '*+'. " Pattern + ls_value1-sign = 'I'. + ls_value1-option = 'CP'. + ls_value1-low = iv_textfilter1. + ELSE. + ls_value1-sign = 'I'. + ls_value1-option = 'EQ'. + ls_value1-low = iv_textfilter1. + ENDIF. + APPEND ls_value1 TO <ls_filter>-tr_textfilter1. + +ENDMETHOD. + + + + + + + + + + + + + + + + + + + + + - method SET_VALUE. - DATA: ls_values TYPE zexcel_s_autofilter_values. + METHOD set_value. -* Checks a re missing. - ls_values-column = i_column. - ls_values-value = i_value. + DATA: lr_filter TYPE REF TO ts_filter, + ls_value TYPE zexcel_s_autofilter_values. - INSERT ls_values INTO TABLE values. -* Now we need to be sure we don't get the same value again. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. + FIELD-SYMBOLS: <ls_filter> TYPE ts_filter. - endmethod. + + lr_filter = me->get_column_filter( i_column ). + ASSIGN lr_filter->* TO <ls_filter>. + + <ls_filter>-rule = mc_filter_rule_single_values. + + INSERT i_value INTO TABLE <ls_filter>-t_values. + +ENDMETHOD. - + - method SET_VALUES. + METHOD set_values. -* Checks are missing. - values = it_values. - DELETE ADJACENT DUPLICATES FROM values COMPARING column value. + FIELD-SYMBOLS: <ls_value> LIKE LINE OF it_values. - endmethod. + LOOP AT it_values ASSIGNING <ls_value>. + + me->set_value( i_column = <ls_value>-column + i_value = <ls_value>-value ). + + ENDLOOP. + +ENDMETHOD. - - method VALIDATE_AREA. + + METHOD validate_area. DATA: l_col TYPE zexcel_cell_column, l_row TYPE zexcel_cell_row. @@ -159,6 +408,6 @@ IF filter_area-col_start > filter_area-col_end. filter_area-col_start = filter_area-col_end. ENDIF. - endmethod. +ENDMETHOD. diff --git a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk index 61acc64..0958f57 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk @@ -1,12 +1,12 @@ - - + - - - - diff --git a/ZA2X/CLAS/ZCL_EXCEL_GRAPH.slnk b/ZA2X/CLAS/ZCL_EXCEL_GRAPH.slnk index 368b72a..84f5cab 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_GRAPH.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_GRAPH.slnk @@ -1,11 +1,11 @@ - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - *"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type @@ -31,11 +31,11 @@ *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk index ee55120..362d7a4 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk @@ -30,7 +30,7 @@ END OF t_workbookpr "/> - - *"* local class implementation for public class @@ -405,7 +396,7 @@ ENDMETHOD. ENDCASE. ENDMETHOD. - + METHOD fill_row_outlines. @@ -559,7 +550,7 @@ ENDMETHOD. endmethod. - + @@ -689,7 +680,7 @@ endmethod. ENDMETHOD. - + @@ -701,7 +692,7 @@ ENDMETHOD. ENDMETHOD. - + @@ -732,7 +723,7 @@ ENDMETHOD. ENDMETHOD. - + @@ -892,7 +883,7 @@ ENDMETHOD. ENDMETHOD. - + @@ -938,7 +929,7 @@ ENDMETHOD. ENDMETHOD. - + method LOAD_SHARED_STRINGS. @@ -1057,7 +1048,7 @@ ENDMETHOD. endmethod. - + @@ -1296,7 +1287,7 @@ ENDMETHOD. ENDMETHOD. - + method LOAD_STYLE_BORDERS. @@ -1426,7 +1417,7 @@ ENDMETHOD. endmethod. - + method LOAD_STYLE_FILLS. @@ -1598,7 +1589,7 @@ ENDMETHOD. endmethod. - + METHOD load_style_fonts. @@ -1726,7 +1717,7 @@ ENDMETHOD. ENDMETHOD. - + method LOAD_STYLE_NUM_FORMATS. @@ -1839,7 +1830,7 @@ ENDMETHOD. endmethod. - + @@ -2260,7 +2251,7 @@ ENDMETHOD. endmethod. - + @@ -2334,6 +2325,8 @@ ENDMETHOD. id TYPE string, orientation TYPE string, scale TYPE string, + fittoheight TYPE string, + fittowidth TYPE string, END OF lty_page_setup. TYPES: BEGIN OF lty_sheetformatpr, @@ -2431,6 +2424,8 @@ ENDMETHOD. lo_ixml_hf_value_elem TYPE REF TO if_ixml_element, lo_ixml_pagesetup_elem TYPE REF TO if_ixml_element, + lo_ixml_sheetpr TYPE REF TO if_ixml_element, + lv_fit_to_page TYPE string, ls_pagesetup TYPE lty_page_setup, lo_ixml_columns TYPE REF TO if_ixml_node_collection, @@ -2787,10 +2782,10 @@ ENDMETHOD. IF ls_column-max = zcl_excel_common=>c_excel_sheet_max_col. " Max = very right column IF ls_column-hidden = 1 " all hidden AND ls_column-min > 0. - io_worksheet->zif_excel_sheet_properties~hide_columns_from = zcl_excel_common=>convert_column2alpha( ls_column-min ). + io_worksheet->zif_excel_sheet_properties~hide_columns_from = zcl_excel_common=>convert_column2alpha( ls_column-min ). ELSEIF ls_column-style > ''. * Set default style for remaining columns - io_worksheet->zif_excel_sheet_properties~set_style( dummy_zexcel_cell_style ). + io_worksheet->zif_excel_sheet_properties~set_style( dummy_zexcel_cell_style ). ENDIF. ENDIF. @@ -2853,6 +2848,15 @@ ENDMETHOD. io_ixml_worksheet = lo_ixml_worksheet io_worksheet = io_worksheet ). +* FitToPage + lo_ixml_sheetpr ?= lo_ixml_worksheet->find_from_name( 'pageSetUpPr' ). + IF lo_ixml_sheetpr IS BOUND. + + lv_fit_to_page = lo_ixml_sheetpr->get_attribute_ns( 'fitToPage' ). + IF lv_fit_to_page IS NOT INITIAL. + io_worksheet->sheet_setup->fit_to_page = 'X'. + ENDIF. + ENDIF. " Read in page setup lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ). IF lo_ixml_pagesetup_elem IS NOT INITIAL. @@ -2862,8 +2866,22 @@ ENDMETHOD. cp_structure = ls_pagesetup ). io_worksheet->sheet_setup->orientation = ls_pagesetup-orientation. io_worksheet->sheet_setup->scale = ls_pagesetup-scale. + IF io_worksheet->sheet_setup->fit_to_page = 'X'. + IF ls_pagesetup-fittowidth IS NOT INITIAL. + io_worksheet->sheet_setup->fit_to_width = ls_pagesetup-fittowidth. + ELSE. + io_worksheet->sheet_setup->fit_to_width = 1. " Default if not given - Excel doesn't write this to xml + ENDIF. + IF ls_pagesetup-fittoheight IS NOT INITIAL. + io_worksheet->sheet_setup->fit_to_height = ls_pagesetup-fittoheight. + ELSE. + io_worksheet->sheet_setup->fit_to_height = 1. " Default if not given - Excel doesn't write this to xml + ENDIF. + ENDIF. ENDIF. + + " Read header footer lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ). IF lo_ixml_headerfooter_elem IS NOT INITIAL. @@ -2993,23 +3011,24 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format. - DATA: lo_ixml_cond_formats TYPE REF TO if_ixml_node_collection, - lo_ixml_cond_format TYPE REF TO if_ixml_element, - lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, -* lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, -* lo_ixml TYPE REF TO if_ixml_element, - lo_ixml_rule TYPE REF TO if_ixml_element, -* lo_ixml_rule_iconset TYPE REF TO if_ixml_element, - lo_style_conditional TYPE REF TO zcl_excel_style_conditional. + DATA: lo_ixml_cond_formats TYPE REF TO if_ixml_node_collection, + lo_ixml_cond_format TYPE REF TO if_ixml_element, + lo_ixml_iterator TYPE REF TO if_ixml_node_iterator, + lo_ixml_rules TYPE REF TO if_ixml_node_collection, + lo_ixml_rule TYPE REF TO if_ixml_element, + lo_ixml_iterator2 TYPE REF TO if_ixml_node_iterator, + lo_style_conditional TYPE REF TO zcl_excel_style_conditional, + lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional. DATA: lv_area TYPE string, + lt_areas TYPE STANDARD TABLE OF string WITH NON-UNIQUE DEFAULT KEY, lv_area_start_row TYPE zexcel_cell_row, lv_area_end_row TYPE zexcel_cell_row, lv_area_start_col TYPE zexcel_cell_column_alpha, @@ -3033,9 +3052,13 @@ ENDMETHOD. *--------------------------------------------------------------------* * Get type of rule *--------------------------------------------------------------------* - lo_ixml_rule ?= lo_ixml_cond_format->get_first_child( ). " = cfRule - IF lo_ixml_rule IS BOUND. + lo_ixml_rules = io_ixml_worksheet->get_elements_by_tag_name( name = 'cfRule' ). + lo_ixml_iterator2 = lo_ixml_rules->create_iterator( ). + lo_ixml_rule ?= lo_ixml_iterator2->get_next( ). +* IF lo_ixml_rule IS BOUND. + WHILE lo_ixml_rule IS BOUND. lv_rule = lo_ixml_rule->get_attribute_ns( 'type' ). + CLEAR lo_style_conditional. *--------------------------------------------------------------------* * Depending on ruletype get additional information @@ -3084,28 +3107,53 @@ ENDMETHOD. WHEN OTHERS. ENDCASE. - ENDIF. +* ENDIF. - IF lo_style_conditional IS BOUND. - lo_style_conditional->rule = lv_rule. - lo_style_conditional->priority = lo_ixml_rule->get_attribute_ns( 'priority' ). + IF lo_style_conditional IS BOUND. + lo_style_conditional->rule = lv_rule. + lo_style_conditional->priority = lo_ixml_rule->get_attribute_ns( 'priority' ). *--------------------------------------------------------------------* * Set area to which conditional formatting belongs *--------------------------------------------------------------------* - lv_area = lo_ixml_cond_format->get_attribute_ns( 'sqref' ). - zcl_excel_common=>convert_range2column_a_row( EXPORTING - i_range = lv_area - IMPORTING - e_column_start = lv_area_start_col - e_column_end = lv_area_end_col - e_row_start = lv_area_start_row - e_row_end = lv_area_end_row ). - lo_style_conditional->set_range( ip_start_column = lv_area_start_col - ip_stop_column = lv_area_end_col - ip_start_row = lv_area_start_row - ip_stop_row = lv_area_end_row ). + lv_area = lo_ixml_cond_format->get_attribute_ns( 'sqref' ). + SPLIT lv_area AT space INTO TABLE lt_areas. + DELETE lt_areas WHERE table_line IS INITIAL. + LOOP AT lt_areas INTO lv_area. +* IF sy-tabix = 1. " Add futher style for next area +* lo_style_conditional2 = lo_style_conditional. +* ELSE. +* lo_style_conditional2 = io_worksheet->add_new_conditional_style( ). +* lo_style_conditional2->mode_cellis = lo_style_conditional->mode_cellis . +* lo_style_conditional2->mode_colorscale = lo_style_conditional->mode_colorscale . +* lo_style_conditional2->mode_databar = lo_style_conditional->mode_databar . +* lo_style_conditional2->mode_expression = lo_style_conditional->mode_expression . +* lo_style_conditional2->mode_iconset = lo_style_conditional->mode_iconset . +* lo_style_conditional2->mode_top10 = lo_style_conditional->mode_top10 . +* lo_style_conditional2->mode_above_average = lo_style_conditional->mode_above_average. +* lo_style_conditional2->priority = lo_style_conditional->priority . +* lo_style_conditional2->rule = lo_style_conditional->rule . +* ENDIF. - ENDIF. + zcl_excel_common=>convert_range2column_a_row( EXPORTING + i_range = lv_area + IMPORTING + e_column_start = lv_area_start_col + e_column_end = lv_area_end_col + e_row_start = lv_area_start_row + e_row_end = lv_area_end_row ). +* lo_style_conditional2->set_range( ip_start_column = lv_area_start_col +* ip_stop_column = lv_area_end_col +* ip_start_row = lv_area_start_row +* ip_stop_row = lv_area_end_row ). + lo_style_conditional->add_range( ip_start_column = lv_area_start_col + ip_stop_column = lv_area_end_col + ip_start_row = lv_area_start_row + ip_stop_row = lv_area_end_row ). + ENDLOOP. + + ENDIF. + lo_ixml_rule ?= lo_ixml_iterator2->get_next( ). + ENDWHILE. lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ). @@ -3114,7 +3162,7 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format_aa. @@ -3167,7 +3215,7 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format_ci. @@ -3208,7 +3256,7 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format_cs. @@ -3266,7 +3314,7 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format_db. @@ -3303,7 +3351,7 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format_ex. @@ -3341,7 +3389,7 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format_is. @@ -3388,7 +3436,7 @@ ENDMETHOD. ENDMETHOD. - + METHOD load_worksheet_cond_format_t10. @@ -3422,7 +3470,7 @@ ENDMETHOD. ENDMETHOD. - + @@ -3541,7 +3589,7 @@ ENDMETHOD. endmethod. - + @@ -3615,7 +3663,7 @@ ENDMETHOD. ENDMETHOD. - + @@ -3684,7 +3732,7 @@ ENDMETHOD. ENDMETHOD. - + @@ -3823,7 +3871,7 @@ ENDMETHOD. ENDMETHOD. - + method RESOLVE_PATH. @@ -3867,7 +3915,7 @@ ENDMETHOD. endmethod. - + method RESOLVE_REFERENCED_FORMULAE. TYPES: BEGIN OF ty_referenced_cells, sheet TYPE REF TO zcl_excel_worksheet, diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_HUGE_FILE.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_HUGE_FILE.slnk index 281390e..3386300 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_READER_HUGE_FILE.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_READER_HUGE_FILE.slnk @@ -1,6 +1,6 @@ - - + - - - - - - - - - + + + + + - + *"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type *"* declarations @@ -99,27 +99,15 @@ endmethod. - method LOAD_WORKSHEET. + METHOD load_worksheet. super->load_worksheet( EXPORTING ip_path = ip_path io_worksheet = io_worksheet ). - DATA: path TYPE string, - node TYPE REF TO if_ixml_element, - worksheet TYPE REF TO if_ixml_document, - sheetpr TYPE t_sheetpr. - - -* " Read Workbook codeName -* workbook = me->get_ixml_from_zip_archive( ip_path ). -* node ?= workbook->find_from_name( 'fileVersion' ). -* IF node IS BOUND. -* -* fill_struct_from_attributes( EXPORTING ip_element = node -* CHANGING cp_structure = fileversion ). -* -* IO_WORKSHEET->zif_excel_book_vba_project~set_codename( fileversion-codename ). -* ENDIF. + DATA: path TYPE string, + node TYPE REF TO if_ixml_element, + worksheet TYPE REF TO if_ixml_document, + sheetpr TYPE t_sheetpr. " Read Workbook codeName worksheet = me->get_ixml_from_zip_archive( ip_path ). @@ -128,9 +116,10 @@ fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = sheetpr ). - - io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). + IF sheetpr-codename IS NOT INITIAL. + io_worksheet->zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ). + ENDIF. ENDIF. - endmethod. +ENDMETHOD. diff --git a/ZA2X/CLAS/ZCL_EXCEL_STYLE_CONDITIONAL.slnk b/ZA2X/CLAS/ZCL_EXCEL_STYLE_CONDITIONAL.slnk index 26a80b9..394abc8 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_STYLE_CONDITIONAL.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_STYLE_CONDITIONAL.slnk @@ -62,12 +62,62 @@ + - - + + + + + + METHOD add_range. + DATA: lv_column TYPE zexcel_cell_column, + lv_row_alpha TYPE string, + lv_col_alpha TYPE string, + lv_coords1 TYPE string, + lv_coords2 TYPE string. + + + lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). +* me->mv_cell_data-cell_row = 1. +* me->mv_cell_data-cell_column = lv_column. +* + lv_col_alpha = ip_start_column. + lv_row_alpha = ip_start_row. + SHIFT lv_row_alpha RIGHT DELETING TRAILING space. + SHIFT lv_row_alpha LEFT DELETING LEADING space. + CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords1. + + IF ip_stop_column IS NOT INITIAL. + lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). + ELSE. + lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). + ENDIF. + + IF ip_stop_row IS NOT INITIAL. " If we don't get explicitly a stop column use start column + lv_row_alpha = ip_stop_row. + ELSE. + lv_row_alpha = ip_start_row. + ENDIF. + IF ip_stop_column IS NOT INITIAL. " If we don't get explicitly a stop column use start column + lv_col_alpha = ip_stop_column. + ELSE. + lv_col_alpha = ip_start_column. + ENDIF. + SHIFT lv_row_alpha RIGHT DELETING TRAILING space. + SHIFT lv_row_alpha LEFT DELETING LEADING space. + CONCATENATE lv_col_alpha lv_row_alpha INTO lv_coords2. + IF lv_coords2 IS NOT INITIAL AND lv_coords2 <> lv_coords1. + CONCATENATE me->mv_rule_range ` ` lv_coords1 ':' lv_coords2 INTO me->mv_rule_range. + ELSE. + CONCATENATE me->mv_rule_range ` ` lv_coords1 INTO me->mv_rule_range. + ENDIF. + SHIFT me->mv_rule_range LEFT DELETING LEADING space. + +ENDMETHOD. + - method CONSTRUCTOR. + METHOD constructor. DATA: ls_iconset TYPE zexcel_conditional_iconset. ls_iconset-iconset = zcl_excel_style_conditional=>c_iconset_3trafficlights. @@ -89,13 +139,10 @@ me->priority = 1. * inizialize dimension range - me->stop_cell-cell_row = 1. - me->stop_cell-cell_column = 1. - me->start_cell-cell_row = 1. - me->start_cell-cell_column = 1. - endmethod. + me->MV_RULE_RANGE = 'A1'. +ENDMETHOD. - + @@ -151,38 +198,26 @@ ENDMETHOD. - method GET_DIMENSION_RANGE. - IF stop_cell EQ start_cell. "only one cell - ep_dimension_range = start_cell-cell_coords. - ELSE. - CONCATENATE start_cell-cell_coords ':' stop_cell-cell_coords INTO ep_dimension_range. - ENDIF. - endmethod. + METHOD get_dimension_range. + + ep_dimension_range = me->mv_rule_range. + +ENDMETHOD. - method SET_RANGE. - DATA: lv_column TYPE zexcel_cell_column, - lv_row_alpha TYPE string. + METHOD set_range. - lv_column = zcl_excel_common=>convert_column2int( ip_stop_column ). - stop_cell-cell_row = 1. - stop_cell-cell_column = lv_column. - lv_row_alpha = ip_stop_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_stop_column lv_row_alpha INTO stop_cell-cell_coords. + CLEAR: me->mv_rule_range. - lv_column = zcl_excel_common=>convert_column2int( ip_start_column ). - start_cell-cell_row = 1. - start_cell-cell_column = lv_column. - lv_row_alpha = ip_start_row. - SHIFT lv_row_alpha RIGHT DELETING TRAILING space. - SHIFT lv_row_alpha LEFT DELETING LEADING space. - CONCATENATE ip_start_column lv_row_alpha INTO start_cell-cell_coords. - endmethod. + me->add_range( ip_start_row = ip_start_row + ip_start_column = ip_start_column + ip_stop_row = ip_stop_row + ip_stop_column = ip_stop_column ). + +ENDMETHOD. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk index 1eba835..f60a4db 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk @@ -1,15 +1,15 @@ - - + - - - - - - - - @@ -199,12 +199,6 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - @@ -228,9 +222,6 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION - - - diff --git a/ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk b/ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk index 1b0180e..9ed77e7 100644 --- a/ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk +++ b/ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk @@ -1,4 +1,4 @@ - + diff --git a/ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk b/ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk index b20a3ee..48a7fc8 100644 --- a/ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk +++ b/ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk @@ -1,4 +1,4 @@ - + diff --git a/ZA2X/TABL/ZEXCEL_CONDITIONAL_ABOVE_AVG.slnk b/ZA2X/TABL/ZEXCEL_CONDITIONAL_ABOVE_AVG.slnk index 756dd7a..56acabe 100644 --- a/ZA2X/TABL/ZEXCEL_CONDITIONAL_ABOVE_AVG.slnk +++ b/ZA2X/TABL/ZEXCEL_CONDITIONAL_ABOVE_AVG.slnk @@ -1,5 +1,5 @@ - + diff --git a/ZA2X/TABL/ZEXCEL_PANE.slnk b/ZA2X/TABL/ZEXCEL_PANE.slnk index 8844bfa..6f9b542 100644 --- a/ZA2X/TABL/ZEXCEL_PANE.slnk +++ b/ZA2X/TABL/ZEXCEL_PANE.slnk @@ -1,9 +1,9 @@ - + - - + + diff --git a/ZA2X/TABL/ZEXCEL_S_ORG_REL.slnk b/ZA2X/TABL/ZEXCEL_S_ORG_REL.slnk index bfae045..b0bacbf 100644 --- a/ZA2X/TABL/ZEXCEL_S_ORG_REL.slnk +++ b/ZA2X/TABL/ZEXCEL_S_ORG_REL.slnk @@ -25,13 +25,13 @@ - - + + - + @@ -48,9 +48,9 @@ - + - + diff --git a/ZA2X/XSLT/ZEXCEL_TR_SHEET.slnk b/ZA2X/XSLT/ZEXCEL_TR_SHEET.slnk index e575d35..08ca893 100644 --- a/ZA2X/XSLT/ZEXCEL_TR_SHEET.slnk +++ b/ZA2X/XSLT/ZEXCEL_TR_SHEET.slnk @@ -294,14 +294,14 @@ </drawing> </tt:cond> <tt:cond check="WORKSHEET.TABLES_COUNT != 0"> - <mergeCells> + <tableParts> <tt:attribute name="count" value-ref="WORKSHEET.TABLES_COUNT" /> <tt:loop ref="WORKSHEET.TABLES"> <tablePart> <tt:attribute name="r:id" value-ref="R_ID" /> </tablePart> </tt:loop> - </mergeCells> + </tableParts> </tt:cond> </worksheet> </tt:template>