mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 16:56:11 +08:00
269 lines
11 KiB
ABAP
269 lines
11 KiB
ABAP
class ZCL_EXCEL_STYLE_COND definition
|
|
public
|
|
final
|
|
create public .
|
|
|
|
public section.
|
|
class ZCL_EXCEL_STYLE_CONDITIONAL definition load .
|
|
|
|
*"* public components of class ZCL_EXCEL_STYLE_COND
|
|
*"* do not include other source files here!!!
|
|
constants C_CFVO_TYPE_FORMULA type ZEXCEL_CONDITIONAL_TYPE value 'formula'. "#EC NOTEXT
|
|
constants C_CFVO_TYPE_MAX type ZEXCEL_CONDITIONAL_TYPE value 'max'. "#EC NOTEXT
|
|
constants C_CFVO_TYPE_MIN type ZEXCEL_CONDITIONAL_TYPE value 'min'. "#EC NOTEXT
|
|
constants C_CFVO_TYPE_NUMBER type ZEXCEL_CONDITIONAL_TYPE value 'num'. "#EC NOTEXT
|
|
constants C_CFVO_TYPE_PERCENT type ZEXCEL_CONDITIONAL_TYPE value 'percent'. "#EC NOTEXT
|
|
constants C_CFVO_TYPE_PERCENTILE type ZEXCEL_CONDITIONAL_TYPE value 'percentile'. "#EC NOTEXT
|
|
constants C_ICONSET_3ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '3Arrows'. "#EC NOTEXT
|
|
constants C_ICONSET_3ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '3ArrowsGray'. "#EC NOTEXT
|
|
constants C_ICONSET_3FLAGS type ZEXCEL_CONDITION_RULE_ICONSET value '3Flags'. "#EC NOTEXT
|
|
constants C_ICONSET_3SIGNS type ZEXCEL_CONDITION_RULE_ICONSET value '3Signs'. "#EC NOTEXT
|
|
constants C_ICONSET_3SYMBOLS type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols'. "#EC NOTEXT
|
|
constants C_ICONSET_3SYMBOLS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3Symbols2'. "#EC NOTEXT
|
|
constants C_ICONSET_3TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value ''. "#EC NOTEXT
|
|
constants C_ICONSET_3TRAFFICLIGHTS2 type ZEXCEL_CONDITION_RULE_ICONSET value '3TrafficLights2'. "#EC NOTEXT
|
|
constants C_ICONSET_4ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '4Arrows'. "#EC NOTEXT
|
|
constants C_ICONSET_4ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '4ArrowsGray'. "#EC NOTEXT
|
|
constants C_ICONSET_4RATING type ZEXCEL_CONDITION_RULE_ICONSET value '4Rating'. "#EC NOTEXT
|
|
constants C_ICONSET_4REDTOBLACK type ZEXCEL_CONDITION_RULE_ICONSET value '4RedToBlack'. "#EC NOTEXT
|
|
constants C_ICONSET_4TRAFFICLIGHTS type ZEXCEL_CONDITION_RULE_ICONSET value '4TrafficLights'. "#EC NOTEXT
|
|
constants C_ICONSET_5ARROWS type ZEXCEL_CONDITION_RULE_ICONSET value '5Arrows'. "#EC NOTEXT
|
|
constants C_ICONSET_5ARROWSGRAY type ZEXCEL_CONDITION_RULE_ICONSET value '5ArrowsGray'. "#EC NOTEXT
|
|
constants C_ICONSET_5QUARTERS type ZEXCEL_CONDITION_RULE_ICONSET value '5Quarters'. "#EC NOTEXT
|
|
constants C_ICONSET_5RATING type ZEXCEL_CONDITION_RULE_ICONSET value '5Rating'. "#EC NOTEXT
|
|
constants C_OPERATOR_BEGINSWITH type ZEXCEL_CONDITION_OPERATOR value 'beginsWith'. "#EC NOTEXT
|
|
constants C_OPERATOR_BETWEEN type ZEXCEL_CONDITION_OPERATOR value 'between'. "#EC NOTEXT
|
|
constants C_OPERATOR_CONTAINSTEXT type ZEXCEL_CONDITION_OPERATOR value 'containsText'. "#EC NOTEXT
|
|
constants C_OPERATOR_ENDSWITH type ZEXCEL_CONDITION_OPERATOR value 'endsWith'. "#EC NOTEXT
|
|
constants C_OPERATOR_EQUAL type ZEXCEL_CONDITION_OPERATOR value 'equal'. "#EC NOTEXT
|
|
constants C_OPERATOR_GREATERTHAN type ZEXCEL_CONDITION_OPERATOR value 'greaterThan'. "#EC NOTEXT
|
|
constants C_OPERATOR_GREATERTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'greaterThanOrEqual'. "#EC NOTEXT
|
|
constants C_OPERATOR_LESSTHAN type ZEXCEL_CONDITION_OPERATOR value 'lessThan'. "#EC NOTEXT
|
|
constants C_OPERATOR_LESSTHANOREQUAL type ZEXCEL_CONDITION_OPERATOR value 'lessThanOrEqual'. "#EC NOTEXT
|
|
constants C_OPERATOR_NONE type ZEXCEL_CONDITION_OPERATOR value ''. "#EC NOTEXT
|
|
constants C_OPERATOR_NOTCONTAINS type ZEXCEL_CONDITION_OPERATOR value 'notContains'. "#EC NOTEXT
|
|
constants C_OPERATOR_NOTEQUAL type ZEXCEL_CONDITION_OPERATOR value 'notEqual'. "#EC NOTEXT
|
|
constants C_RULE_CELLIS type ZEXCEL_CONDITION_RULE value 'cellIs'. "#EC NOTEXT
|
|
constants C_RULE_CONTAINSTEXT type ZEXCEL_CONDITION_RULE value 'containsText'. "#EC NOTEXT
|
|
constants C_RULE_DATABAR type ZEXCEL_CONDITION_RULE value 'dataBar'. "#EC NOTEXT
|
|
constants C_RULE_EXPRESSION type ZEXCEL_CONDITION_RULE value 'expression'. "#EC NOTEXT
|
|
constants C_RULE_ICONSET type ZEXCEL_CONDITION_RULE value 'iconSet'. "#EC NOTEXT
|
|
constants C_RULE_COLORSCALE type ZEXCEL_CONDITION_RULE value 'colorScale'. "#EC NOTEXT
|
|
constants C_RULE_NONE type ZEXCEL_CONDITION_RULE value 'none'. "#EC NOTEXT
|
|
constants C_RULE_TOP10 type ZEXCEL_CONDITION_RULE value 'top10'. "#EC NOTEXT
|
|
constants C_RULE_ABOVE_AVERAGE type ZEXCEL_CONDITION_RULE value 'aboveAverage'. "#EC NOTEXT
|
|
constants C_SHOWVALUE_FALSE type ZEXCEL_CONDITIONAL_SHOW_VALUE value 0. "#EC NOTEXT
|
|
constants C_SHOWVALUE_TRUE type ZEXCEL_CONDITIONAL_SHOW_VALUE value 1. "#EC NOTEXT
|
|
data MODE_CELLIS type ZEXCEL_CONDITIONAL_CELLIS .
|
|
data MODE_COLORSCALE type ZEXCEL_CONDITIONAL_COLORSCALE .
|
|
data MODE_DATABAR type ZEXCEL_CONDITIONAL_DATABAR .
|
|
data MODE_EXPRESSION type ZEXCEL_CONDITIONAL_EXPRESSION .
|
|
data MODE_ICONSET type ZEXCEL_CONDITIONAL_ICONSET .
|
|
data MODE_TOP10 type ZEXCEL_CONDITIONAL_TOP10 .
|
|
data MODE_ABOVE_AVERAGE type ZEXCEL_CONDITIONAL_ABOVE_AVG .
|
|
data PRIORITY type ZEXCEL_STYLE_PRIORITY value 1. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . " .
|
|
data RULE type ZEXCEL_CONDITION_RULE .
|
|
|
|
METHODS constructor
|
|
IMPORTING
|
|
!ip_guid TYPE zexcel_cell_style OPTIONAL
|
|
!ip_dimension_range TYPE string.
|
|
methods GET_DIMENSION_RANGE
|
|
returning
|
|
value(EP_DIMENSION_RANGE) type STRING .
|
|
methods SET_RANGE
|
|
importing
|
|
!IP_START_ROW type ZEXCEL_CELL_ROW
|
|
!IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
|
!IP_STOP_ROW type ZEXCEL_CELL_ROW
|
|
!IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
|
raising
|
|
ZCX_EXCEL .
|
|
methods ADD_RANGE
|
|
importing
|
|
!IP_START_ROW type ZEXCEL_CELL_ROW
|
|
!IP_START_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
|
!IP_STOP_ROW type ZEXCEL_CELL_ROW
|
|
!IP_STOP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
|
|
raising
|
|
ZCX_EXCEL .
|
|
class-methods FACTORY_COND_STYLE_ICONSET
|
|
importing
|
|
!IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET
|
|
!IV_ICON_TYPE type ZEXCEL_CONDITION_RULE_ICONSET default C_ICONSET_3TRAFFICLIGHTS2
|
|
!IV_CFVO1_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
|
|
!IV_CFVO1_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
|
|
!IV_CFVO2_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
|
|
!IV_CFVO2_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
|
|
!IV_CFVO3_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
|
|
!IV_CFVO3_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
|
|
!IV_CFVO4_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
|
|
!IV_CFVO4_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
|
|
!IV_CFVO5_TYPE type ZEXCEL_CONDITIONAL_TYPE default C_CFVO_TYPE_PERCENT
|
|
!IV_CFVO5_VALUE type ZEXCEL_CONDITIONAL_VALUE optional
|
|
!IV_SHOWVALUE type ZEXCEL_CONDITIONAL_SHOW_VALUE default ZCL_EXCEL_STYLE_COND=>C_SHOWVALUE_TRUE
|
|
returning
|
|
value(EO_STYLE_COND) type ref to ZCL_EXCEL_STYLE_COND .
|
|
methods GET_GUID
|
|
returning
|
|
value(EP_GUID) type ZEXCEL_CELL_STYLE .
|
|
*"* protected components of class ZABAP_EXCEL_STYLE_FONT
|
|
*"* do not include other source files here!!!
|
|
*"* protected components of class ZABAP_EXCEL_STYLE_FONT
|
|
*"* do not include other source files here!!!
|
|
protected section.
|
|
private section.
|
|
|
|
data MV_RULE_RANGE type STRING .
|
|
data GUID type ZEXCEL_CELL_STYLE .
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZCL_EXCEL_STYLE_COND IMPLEMENTATION.
|
|
|
|
|
|
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.
|
|
|
|
DATA: ls_iconset TYPE zexcel_conditional_iconset.
|
|
ls_iconset-iconset = zcl_excel_style_cond=>c_iconset_3trafficlights.
|
|
ls_iconset-cfvo1_type = zcl_excel_style_cond=>c_cfvo_type_percent.
|
|
ls_iconset-cfvo1_value = '0'.
|
|
ls_iconset-cfvo2_type = zcl_excel_style_cond=>c_cfvo_type_percent.
|
|
ls_iconset-cfvo2_value = '20'.
|
|
ls_iconset-cfvo3_type = zcl_excel_style_cond=>c_cfvo_type_percent.
|
|
ls_iconset-cfvo3_value = '40'.
|
|
ls_iconset-cfvo4_type = zcl_excel_style_cond=>c_cfvo_type_percent.
|
|
ls_iconset-cfvo4_value = '60'.
|
|
ls_iconset-cfvo5_type = zcl_excel_style_cond=>c_cfvo_type_percent.
|
|
ls_iconset-cfvo5_value = '80'.
|
|
|
|
|
|
me->rule = zcl_excel_style_cond=>c_rule_none.
|
|
* me->iconset->operator = zcl_excel_style_conditional=>c_operator_none.
|
|
me->mode_iconset = ls_iconset.
|
|
me->priority = 1.
|
|
|
|
* inizialize dimension range
|
|
me->mv_rule_range = ip_dimension_range.
|
|
|
|
IF ip_guid IS NOT INITIAL.
|
|
me->guid = ip_guid.
|
|
ELSE.
|
|
me->guid = zcl_excel_obsolete_func_wrap=>guid_create( ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD FACTORY_COND_STYLE_ICONSET.
|
|
|
|
*--------------------------------------------------------------------*
|
|
* Work in progress
|
|
* Missing: LE or LT may be specified --> extend structure ZEXCEL_CONDITIONAL_ICONSET to hold this information as well
|
|
*--------------------------------------------------------------------*
|
|
|
|
* DATA: lv_needed_values TYPE i.
|
|
* CASE icon_type.
|
|
*
|
|
* WHEN 'C_ICONSET_3ARROWS'
|
|
* OR 'C_ICONSET_3ARROWSGRAY'
|
|
* OR 'C_ICONSET_3FLAGS'
|
|
* OR 'C_ICONSET_3SIGNS'
|
|
* OR 'C_ICONSET_3SYMBOLS'
|
|
* OR 'C_ICONSET_3SYMBOLS2'
|
|
* OR 'C_ICONSET_3TRAFFICLIGHTS'
|
|
* OR 'C_ICONSET_3TRAFFICLIGHTS2'.
|
|
* lv_needed_values = 3.
|
|
*
|
|
* WHEN 'C_ICONSET_4ARROWS'
|
|
* OR 'C_ICONSET_4ARROWSGRAY'
|
|
* OR 'C_ICONSET_4RATING'
|
|
* OR 'C_ICONSET_4REDTOBLACK'
|
|
* OR 'C_ICONSET_4TRAFFICLIGHTS'.
|
|
* lv_needed_values = 4.
|
|
*
|
|
* WHEN 'C_ICONSET_5ARROWS'
|
|
* OR 'C_ICONSET_5ARROWSGRAY'
|
|
* OR 'C_ICONSET_5QUARTERS'
|
|
* OR 'C_ICONSET_5RATING'.
|
|
* lv_needed_values = 5.
|
|
*
|
|
* WHEN OTHERS.
|
|
* RETURN.
|
|
* ENDCASE.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD GET_DIMENSION_RANGE.
|
|
|
|
ep_dimension_range = me->mv_rule_range.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD GET_GUID.
|
|
ep_guid = me->guid.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD SET_RANGE.
|
|
|
|
CLEAR: me->mv_rule_range.
|
|
|
|
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.
|
|
ENDCLASS.
|