abap2xlsx/src/zcl_excel_column.clas.abap
2018-10-19 07:24:31 +03:00

227 lines
4.9 KiB
ABAP

class ZCL_EXCEL_COLUMN definition
public
final
create public .
*"* public components of class ZCL_EXCEL_COLUMN
*"* do not include other source files here!!!
public section.
type-pools ABAP .
methods CONSTRUCTOR
importing
!IP_INDEX type ZEXCEL_CELL_COLUMN_ALPHA
!IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET
!IP_EXCEL type ref to ZCL_EXCEL .
methods GET_AUTO_SIZE
returning
value(R_AUTO_SIZE) type ABAP_BOOL .
methods GET_COLLAPSED
returning
value(R_COLLAPSED) type ABAP_BOOL .
methods GET_COLUMN_INDEX
returning
value(R_COLUMN_INDEX) type INT4 .
methods GET_OUTLINE_LEVEL
returning
value(R_OUTLINE_LEVEL) type INT4 .
methods GET_VISIBLE
returning
value(R_VISIBLE) type ABAP_BOOL .
methods GET_WIDTH
returning
value(R_WIDTH) type FLOAT .
methods GET_XF_INDEX
returning
value(R_XF_INDEX) type INT4 .
methods SET_AUTO_SIZE
importing
!IP_AUTO_SIZE type ABAP_BOOL
returning
value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN .
methods SET_COLLAPSED
importing
!IP_COLLAPSED type ABAP_BOOL
returning
value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN .
methods SET_COLUMN_INDEX
importing
!IP_INDEX type ZEXCEL_CELL_COLUMN_ALPHA
returning
value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN .
methods SET_OUTLINE_LEVEL
importing
!IP_OUTLINE_LEVEL type INT4 .
methods SET_VISIBLE
importing
!IP_VISIBLE type ABAP_BOOL
returning
value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN .
methods SET_WIDTH
importing
!IP_WIDTH type SIMPLE
returning
value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN
raising
ZCX_EXCEL .
methods SET_XF_INDEX
importing
!IP_XF_INDEX type INT4
returning
value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN .
methods SET_COLUMN_STYLE_BY_GUID
importing
!IP_STYLE_GUID type ZEXCEL_CELL_STYLE
raising
ZCX_EXCEL .
methods GET_COLUMN_STYLE_GUID
returning
value(EP_STYLE_GUID) type ZEXCEL_CELL_STYLE
raising
ZCX_EXCEL .
*"* protected components of class ZCL_EXCEL_COLUMN
*"* do not include other source files here!!!
protected section.
*"* private components of class ZCL_EXCEL_COLUMN
*"* do not include other source files here!!!
private section.
data COLUMN_INDEX type INT4 .
data WIDTH type FLOAT .
data AUTO_SIZE type ABAP_BOOL .
data VISIBLE type ABAP_BOOL .
data OUTLINE_LEVEL type INT4 .
data COLLAPSED type ABAP_BOOL .
data XF_INDEX type INT4 .
data STYLE_GUID type ZEXCEL_CELL_STYLE .
data EXCEL type ref to ZCL_EXCEL .
data WORKSHEET type ref to ZCL_EXCEL_WORKSHEET .
ENDCLASS.
CLASS ZCL_EXCEL_COLUMN IMPLEMENTATION.
method CONSTRUCTOR.
me->column_index = zcl_excel_common=>convert_column2int( ip_index ).
me->width = -1.
me->auto_size = abap_false.
me->visible = abap_true.
me->outline_level = 0.
me->collapsed = abap_false.
me->excel = ip_excel. "ins issue #157 - Allow Style for columns
me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns
" set default index to cellXf
me->xf_index = 0.
endmethod.
method GET_AUTO_SIZE.
r_auto_size = me->auto_size.
endmethod.
method GET_COLLAPSED.
r_Collapsed = me->Collapsed.
endmethod.
method GET_COLUMN_INDEX.
r_column_index = me->column_index.
endmethod.
method GET_COLUMN_STYLE_GUID.
IF me->style_guid IS NOT INITIAL.
ep_style_guid = me->style_guid.
ELSE.
ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ).
ENDIF.
endmethod.
method GET_OUTLINE_LEVEL.
r_outline_level = me->outline_level.
endmethod.
method GET_VISIBLE.
r_Visible = me->Visible.
endmethod.
method GET_WIDTH.
r_WIDTH = me->WIDTH.
endmethod.
method GET_XF_INDEX.
r_xf_index = me->xf_index.
endmethod.
METHOD set_auto_size.
me->auto_size = ip_auto_size.
io_column = me.
ENDMETHOD.
METHOD set_collapsed.
me->collapsed = ip_collapsed.
io_column = me.
ENDMETHOD.
METHOD set_column_index.
me->column_index = zcl_excel_common=>convert_column2int( ip_index ).
io_column = me.
ENDMETHOD.
method SET_COLUMN_STYLE_BY_GUID.
DATA: stylemapping TYPE zexcel_s_stylemapping.
IF me->excel IS NOT BOUND.
zcx_excel=>raise_text( 'Internal error - reference to ZCL_EXCEL not bound' ).
ENDIF.
TRY.
stylemapping = me->excel->get_style_to_guid( ip_style_guid ).
me->style_guid = stylemapping-guid.
CATCH zcx_excel .
EXIT. " leave as is in case of error
ENDTRY.
endmethod.
method SET_OUTLINE_LEVEL.
me->outline_level = ip_outline_level.
endmethod.
METHOD set_visible.
me->visible = ip_visible.
io_column = me.
ENDMETHOD.
METHOD set_width.
TRY.
me->width = ip_width.
io_column = me.
CATCH cx_sy_conversion_no_number.
zcx_excel=>raise_text( 'Unable to interpret width as number' ).
ENDTRY.
ENDMETHOD.
METHOD set_xf_index.
me->xf_index = ip_xf_index.
io_column = me.
ENDMETHOD.
ENDCLASS.