From cbcd9bab1317a4e3bdddbd8f976f1d960b66f49a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20P=C4=99giel?= Date: Tue, 6 Jan 2015 21:41:38 +0100 Subject: [PATCH 1/3] Writer + Demo Programs Gradient fill handling for writer + Demo programs 2 & 34. --- ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk | 291 ++-- ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk | 1588 ++++++++++++++-------- ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk | 837 +++++++----- ZA2X/PROG/ZDEMO_EXCEL2.slnk | 247 +++- ZA2X/PROG/ZDEMO_EXCEL34.slnk | 11 +- ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk | 38 +- ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk | 13 + ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk | 38 +- ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk | 13 + ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk | 12 +- 10 files changed, 2050 insertions(+), 1038 deletions(-) create mode 100644 ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk create mode 100644 ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk diff --git a/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk b/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk index 1128a99..656a7f4 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk @@ -1,50 +1,65 @@ - - class ZCL_EXCEL_STYLE_FILL definition + + *----------------------------------------------------------------------* +* CLASS ZCL_EXCEL_STYLE_FILL DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +class zcl_excel_style_fill definition public final create public . -public section. -*"* public components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! + public section. - constants C_FILL_NONE type ZEXCEL_FILL_TYPE value 'none'. "#EC NOTEXT - constants C_FILL_SOLID type ZEXCEL_FILL_TYPE value 'solid'. "#EC NOTEXT - constants C_FILL_GRADIENT_LINEAR type ZEXCEL_FILL_TYPE value 'linear'. "#EC NOTEXT - constants C_FILL_GRADIENT_PATH type ZEXCEL_FILL_TYPE value 'path'. "#EC NOTEXT - constants C_FILL_PATTERN_DARKDOWN type ZEXCEL_FILL_TYPE value 'darkDown'. "#EC NOTEXT - constants C_FILL_PATTERN_DARKGRAY type ZEXCEL_FILL_TYPE value 'darkGray'. "#EC NOTEXT - constants C_FILL_PATTERN_DARKGRID type ZEXCEL_FILL_TYPE value 'darkGrid'. "#EC NOTEXT - constants C_FILL_PATTERN_DARKHORIZONTAL type ZEXCEL_FILL_TYPE value 'darkHorizontal'. "#EC NOTEXT - constants C_FILL_PATTERN_DARKTRELLIS type ZEXCEL_FILL_TYPE value 'darkTrellis'. "#EC NOTEXT - constants C_FILL_PATTERN_DARKUP type ZEXCEL_FILL_TYPE value 'darkUp'. "#EC NOTEXT - constants C_FILL_PATTERN_DARKVERTICAL type ZEXCEL_FILL_TYPE value 'darkVertical'. "#EC NOTEXT - constants C_FILL_PATTERN_GRAY0625 type ZEXCEL_FILL_TYPE value 'gray0625'. "#EC NOTEXT - constants C_FILL_PATTERN_GRAY125 type ZEXCEL_FILL_TYPE value 'gray125'. "#EC NOTEXT - constants C_FILL_PATTERN_LIGHTDOWN type ZEXCEL_FILL_TYPE value 'lightDown'. "#EC NOTEXT - constants C_FILL_PATTERN_LIGHTGRAY type ZEXCEL_FILL_TYPE value 'lightGray'. "#EC NOTEXT - constants C_FILL_PATTERN_LIGHTGRID type ZEXCEL_FILL_TYPE value 'lightGrid'. "#EC NOTEXT - constants C_FILL_PATTERN_LIGHTHORIZONTAL type ZEXCEL_FILL_TYPE value 'lightHorizontal'. "#EC NOTEXT - constants C_FILL_PATTERN_LIGHTTRELLIS type ZEXCEL_FILL_TYPE value 'lightTrellis'. "#EC NOTEXT - constants C_FILL_PATTERN_LIGHTUP type ZEXCEL_FILL_TYPE value 'lightUp'. "#EC NOTEXT - constants C_FILL_PATTERN_LIGHTVERTICAL type ZEXCEL_FILL_TYPE value 'lightVertical'. "#EC NOTEXT - constants C_FILL_PATTERN_MEDIUMGRAY type ZEXCEL_FILL_TYPE value 'mediumGray'. "#EC NOTEXT - data FILLTYPE type ZEXCEL_FILL_TYPE . - data ROTATION type ZEXCEL_ROTATION . - data FGCOLOR type ZEXCEL_S_STYLE_COLOR . - data BGCOLOR type ZEXCEL_S_STYLE_COLOR . + constants c_fill_none type zexcel_fill_type value 'none'. "#EC NOTEXT + constants c_fill_solid type zexcel_fill_type value 'solid'. "#EC NOTEXT + constants c_fill_gradient_linear type zexcel_fill_type value 'linear'. "#EC NOTEXT + constants c_fill_gradient_path type zexcel_fill_type value 'path'. "#EC NOTEXT + constants c_fill_pattern_darkdown type zexcel_fill_type value 'darkDown'. "#EC NOTEXT + constants c_fill_pattern_darkgray type zexcel_fill_type value 'darkGray'. "#EC NOTEXT + constants c_fill_pattern_darkgrid type zexcel_fill_type value 'darkGrid'. "#EC NOTEXT + constants c_fill_pattern_darkhorizontal type zexcel_fill_type value 'darkHorizontal'. "#EC NOTEXT + constants c_fill_pattern_darktrellis type zexcel_fill_type value 'darkTrellis'. "#EC NOTEXT + constants c_fill_pattern_darkup type zexcel_fill_type value 'darkUp'. "#EC NOTEXT + constants c_fill_pattern_darkvertical type zexcel_fill_type value 'darkVertical'. "#EC NOTEXT + constants c_fill_pattern_gray0625 type zexcel_fill_type value 'gray0625'. "#EC NOTEXT + constants c_fill_pattern_gray125 type zexcel_fill_type value 'gray125'. "#EC NOTEXT + constants c_fill_pattern_lightdown type zexcel_fill_type value 'lightDown'. "#EC NOTEXT + constants c_fill_pattern_lightgray type zexcel_fill_type value 'lightGray'. "#EC NOTEXT + constants c_fill_pattern_lightgrid type zexcel_fill_type value 'lightGrid'. "#EC NOTEXT + constants c_fill_pattern_lighthorizontal type zexcel_fill_type value 'lightHorizontal'. "#EC NOTEXT + constants c_fill_pattern_lighttrellis type zexcel_fill_type value 'lightTrellis'. "#EC NOTEXT + constants c_fill_pattern_lightup type zexcel_fill_type value 'lightUp'. "#EC NOTEXT + constants c_fill_pattern_lightvertical type zexcel_fill_type value 'lightVertical'. "#EC NOTEXT + constants c_fill_pattern_mediumgray type zexcel_fill_type value 'mediumGray'. "#EC NOTEXT + constants c_fill_gradient_horizontal90 type zexcel_fill_type value 'horizontal90'. "#EC NOTEXT + constants c_fill_gradient_horizontal270 type zexcel_fill_type value 'horizontal270'. "#EC NOTEXT + constants c_fill_gradient_horizontalb type zexcel_fill_type value 'horizontalb'. "#EC NOTEXT + constants c_fill_gradient_vertical type zexcel_fill_type value 'vertical'. "#EC NOTEXT + constants c_fill_gradient_fromcenter type zexcel_fill_type value 'fromCenter'. "#EC NOTEXT + constants c_fill_gradient_diagonal45 type zexcel_fill_type value 'diagonal45'. "#EC NOTEXT + constants c_fill_gradient_diagonal45b type zexcel_fill_type value 'diagonal45b'. "#EC NOTEXT + constants c_fill_gradient_diagonal135 type zexcel_fill_type value 'diagonal135'. "#EC NOTEXT + constants c_fill_gradient_diagonal135b type zexcel_fill_type value 'diagonal135b'. "#EC NOTEXT + constants c_fill_gradient_cornerlt type zexcel_fill_type value 'cornerLT'. "#EC NOTEXT + constants c_fill_gradient_cornerlb type zexcel_fill_type value 'cornerLB'. "#EC NOTEXT + constants c_fill_gradient_cornerrt type zexcel_fill_type value 'cornerRT'. "#EC NOTEXT + constants c_fill_gradient_cornerrb type zexcel_fill_type value 'cornerRB'. "#EC NOTEXT + data gradtype type zexcel_s_gradient_type. + data filltype type zexcel_fill_type . + data rotation type zexcel_rotation . + data fgcolor type zexcel_s_style_color . + data bgcolor type zexcel_s_style_color . - methods CONSTRUCTOR . - methods GET_STRUCTURE - returning - value(ES_FILL) type ZEXCEL_S_STYLE_FILL . - *"* protected components of class ZABAP_EXCEL_STYLE_FONT -*"* do not include other source files here!!! -protected section. - *"* private components of class ZCL_EXCEL_STYLE_FILL -*"* do not include other source files here!!! -private section. + methods constructor . + methods get_structure + returning + value(es_fill) type zexcel_s_style_fill . + protected section. + private section. + methods build_gradient. + methods check_filltype_is_gradient returning value(rv_is_gradient) type abap_bool. *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes @@ -53,48 +68,160 @@ private section. *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - method CONSTRUCTOR. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. -endmethod. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + method build_gradient. + check check_filltype_is_gradient( ) eq abap_true. + case filltype. + when c_fill_gradient_horizontal90. + gradtype-degree = '90'. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + when c_fill_gradient_horizontal270. + gradtype-degree = '270'. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + when c_fill_gradient_horizontalb. + gradtype-degree = '90'. + gradtype-position1 = '0'. + gradtype-position2 = '0.5'. + gradtype-position3 = '1'. + when c_fill_gradient_vertical. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + when c_fill_gradient_fromcenter. + gradtype-type = c_fill_gradient_path. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + gradtype-bottom = '0.5'. + gradtype-top = '0.5'. + gradtype-left = '0.5'. + gradtype-right = '0.5'. + when c_fill_gradient_diagonal45. + gradtype-degree = '45'. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + when c_fill_gradient_diagonal45b. + gradtype-degree = '45'. + gradtype-position1 = '0'. + gradtype-position2 = '0.5'. + gradtype-position3 = '1'. + when c_fill_gradient_diagonal135. + gradtype-degree = '135'. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + when c_fill_gradient_diagonal135b. + gradtype-degree = '135'. + gradtype-position1 = '0'. + gradtype-position2 = '0.5'. + gradtype-position3 = '1'. + when c_fill_gradient_cornerlt. + gradtype-type = c_fill_gradient_path. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + when c_fill_gradient_cornerlb. + gradtype-type = c_fill_gradient_path. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + gradtype-bottom = '1'. + gradtype-top = '1'. + when c_fill_gradient_cornerrt. + gradtype-type = c_fill_gradient_path. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + gradtype-left = '1'. + gradtype-right = '1'. + when c_fill_gradient_cornerrb. + gradtype-type = c_fill_gradient_path. + gradtype-position1 = '0'. + gradtype-position2 = '1'. + gradtype-bottom = '0.5'. + gradtype-top = '0.5'. + gradtype-left = '0.5'. + gradtype-right = '0.5'. + endcase. + + endmethod. "build_gradient - - - method GET_STRUCTURE. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgColor = me->fgColor. - es_fill-bgColor = me->bgColor. -endmethod. + + + method check_filltype_is_gradient. + case filltype. + when c_fill_gradient_horizontal90 or + c_fill_gradient_horizontal270 or + c_fill_gradient_horizontalb or + c_fill_gradient_vertical or + c_fill_gradient_fromcenter or + c_fill_gradient_diagonal45 or + c_fill_gradient_diagonal45b or + c_fill_gradient_diagonal135 or + c_fill_gradient_diagonal135b or + c_fill_gradient_cornerlt or + c_fill_gradient_cornerlb or + c_fill_gradient_cornerrt or + c_fill_gradient_cornerrb. + rv_is_gradient = abap_true. + endcase. + endmethod. "check_filltype_is_gradient + + + method constructor. + filltype = zcl_excel_style_fill=>c_fill_none. + fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. + fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. + bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. + bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. + rotation = 0. + + endmethod. "CONSTRUCTOR + + + + method get_structure. + es_fill-rotation = me->rotation. + es_fill-filltype = me->filltype. + es_fill-fgcolor = me->fgcolor. + es_fill-bgcolor = me->bgcolor. + me->build_gradient( ). + es_fill-gradtype = me->gradtype. + endmethod. "GET_STRUCTURE diff --git a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk index 859990c..d9a3ce1 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk @@ -1,40 +1,515 @@ - - - + + + + + + + + + + class ZCL_EXCEL_WORKSHEET definition + public + final + create public . + +public section. + type-pools ABAP . + + interfaces ZIF_EXCEL_SHEET_PRINTSETTINGS . + interfaces ZIF_EXCEL_SHEET_PROPERTIES . + interfaces ZIF_EXCEL_SHEET_PROTECTION . + interfaces ZIF_EXCEL_SHEET_VBA_PROJECT . + + 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 + 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 . + data SHEET_CONTENT_MERGE type ZEXCEL_T_CELL_DATA_UNSORTED . + data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP . + data SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . " . + data SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . " . + data STYLES type ZEXCEL_T_SHEET_STYLE . + data TABCOLOR type ZEXCEL_S_TABCOLOR read-only . + + methods ADD_DRAWING + importing + !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . + methods ADD_NEW_CONDITIONAL_STYLE + returning + value(EO_CONDITIONAL_STYLE) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . + methods ADD_NEW_DATA_VALIDATION + returning + value(EO_DATA_VALIDATION) type ref to ZCL_EXCEL_DATA_VALIDATION . + methods ADD_NEW_RANGE + returning + value(EO_RANGE) type ref to ZCL_EXCEL_RANGE . + methods BIND_ALV + importing + !IO_ALV type ref to OBJECT + !IT_TABLE type STANDARD TABLE + !I_TOP type I default 1 + !I_LEFT type I default 1 + !TABLE_STYLE type ZEXCEL_TABLE_STYLE optional + raising + ZCX_EXCEL . + type-pools SLIS . + type-pools SOI . + methods BIND_ALV_OLE2 + importing + !I_DOCUMENT_URL type CHAR255 default SPACE + !I_XLS type C default SPACE + !I_SAVE_PATH type STRING + !IO_ALV type ref to CL_GUI_ALV_GRID + !IT_LISTHEADER type SLIS_T_LISTHEADER optional + !I_TOP type I default 1 + !I_LEFT type I default 1 + !I_COLUMNS_HEADER type C default 'X' + !I_COLUMNS_AUTOFIT type C default 'X' + !I_FORMAT_COL_HEADER type SOI_FORMAT_ITEM optional + !I_FORMAT_SUBTOTAL type SOI_FORMAT_ITEM optional + !I_FORMAT_TOTAL type SOI_FORMAT_ITEM optional + exceptions + MISS_GUIDE + EX_TRANSFER_KKBLO_ERROR + FATAL_ERROR + INV_DATA_RANGE + DIM_MISMATCH_VKEY + DIM_MISMATCH_SEMA + ERROR_IN_SEMA . + methods BIND_TABLE + importing + !IP_TABLE type STANDARD TABLE + !IT_FIELD_CATALOG type ZEXCEL_T_FIELDCATALOG optional + !IS_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS optional + exporting + !ES_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS + raising + ZCX_EXCEL . + methods CALCULATE_COLUMN_WIDTHS + raising + ZCX_EXCEL . + methods CHANGE_CELL_STYLE + importing + !IP_COLUMN type SIMPLE + !IP_ROW type ZEXCEL_CELL_ROW + !IP_COMPLETE type ZEXCEL_S_CSTYLE_COMPLETE optional + !IP_XCOMPLETE type ZEXCEL_S_CSTYLEX_COMPLETE optional + !IP_FONT type ZEXCEL_S_CSTYLE_FONT optional + !IP_XFONT type ZEXCEL_S_CSTYLEX_FONT optional + !IP_FILL type ZEXCEL_S_CSTYLE_FILL optional + !IP_XFILL type ZEXCEL_S_CSTYLEX_FILL optional + !IP_BORDERS type ZEXCEL_S_CSTYLE_BORDERS optional + !IP_XBORDERS type ZEXCEL_S_CSTYLEX_BORDERS optional + !IP_ALIGNMENT type ZEXCEL_S_CSTYLE_ALIGNMENT optional + !IP_XALIGNMENT type ZEXCEL_S_CSTYLEX_ALIGNMENT optional + !IP_NUMBER_FORMAT_FORMAT_CODE type ZEXCEL_NUMBER_FORMAT optional + !IP_PROTECTION type ZEXCEL_S_CSTYLE_PROTECTION optional + !IP_XPROTECTION type ZEXCEL_S_CSTYLEX_PROTECTION optional + !IP_FONT_BOLD type FLAG optional + !IP_FONT_COLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_FONT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_FONT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_FONT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_FONT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_FONT_FAMILY type ZEXCEL_STYLE_FONT_FAMILY optional + !IP_FONT_ITALIC type FLAG optional + !IP_FONT_NAME type ZEXCEL_STYLE_FONT_NAME optional + !IP_FONT_SCHEME type ZEXCEL_STYLE_FONT_SCHEME optional + !IP_FONT_SIZE type ZEXCEL_STYLE_FONT_SIZE optional + !IP_FONT_STRIKETHROUGH type FLAG optional + !IP_FONT_UNDERLINE type FLAG optional + !IP_FONT_UNDERLINE_MODE type ZEXCEL_STYLE_FONT_UNDERLINE optional + !IP_FILL_FILLTYPE type ZEXCEL_FILL_TYPE optional + !IP_FILL_ROTATION type ZEXCEL_ROTATION optional + !IP_FILL_FGCOLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_FILL_FGCOLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_FILL_FGCOLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_FILL_FGCOLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_FILL_FGCOLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_FILL_BGCOLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_FILL_BGCOLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_FILL_BGCOLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_FILL_BGCOLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_FILL_BGCOLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_fill_gradtype_type type zexcel_s_gradient_type-type optional + !IP_fill_gradtype_degree type zexcel_s_gradient_type-degree optional + !IP_fill_gradtype_bottom type zexcel_s_gradient_type-bottom optional + !IP_fill_gradtype_top type zexcel_s_gradient_type-top optional + !IP_fill_gradtype_right type zexcel_s_gradient_type-right optional + !IP_fill_gradtype_left type zexcel_s_gradient_type-left optional + !IP_fill_gradtype_position1 type zexcel_s_gradient_type-position1 optional + !IP_fill_gradtype_position2 type zexcel_s_gradient_type-position2 optional + !IP_fill_gradtype_position3 type zexcel_s_gradient_type-position3 optional + !IP_BORDERS_ALLBORDERS type ZEXCEL_S_CSTYLE_BORDER optional + !IP_XBORDERS_ALLBORDERS type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_DIAGONAL type ZEXCEL_S_CSTYLE_BORDER optional + !IP_XBORDERS_DIAGONAL type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_DIAGONAL_MODE type ZEXCEL_DIAGONAL optional + !IP_BORDERS_DOWN type ZEXCEL_S_CSTYLE_BORDER optional + !IP_XBORDERS_DOWN type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_LEFT type ZEXCEL_S_CSTYLE_BORDER optional + !IP_XBORDERS_LEFT type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_RIGHT type ZEXCEL_S_CSTYLE_BORDER optional + !IP_XBORDERS_RIGHT type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_TOP type ZEXCEL_S_CSTYLE_BORDER optional + !IP_XBORDERS_TOP type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_ALIGNMENT_HORIZONTAL type ZEXCEL_ALIGNMENT optional + !IP_ALIGNMENT_VERTICAL type ZEXCEL_ALIGNMENT optional + !IP_ALIGNMENT_TEXTROTATION type ZEXCEL_TEXT_ROTATION optional + !IP_ALIGNMENT_WRAPTEXT type FLAG optional + !IP_ALIGNMENT_SHRINKTOFIT type FLAG optional + !IP_ALIGNMENT_INDENT type ZEXCEL_INDENT optional + !IP_PROTECTION_HIDDEN type ZEXCEL_CELL_PROTECTION optional + !IP_PROTECTION_LOCKED type ZEXCEL_CELL_PROTECTION optional + !IP_BORDERS_ALLBORDERS_STYLE type ZEXCEL_BORDER optional + !IP_BORDERS_ALLBORDERS_COLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_BORDERS_ALLBO_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_BORDERS_ALLBO_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_BORDERS_ALLBO_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_BORDERS_ALLBO_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_BORDERS_DIAGONAL_STYLE type ZEXCEL_BORDER optional + !IP_BORDERS_DIAGONAL_COLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_BORDERS_DIAGONAL_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_BORDERS_DIAGONAL_COLOR_INDE type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_BORDERS_DIAGONAL_COLOR_THEM type ZEXCEL_STYLE_COLOR_THEME optional + !IP_BORDERS_DIAGONAL_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_BORDERS_DOWN_STYLE type ZEXCEL_BORDER optional + !IP_BORDERS_DOWN_COLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_BORDERS_DOWN_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_BORDERS_DOWN_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_BORDERS_DOWN_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_BORDERS_DOWN_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_BORDERS_LEFT_STYLE type ZEXCEL_BORDER optional + !IP_BORDERS_LEFT_COLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_BORDERS_LEFT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_BORDERS_LEFT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_BORDERS_LEFT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_BORDERS_LEFT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_BORDERS_RIGHT_STYLE type ZEXCEL_BORDER optional + !IP_BORDERS_RIGHT_COLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_BORDERS_RIGHT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_BORDERS_RIGHT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_BORDERS_RIGHT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_BORDERS_RIGHT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + !IP_BORDERS_TOP_STYLE type ZEXCEL_BORDER optional + !IP_BORDERS_TOP_COLOR type ZEXCEL_S_STYLE_COLOR optional + !IP_BORDERS_TOP_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional + !IP_BORDERS_TOP_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional + !IP_BORDERS_TOP_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional + !IP_BORDERS_TOP_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional + returning + value(EP_GUID) type ZEXCEL_CELL_STYLE + raising + ZCX_EXCEL . + methods CONSTRUCTOR + importing + !IP_EXCEL type ref to ZCL_EXCEL + !IP_TITLE type ZEXCEL_SHEET_TITLE optional + raising + ZCX_EXCEL . + methods DELETE_MERGE . + methods FREEZE_PANES + importing + !IP_NUM_COLUMNS type I optional + !IP_NUM_ROWS type I optional + raising + ZCX_EXCEL . + methods GET_ACTIVE_CELL + returning + value(EP_ACTIVE_CELL) type STRING + raising + ZCX_EXCEL . + methods GET_CELL + importing + !IP_COLUMN type SIMPLE + !IP_ROW type ZEXCEL_CELL_ROW + exporting + !EP_VALUE type ZEXCEL_CELL_VALUE + !EP_RC type SYSUBRC + !EP_STYLE type ref to ZCL_EXCEL_STYLE + !EP_GUID type ZEXCEL_CELL_STYLE + raising + ZCX_EXCEL . + methods GET_COLUMN_DIMENSION + importing + !IP_COLUMN type SIMPLE + returning + value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME + raising + ZCX_EXCEL . + methods GET_COLUMN_DIMENSIONS + returning + value(R_COLUMN_DIMENSION) type ZEXCEL_T_WORKSHEET_COLUMNDIME . + methods GET_COND_STYLES_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_DATA_VALIDATIONS_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_DATA_VALIDATIONS_SIZE + returning + value(EP_SIZE) type I . + methods GET_DEFAULT_COLUMN_DIMENSION + returning + value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME . + methods GET_DEFAULT_EXCEL_DATE_FORMAT + returning + value(EP_DEFAULT_EXCEL_DATE_FORMAT) type ZEXCEL_NUMBER_FORMAT . + methods GET_DEFAULT_EXCEL_TIME_FORMAT + returning + value(EP_DEFAULT_EXCEL_TIME_FORMAT) type ZEXCEL_NUMBER_FORMAT . + methods GET_DEFAULT_ROW_DIMENSION + returning + value(R_ROW_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . + methods GET_DIMENSION_RANGE + returning + value(EP_DIMENSION_RANGE) type STRING + raising + ZCX_EXCEL . + methods GET_DRAWINGS + importing + !IP_TYPE type ZEXCEL_DRAWING_TYPE optional + returning + value(R_DRAWINGS) type ref to ZCL_EXCEL_DRAWINGS . + methods GET_DRAWINGS_ITERATOR + importing + !IP_TYPE type ZEXCEL_DRAWING_TYPE + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_FREEZE_CELL + exporting + !EP_ROW type ZEXCEL_CELL_ROW + !EP_COLUMN type ZEXCEL_CELL_COLUMN . + methods GET_GUID + returning + value(EP_GUID) type UUID . + methods GET_HIGHEST_COLUMN + returning + value(R_HIGHEST_COLUMN) type ZEXCEL_CELL_COLUMN + raising + ZCX_EXCEL . + methods GET_HIGHEST_ROW + returning + value(R_HIGHEST_ROW) type INT4 + raising + ZCX_EXCEL . + methods GET_HYPERLINKS_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_HYPERLINKS_SIZE + returning + value(EP_SIZE) type I . + methods GET_MERGE + returning + value(MERGE_RANGE) type STRING_TABLE + raising + ZCX_EXCEL . + methods GET_RANGES_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_ROW_DIMENSION + importing + !IP_ROW type INT4 + returning + value(R_ROW_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . + methods GET_ROW_DIMENSIONS + returning + value(R_ROW_DIMENSION) type ZEXCEL_T_WORKSHEET_ROWDIMENSIO . + methods GET_TABCOLOR + returning + value(EV_TABCOLOR) type ZEXCEL_S_TABCOLOR . + methods GET_TABLES_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_TABLES_SIZE + returning + value(EP_SIZE) type I . + methods GET_TITLE + importing + !IP_ESCAPED type FLAG default '' + returning + value(EP_TITLE) type ZEXCEL_SHEET_TITLE . + methods SET_CELL + importing + !IP_COLUMN type SIMPLE + !IP_ROW type ZEXCEL_CELL_ROW + !IP_VALUE type SIMPLE optional + !IP_FORMULA type ZEXCEL_CELL_FORMULA optional + !IP_STYLE type ZEXCEL_CELL_STYLE optional + !IP_HYPERLINK type ref to ZCL_EXCEL_HYPERLINK optional + !IP_DATA_TYPE type ZEXCEL_CELL_DATA_TYPE optional + !IP_ABAP_TYPE type ABAP_TYPEKIND optional + raising + ZCX_EXCEL . + methods SET_CELL_FORMULA + importing + !IP_COLUMN type SIMPLE + !IP_ROW type ZEXCEL_CELL_ROW + !IP_FORMULA type ZEXCEL_CELL_FORMULA + raising + ZCX_EXCEL . + methods SET_CELL_STYLE + importing + !IP_COLUMN type SIMPLE + !IP_ROW type ZEXCEL_CELL_ROW + !IP_STYLE type ZEXCEL_CELL_STYLE + raising + ZCX_EXCEL . + methods SET_COLUMN_WIDTH + importing + !IP_COLUMN type SIMPLE + !IP_WIDTH_FIX type SIMPLE default 0 + !IP_WIDTH_AUTOSIZE type FLAG default 'X' + raising + ZCX_EXCEL . + methods SET_DEFAULT_EXCEL_DATE_FORMAT + importing + !IP_DEFAULT_EXCEL_DATE_FORMAT type ZEXCEL_NUMBER_FORMAT + raising + ZCX_EXCEL . + methods SET_MERGE + importing + !IP_COLUMN_START type ZEXCEL_CELL_COLUMN_ALPHA optional + !IP_COLUMN_END type ZEXCEL_CELL_COLUMN_ALPHA optional + !IP_ROW type ZEXCEL_CELL_ROW optional + !IP_ROW_TO type ZEXCEL_CELL_ROW optional + raising + ZCX_EXCEL . + methods SET_PRINT_GRIDLINES + importing + !I_PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES . + methods SET_ROW_HEIGHT + importing + !IP_ROW type SIMPLE + !IP_HEIGHT_FIX type SIMPLE + raising + ZCX_EXCEL . + methods SET_SHOW_GRIDLINES + importing + !I_SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES . + methods SET_SHOW_ROWCOLHEADERS + importing + !I_SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_ROWCOLHEADER . + methods SET_TABCOLOR + importing + !IV_TABCOLOR type ZEXCEL_S_TABCOLOR . + methods SET_TABLE + importing + !IP_TABLE type STANDARD TABLE + !IP_HDR_STYLE type ZEXCEL_CELL_STYLE optional + !IP_BODY_STYLE type ZEXCEL_CELL_STYLE optional + !IP_TABLE_TITLE type STRING + !IP_TOP_LEFT_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA default 'B' + !IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3 + !IP_TRANSPOSE type XFELD optional + !IP_NO_HEADER type XFELD optional + raising + ZCX_EXCEL . + methods SET_TITLE + importing + !IP_TITLE type ZEXCEL_SHEET_TITLE + raising + ZCX_EXCEL . + methods IS_CELL_MERGED + importing + !IP_COLUMN type SIMPLE + !IP_ROW type ZEXCEL_CELL_ROW + returning + value(RP_IS_MERGED) type ABAP_BOOL + raising + ZCX_EXCEL . + 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 -"/> - - - - - - - - - - + WITH UNIQUE KEY font_name font_height flag_bold flag_italic . + + data ACTIVE_CELL type ZEXCEL_S_CELL_DATA . + class-data MTH_FONT_CACHE type MTY_TH_FONT_CACHE . + data CHARTS type ref to ZCL_EXCEL_DRAWINGS . + data COLUMN_DIMENSIONS type ZEXCEL_T_WORKSHEET_COLUMNDIME . + data CONDITIONAL_STYLES type ref to ZCL_EXCEL_STYLES_CONDITIONAL . + data DATA_VALIDATIONS type ref to ZCL_EXCEL_DATA_VALIDATIONS . + data DEFAULT_COLUMN_DIMENSION type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME . + data DEFAULT_EXCEL_DATE_FORMAT type ZEXCEL_NUMBER_FORMAT . + data DEFAULT_EXCEL_TIME_FORMAT type ZEXCEL_NUMBER_FORMAT . + data DEFAULT_ROW_DIMENSION type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . + data DRAWINGS type ref to ZCL_EXCEL_DRAWINGS . + data FREEZE_PANE_CELL_COLUMN type ZEXCEL_CELL_COLUMN . + data FREEZE_PANE_CELL_ROW type ZEXCEL_CELL_ROW . + data GUID type UUID . + data HYPERLINKS type ref to CL_OBJECT_COLLECTION . + data LOWER_CELL type ZEXCEL_S_CELL_DATA . + data RANGES type ref to ZCL_EXCEL_RANGES . + data ROW_DIMENSIONS type ZEXCEL_T_WORKSHEET_ROWDIMENSIO . + data TABLES type ref to CL_OBJECT_COLLECTION . + data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . " . + data UPPER_CELL type ZEXCEL_S_CELL_DATA . + data PRINT_TITLE_COL_FROM type ZEXCEL_CELL_COLUMN_ALPHA . + data PRINT_TITLE_COL_TO type ZEXCEL_CELL_COLUMN_ALPHA . + data PRINT_TITLE_ROW_FROM type ZEXCEL_CELL_ROW . + data PRINT_TITLE_ROW_TO type ZEXCEL_CELL_ROW . + + methods CALCULATE_CELL_WIDTH + importing + !IP_COLUMN type SIMPLE + !IP_ROW type ZEXCEL_CELL_ROW + returning + value(EP_WIDTH) type FLOAT + raising + ZCX_EXCEL . + methods GENERATE_TITLE + returning + value(EP_TITLE) type ZEXCEL_SHEET_TITLE . + methods GET_VALUE_TYPE + importing + !IP_VALUE type SIMPLE + exporting + !EP_VALUE type SIMPLE + !EP_VALUE_TYPE type ABAP_TYPEKIND . + methods UPDATE_DIMENSION_RANGE + raising + ZCX_EXCEL . + methods PRINT_TITLE_SET_RANGE . *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes @@ -189,66 +664,49 @@ CLASS lcl_gui_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid. ENDCLASS. "lcl_gui_alv_grid DEFINITION *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - - - - - - - - ABAP SLIS SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. @@ -265,7 +723,8 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION me->print_title_set_range( ). - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. @@ -283,25 +742,28 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION me->print_title_set_range( ). - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. ev_columns_from = me->print_title_col_from. ev_columns_to = me->print_title_col_to. - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. ev_rows_from = me->print_title_row_from. ev_rows_to = me->print_title_row_to. - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_COLUMNS. *--------------------------------------------------------------------* * issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 +* - Stefan Schmöcker, 2012-12-02 *--------------------------------------------------------------------* DATA: lv_col_from_int TYPE i, @@ -344,13 +806,14 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION *--------------------------------------------------------------------* me->print_title_set_range( ). - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_ROWS. *--------------------------------------------------------------------* * issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 +* - Stefan Schmöcker, 2012-12-02 *--------------------------------------------------------------------* DATA: lv_errormessage TYPE string. @@ -390,7 +853,8 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION me->print_title_set_range( ). - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PROPERTIES~GET_STYLE. @@ -399,7 +863,8 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION ELSE. ep_style = me->excel->get_default_style( ). ENDIF. - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. @@ -413,12 +878,14 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_normal = 100. ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_pagelayoutview = 100 . ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_sheetlayoutview = 100 . - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. zif_excel_sheet_properties~style = ip_style. - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. @@ -444,20 +911,23 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. me->zif_excel_sheet_vba_project~codename = ip_codename. - endmethod. + +endmethod. method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - endmethod. + +endmethod. - - + + method ADD_DRAWING. CASE ip_drawing->get_type( ). WHEN zcl_excel_drawing=>type_image. @@ -465,39 +935,43 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION WHEN zcl_excel_drawing=>type_chart. charts->include( ip_drawing ). ENDCASE. - endmethod. + +endmethod. - - + + method ADD_NEW_CONDITIONAL_STYLE. CREATE OBJECT eo_conditional_style. conditional_styles->add( eo_conditional_style ). - endmethod. + +endmethod. - - + + method ADD_NEW_DATA_VALIDATION. CREATE OBJECT eo_data_validation. data_validations->add( eo_data_validation ). - endmethod. + +endmethod. - - + + method ADD_NEW_RANGE. * Create default blank range CREATE OBJECT eo_range. ranges->add( eo_range ). - endmethod. + +endmethod. - - - - - - - + + + + + + + method BIND_ALV. data: lo_converter type ref to zcl_excel_converter. @@ -518,28 +992,29 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION catch zcx_excel . endtry. - endmethod. + +endmethod. - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + method BIND_ALV_OLE2. *--------------------------------------------------------------------* * Method description: @@ -2095,7 +2570,7 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION search contentsitem-value for 'E'. if sy-fdpos eq 0. -* use prefix notation for signed numbers +* bring negative sign to front of amount translate contentsitem-value using '- '. condense contentsitem-value no-gaps. @@ -2109,8 +2584,8 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION set country space. * Hier wird nur die korrekte Kommaseparatierung gemacht, wenn die * Zeichen einer -* Zahl enthalten sind. Das ist für Timestamps, die auch ":" enthalten. -* Für die +* Zahl enthalten sind. Das ist f#ƒÂ#r Timestamps, die auch ":" enthalten. +* F#ƒÂ#r die * darf keine Kommaseparierung stattfinden. * Changing for correction request - Y6BK041073 if contentsitem-value co '0123456789.,-+E '. @@ -2607,18 +3082,19 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION li_document_size. close_document. - endmethod. + +endmethod. - - - - - - + + + + + + method BIND_TABLE. *--------------------------------------------------------------------* * issue #230 - Pimp my Code -* - Stefan Schmöcker, (wi p) 2012-12-01 +* - Stefan Schmöcker, (wi p) 2012-12-01 * - ... * aligning code * message made to support multilinguality @@ -2875,14 +3351,16 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION ENDIF. " << Issue #291 - endmethod. + +endmethod. - - - - - - *--------------------------------------------------------------------* + + + + + + method CALCULATE_CELL_WIDTH. +*--------------------------------------------------------------------* * issue #293 - Roberto Bianco * - Christian Assig 2014-03-14 * @@ -2892,7 +3370,6 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION * - Add additional width for auto filter buttons * - Add cell padding to simulate Excel behavior *--------------------------------------------------------------------* -METHOD calculate_cell_width. CONSTANTS: lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT @@ -3129,10 +3606,10 @@ METHOD calculate_cell_width. ADD 2 TO ep_width. ENDIF. -ENDMETHOD. +endmethod. - - + + method CALCULATE_COLUMN_WIDTHS. TYPES: BEGIN OF t_auto_size, @@ -3191,7 +3668,7 @@ ENDMETHOD. * ). * " For an easy start we just take the number of characters as the width * width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker +* " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker * " Calculate width using Font Size and Font Type * IF cell_style IS BOUND * AND cell_style->font IS BOUND. @@ -3213,110 +3690,120 @@ ENDMETHOD. ENDLOOP. ENDIF. - endmethod. + +endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - METHOD change_cell_style. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + method CHANGE_CELL_STYLE. " issue # 139 DATA: stylemapping TYPE zexcel_s_stylemapping, @@ -3550,6 +4037,18 @@ ENDMETHOD. fill_bgcolor_theme fill-bgcolor-theme, fill_bgcolor_tint fill-bgcolor-tint, + fill_gradtype_type fill-gradtype-TYPE, + fill_gradtype_degree fill-gradtype-DEGREE, + fill_gradtype_bottom fill-gradtype-BOTTOM, + fill_gradtype_left fill-gradtype-LEFT, + fill_gradtype_top fill-gradtype-TOP, + fill_gradtype_right fill-gradtype-RIGHT, + fill_gradtype_position1 fill-gradtype-POSITION1, + fill_gradtype_position2 fill-gradtype-POSITION2, + fill_gradtype_position3 fill-gradtype-POSITION3, + + + borders_diagonal_mode borders-diagonal_mode, alignment_horizontal alignment-horizontal, alignment_vertical alignment-vertical, @@ -3612,12 +4111,12 @@ ENDMETHOD. ip_row = ip_row ip_style = ep_guid ). -ENDMETHOD. +endmethod. - - - - + + + + method CONSTRUCTOR. DATA: lv_title TYPE zexcel_sheet_title. @@ -3661,36 +4160,22 @@ ENDMETHOD. upper_cell-cell_row = 1. upper_cell-cell_column = 1. - endmethod. + +endmethod. - + method DELETE_MERGE. DELETE sheet_content_merge INDEX 1. DELETE sheet_content_merge INDEX 1. - endmethod. - - - - - - METHOD delete_row_outline. - DELETE me->mt_row_outlines WHERE row_from = iv_row_from - AND row_to = iv_row_to. - IF sy-subrc <> 0. " didn't find outline that was to be deleted - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Row outline to be deleted does not exist'. - ENDIF. - -ENDMETHOD. +endmethod. - - - - + + + + method FREEZE_PANES. data: lv_xsplit type i, lv_ysplit type i. @@ -3715,10 +4200,11 @@ ENDMETHOD. freeze_pane_cell_column = ip_num_columns + 1. freeze_pane_cell_row = ip_num_rows + 1. - endmethod. + +endmethod. - - + + method GENERATE_TITLE. DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, @@ -3750,11 +4236,12 @@ ENDMETHOD. ADD 1 TO sheetnumber. ENDDO. - endmethod. + +endmethod. - - - + + + method GET_ACTIVE_CELL. DATA: lv_active_column TYPE zexcel_cell_column_alpha, @@ -3766,16 +4253,17 @@ ENDMETHOD. SHIFT lv_active_row LEFT DELETING LEADING space. CONCATENATE lv_active_column lv_active_row INTO ep_active_cell. - endmethod. + +endmethod. - - - - - - - - + + + + + + + + method GET_CELL. DATA: lv_column TYPE zexcel_cell_column, @@ -3792,7 +4280,7 @@ ENDMETHOD. ep_value = ls_sheet_content-cell_value. ep_guid = ls_sheet_content-cell_style. " issue 139 - added this to be used for columnwidth calculation - " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker + " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker DATA: style_iterator TYPE REF TO cl_object_collection_iterator, style TYPE REF TO zcl_excel_style. IF ep_style IS REQUESTED. @@ -3805,12 +4293,13 @@ ENDMETHOD. ENDIF. ENDWHILE. ENDIF. - endmethod. + +endmethod. - - - - + + + + method GET_COLUMN_DIMENSION. FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column @@ -3832,36 +4321,41 @@ ENDMETHOD. r_column_dimension = <fs_column_dimension>-column_dimension. ENDIF. - endmethod. + +endmethod. - - + + method GET_COLUMN_DIMENSIONS. r_column_dimension[] = me->column_dimensions[]. - endmethod. + +endmethod. - - + + method GET_COND_STYLES_ITERATOR. eo_iterator = me->conditional_styles->get_iterator( ). - endmethod. + +endmethod. - - + + method GET_DATA_VALIDATIONS_ITERATOR. eo_iterator = me->data_validations->get_iterator( ). - endmethod. + +endmethod. - - + + method GET_DATA_VALIDATIONS_SIZE. ep_size = me->data_validations->size( ). - endmethod. + +endmethod. - - + + method GET_DEFAULT_COLUMN_DIMENSION. IF me->default_column_dimension IS NOT BOUND. CREATE OBJECT me->default_column_dimension @@ -3872,10 +4366,11 @@ ENDMETHOD. ENDIF. r_column_dimension = me->default_column_dimension. - endmethod. + +endmethod. - - + + method GET_DEFAULT_EXCEL_DATE_FORMAT. CONSTANTS: c_lang_e TYPE lang VALUE 'E'. @@ -3898,10 +4393,11 @@ ENDMETHOD. ENDIF. ep_default_excel_date_format = default_excel_date_format. - endmethod. + +endmethod. - - + + method GET_DEFAULT_EXCEL_TIME_FORMAT. DATA: l_timefm TYPE xutimefm. @@ -3934,21 +4430,23 @@ ENDMETHOD. ENDCASE. ep_default_excel_time_format = default_excel_time_format. - endmethod. + +endmethod. - - + + method GET_DEFAULT_ROW_DIMENSION. IF me->default_row_dimension IS NOT BOUND. CREATE OBJECT me->default_row_dimension. ENDIF. r_row_dimension = me->default_row_dimension. - endmethod. + +endmethod. - - - + + + method GET_DIMENSION_RANGE. me->update_dimension_range( ). @@ -3964,11 +4462,12 @@ ENDMETHOD. CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. ENDIF. - endmethod. + +endmethod. - - - + + + method GET_DRAWINGS. DATA: lo_drawing TYPE REF TO zcl_excel_drawing, @@ -3996,11 +4495,12 @@ ENDMETHOD. ENDWHILE. WHEN OTHERS. ENDCASE. - endmethod. + +endmethod. - - - + + + method GET_DRAWINGS_ITERATOR. CASE ip_type. WHEN zcl_excel_drawing=>type_image. @@ -4008,55 +4508,62 @@ ENDMETHOD. WHEN zcl_excel_drawing=>type_chart. eo_iterator = charts->get_iterator( ). ENDCASE. - endmethod. + +endmethod. - - - + + + method GET_FREEZE_CELL. ep_row = me->freeze_pane_cell_row. ep_column = me->freeze_pane_cell_column. - endmethod. + +endmethod. - - - METHOD get_guid. + + + method GET_GUID. ep_guid = me->guid. -ENDMETHOD. + +endmethod. - - - + + + method GET_HIGHEST_COLUMN. me->update_dimension_range( ). r_highest_column = me->lower_cell-cell_column. - endmethod. + +endmethod. - - - - METHOD get_highest_row. + + + + method GET_HIGHEST_ROW. me->update_dimension_range( ). r_highest_row = me->lower_cell-cell_row. -ENDMETHOD. + +endmethod. - - + + method GET_HYPERLINKS_ITERATOR. eo_iterator = hyperlinks->get_iterator( ). - endmethod. + +endmethod. - - + + method GET_HYPERLINKS_SIZE. ep_size = hyperlinks->size( ). - endmethod. + +endmethod. - - - + + + method GET_MERGE. DATA: lv_column_start TYPE string, @@ -4128,78 +4635,72 @@ ENDMETHOD. * SEPARATED BY ':'. * ENDIF. - endmethod. + +endmethod. - - + + method GET_RANGES_ITERATOR. eo_iterator = me->ranges->get_iterator( ). - endmethod. + +endmethod. - - - - METHOD GET_ROW_DIMENSION. + + + + method GET_ROW_DIMENSION. + FIELD-SYMBOLS: <fs_row_dimension> LIKE LINE OF row_dimensions. - FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF me->row_dimensions. + READ TABLE me->row_dimensions ASSIGNING <fs_row_dimension> + WITH KEY row = ip_row. - DATA: ls_row_dimension LIKE LINE OF me->row_dimensions. - - READ TABLE me->row_dimensions ASSIGNING <ls_row_dimension> - WITH TABLE KEY row = ip_row. - - IF NOT <ls_row_dimension> IS ASSIGNED. + IF NOT <fs_row_dimension> IS ASSIGNED. CREATE OBJECT r_row_dimension EXPORTING ip_index = ip_row. - ls_row_dimension-row = ip_row. - ls_row_dimension-row_dimension = r_row_dimension. - INSERT ls_row_dimension INTO TABLE me->row_dimensions. + APPEND INITIAL LINE TO me->row_dimensions ASSIGNING <fs_row_dimension>. + <fs_row_dimension>-row = ip_row. + <fs_row_dimension>-row_dimension = r_row_dimension. ELSE. - r_row_dimension = <ls_row_dimension>-row_dimension. + r_row_dimension = <fs_row_dimension>-row_dimension. ENDIF. -ENDMETHOD. - - - - METHOD get_row_dimensions. +endmethod. + + + + method GET_ROW_DIMENSIONS. r_row_dimension[] = me->row_dimensions[]. -ENDMETHOD. +endmethod. - - - METHOD get_row_outlines. - - rt_row_outlines = me->mt_row_outlines. - -ENDMETHOD. - - - + + method GET_TABCOLOR. ev_tabcolor = me->tabcolor. - endmethod. + +endmethod. - - + + method GET_TABLES_ITERATOR. eo_iterator = tables->if_object_collection~get_iterator( ). - endmethod. + +endmethod. - - + + method GET_TABLES_SIZE. ep_size = tables->if_object_collection~size( ). - endmethod. + +endmethod. - - - + + + method GET_TITLE. DATA lv_value TYPE string. IF ip_escaped EQ abap_true. @@ -4208,12 +4709,13 @@ ENDMETHOD. ELSE. ep_title = me->title. ENDIF. - endmethod. + +endmethod. - - - - + + + + method GET_VALUE_TYPE. DATA: lo_addit TYPE REF TO cl_abap_elemdescr, ls_dfies TYPE dfies, @@ -4265,13 +4767,14 @@ ENDMETHOD. ENDIF. ENDIF. - endmethod. + +endmethod. - - - - - + + + + + method IS_CELL_MERGED. DATA lt_merge_range TYPE string_table. @@ -4291,11 +4794,11 @@ ENDMETHOD. ENDLOOP. endmethod. - + method PRINT_TITLE_SET_RANGE. *--------------------------------------------------------------------* * issue#235 - repeat rows/columns -* - Stefan Schmoecker, 2012-12-02 +* - Stefan Schmöcker, 2012-12-02 *--------------------------------------------------------------------* @@ -4388,18 +4891,19 @@ endmethod. - endmethod. + +endmethod. - - - - - - - - - - + + + + + + + + + + method SET_CELL. DATA: lv_column TYPE zexcel_cell_column, @@ -4430,7 +4934,7 @@ endmethod. * Begin of change issue #152 - don't touch exisiting style if only value is passed * lv_style_guid = ip_style. lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 + READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 cell_column = lv_column. IF sy-subrc = 0. IF ip_style IS INITIAL. @@ -4624,13 +5128,14 @@ endmethod. ENDIF. * End of Fix issue #162 - endmethod. + +endmethod. - - - - - + + + + + method SET_CELL_FORMULA. DATA: lv_column TYPE zexcel_cell_column, @@ -4658,13 +5163,14 @@ endmethod. <sheet_content>-cell_formula = ip_formula. - endmethod. + +endmethod. - - - - - + + + + + method SET_CELL_STYLE. DATA: lv_column TYPE zexcel_cell_column, @@ -4688,13 +5194,14 @@ endmethod. set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). ENDIF. - endmethod. + +endmethod. - - - - - + + + + + method SET_COLUMN_WIDTH. DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. DATA: width TYPE float. @@ -4724,11 +5231,12 @@ endmethod. column_dimension->set_auto_size( ip_width_autosize ). - endmethod. + +endmethod. - - - + + + method SET_DEFAULT_EXCEL_DATE_FORMAT. IF ip_default_excel_date_format IS INITIAL. @@ -4738,14 +5246,15 @@ endmethod. ENDIF. default_excel_date_format = ip_default_excel_date_format. - endmethod. + +endmethod. - - - - - - + + + + + + method SET_MERGE. DATA: lv_column_start TYPE zexcel_cell_column, @@ -4780,18 +5289,20 @@ endmethod. CONCATENATE ip_column_end lv_row_alpha INTO ls_sheet_content-cell_coords. INSERT ls_sheet_content INTO TABLE sheet_content_merge. - endmethod. + +endmethod. - - + + method SET_PRINT_GRIDLINES. me->print_gridlines = i_print_gridlines. - endmethod. + +endmethod. - - - - + + + + method SET_ROW_HEIGHT. DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. DATA: height TYPE float. @@ -4817,78 +5328,40 @@ endmethod. - endmethod. + +endmethod. - - - - - - METHOD set_row_outline. - - DATA: ls_row_outline LIKE LINE OF me->mt_row_outlines. - FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF me->mt_row_outlines. - - READ TABLE me->mt_row_outlines ASSIGNING <ls_row_outline> WITH TABLE KEY row_from = iv_row_from - row_to = iv_row_to. - IF sy-subrc <> 0. - IF iv_row_from <= 0. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'First row of outline must be a positive number'. - ENDIF. - IF iv_row_to < iv_row_from. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Last row of outline may not be less than first line of outline'. - ENDIF. - ls_row_outline-row_from = iv_row_from. - ls_row_outline-row_to = iv_row_to. - INSERT ls_row_outline INTO TABLE me->mt_row_outlines ASSIGNING <ls_row_outline>. - ENDIF. - - CASE iv_collapsed. - - WHEN abap_true - OR abap_false. - <ls_row_outline>-collapsed = iv_collapsed. - - WHEN OTHERS. - RAISE EXCEPTION TYPE zcx_excel - EXPORTING - error = 'Unknown collapse state'. - - ENDCASE. -ENDMETHOD. - - - + + method SET_SHOW_GRIDLINES. me->show_gridlines = i_show_gridlines. - endmethod. + +endmethod. - - + + method SET_SHOW_ROWCOLHEADERS. me->show_rowcolheaders = i_show_rowcolheaders. - endmethod. + +endmethod. - - + + method SET_TABCOLOR. me->tabcolor = iv_tabcolor. - endmethod. + +endmethod. - - - - - - - - - - + + + + + + + + + + method SET_TABLE. DATA: lo_tabdescr TYPE REF TO cl_abap_structdescr, @@ -4961,28 +5434,29 @@ ENDMETHOD. ENDIF. ENDLOOP. - endmethod. + +endmethod. - - - + + + method SET_TITLE. *--------------------------------------------------------------------* * ToDos: -* 2do§1 The current coding for replacing a named ranges name +* 2do§1 The current coding for replacing a named ranges name * after renaming a sheet should be checked if it is * really working if sheetname should be escaped *--------------------------------------------------------------------* *--------------------------------------------------------------------* * issue #230 - Pimp my Code -* - Stefan Schmoecker, (wip ) 2012-12-08 +* - Stefan Schmöcker, (wip ) 2012-12-08 * - ... * changes: aligning code * message made to support multilinguality *--------------------------------------------------------------------* * issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmoecker, 2012-12-02 +* - Stefan Schmöcker, 2012-12-02 * changes: added additional check for ' as first character *--------------------------------------------------------------------* DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, @@ -5045,7 +5519,7 @@ ENDMETHOD. * After changing this worksheet's title we have to adjust * all ranges that are referring to this worksheet. *--------------------------------------------------------------------* -* 2do§1 - Check if the following quickfix is solid +* 2do§1 - Check if the following quickfix is solid * I fear it isn't - but this implementation is better then * nothing at all since it handles a supposed majority of cases *--------------------------------------------------------------------* @@ -5064,11 +5538,12 @@ ENDMETHOD. ENDWHILE. - endmethod. + +endmethod. - - - METHOD update_dimension_range. + + + method UPDATE_DIMENSION_RANGE. DATA: ls_sheet_content TYPE zexcel_s_cell_data, lt_sheet_content TYPE zexcel_t_cell_data_unsorted, @@ -5107,6 +5582,7 @@ ENDMETHOD. SHIFT lv_row_alpha LEFT DELETING LEADING space. CONCATENATE lv_column_alpha lv_row_alpha INTO lower_cell-cell_coords. -ENDMETHOD. + +endmethod. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk index bdcd5ab..13bfd07 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk @@ -1,6 +1,132 @@ - - - + + + + *----------------------------------------------------------------------* +* CLASS ZCL_EXCEL_WRITER_2007 DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +class ZCL_EXCEL_WRITER_2007 definition + public + create public . + +public section. + + interfaces ZIF_EXCEL_WRITER . + protected section. + + constants C_CONTENT_TYPES type STRING value '[Content_Types].xml'. "#EC NOTEXT + constants C_DOCPROPS_APP type STRING value 'docProps/app.xml'. "#EC NOTEXT + constants C_DOCPROPS_CORE type STRING value 'docProps/core.xml'. "#EC NOTEXT + constants C_RELATIONSHIPS type STRING value '_rels/.rels'. "#EC NOTEXT + constants C_XL_DRAWINGS type STRING value 'xl/drawings/drawing#.xml'. "#EC NOTEXT + constants C_XL_DRAWINGS_RELS type STRING value 'xl/drawings/_rels/drawing#.xml.rels'. "#EC NOTEXT + constants C_XL_RELATIONSHIPS type STRING value 'xl/_rels/workbook.xml.rels'. "#EC NOTEXT + constants C_XL_SHAREDSTRINGS type STRING value 'xl/sharedStrings.xml'. "#EC NOTEXT + constants C_XL_CALCCHAIN type STRING value 'xl/calcChain.xml'. "#EC NOTEXT + constants C_XL_SHEET type STRING value 'xl/worksheets/sheet#.xml'. "#EC NOTEXT + constants C_XL_SHEET_RELS type STRING value 'xl/worksheets/_rels/sheet#.xml.rels'. "#EC NOTEXT + constants C_XL_STYLES type STRING value 'xl/styles.xml'. "#EC NOTEXT + constants C_XL_THEME type STRING value 'xl/theme/theme1.xml'. "#EC NOTEXT + constants C_XL_WORKBOOK type STRING value 'xl/workbook.xml'. "#EC NOTEXT + data EXCEL type ref to ZCL_EXCEL . + constants C_XL_PRINTERSETTINGS type STRING value 'xl/printerSettings/printerSettings#.bin'. "#EC NOTEXT + + methods CREATE + returning + value(EP_EXCEL) type XSTRING . + methods CREATE_CONTENT_TYPES + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_DOCPROPS_APP + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_DOCPROPS_CORE + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_RELATIONSHIPS + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_CHARTS + importing + !IO_DRAWING type ref to ZCL_EXCEL_DRAWING + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_DRAWINGS + importing + !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_DRAWING_ANCHOR + importing + !IO_DRAWING type ref to ZCL_EXCEL_DRAWING + !IO_DOCUMENT type ref to IF_IXML_DOCUMENT + !IP_INDEX type I + returning + value(EP_ANCHOR) type ref to IF_IXML_ELEMENT . + methods CREATE_XL_DRAWINGS_RELS + importing + !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_RELATIONSHIPS + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_SHAREDSTRINGS + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_SHEET + importing + !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET + !IV_ACTIVE type FLAG default '' + returning + value(EP_CONTENT) type XSTRING + raising + ZCX_EXCEL . + methods CREATE_XL_SHEET_RELS + importing + !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET + !IV_DRAWING_INDEX type I + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_STYLES + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_STYLES_COLOR_NODE + importing + !IO_DOCUMENT type ref to IF_IXML_DOCUMENT + !IO_PARENT type ref to IF_IXML_ELEMENT + !IV_COLOR_ELEM_NAME type STRING default 'color' + !IS_COLOR type ZEXCEL_S_STYLE_COLOR . + methods CREATE_XL_TABLE + importing + !IO_TABLE type ref to ZCL_EXCEL_TABLE + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_THEME + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_WORKBOOK + returning + value(EP_CONTENT) type XSTRING . + private section. + + constants C_OFF type STRING value '0'. "#EC NOTEXT + constants C_ON type STRING value '1'. "#EC NOTEXT + data SHARED_STRINGS type ZEXCEL_T_SHARED_STRING . + data STYLES_COND_MAPPING type ZEXCEL_T_STYLES_COND_MAPPING . + data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING . + + methods FLAG2BOOL + importing + !IP_FLAG type FLAG + returning + value(EP_BOOLEAN) type CHAR5 . + methods GET_SHARED_STRING_INDEX + importing + !IP_CELL_VALUE type ZEXCEL_CELL_VALUE + returning + value(EP_INDEX) type INT4 . *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes @@ -9,36 +135,37 @@ *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + method ZIF_EXCEL_WRITER~WRITE_FILE. me->excel = io_excel. ep_file = me->create( ). - endmethod. + +endmethod. - - + + method CREATE. * Office 2007 file format is a cab of several xml files with extension .xlsx @@ -232,10 +359,11 @@ * STEP 12: Create the final zip ep_excel = lo_zip->save( ). - endmethod. + +endmethod. - - + + method CREATE_CONTENT_TYPES. @@ -507,10 +635,11 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - + + method CREATE_DOCPROPS_APP. @@ -730,10 +859,11 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - + + method CREATE_DOCPROPS_CORE. @@ -864,10 +994,11 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - + + method CREATE_RELATIONSHIPS. @@ -963,11 +1094,12 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - - + + + method CREATE_XL_CHARTS. @@ -1868,11 +2000,12 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - - + + + method CREATE_XL_DRAWINGS. @@ -1948,11 +2081,12 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - - + + + method CREATE_XL_DRAWINGS_RELS. ** Constant node name @@ -2047,13 +2181,14 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - - - - + + + + + method CREATE_XL_DRAWING_ANCHOR. ** Constant node name @@ -2361,10 +2496,11 @@ parent = io_document ). ep_anchor->append_child( new_child = lo_element_clientdata ). - endmethod. + +endmethod. - - + + method CREATE_XL_RELATIONSHIPS. @@ -2509,10 +2645,11 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - + + method CREATE_XL_SHAREDSTRINGS. @@ -2630,21 +2767,22 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - - - - - METHOD create_xl_sheet. + + + + + + method CREATE_XL_SHEET. *--------------------------------------------------------------------* * issue #330 - Adding ColorScale conditional formatting * - Ivan Femia, 2014-08-25 *--------------------------------------------------------------------* TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, + colorrgb TYPE zexcel_color, END OF colors. *--------------------------------------------------------------------* @@ -2653,25 +2791,22 @@ *--------------------------------------------------------------------* TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, + value TYPE zexcel_conditional_value, + type TYPE zexcel_conditional_type, END OF cfvo. *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start *--------------------------------------------------------------------* TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, + left TYPE i, + right TYPE i, + top TYPE i, + bottom TYPE i, END OF lty_table_area. *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end *--------------------------------------------------------------------* -** Constants - CONSTANTS: - lc_dummy_cell_content TYPE zexcel_s_cell_data-cell_value VALUE '})~~~ This is a dummy value for ABAP2XLSX and you should never find this in a real excelsheet Ihope'. ** Constant node name @@ -2819,11 +2954,11 @@ lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. + lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', + lc_xml_node_comp_pref TYPE string VALUE 'x14ac', + lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. DATA: lo_ixml TYPE REF TO if_ixml, lo_document TYPE REF TO if_ixml_document, @@ -2841,7 +2976,6 @@ lo_data_validation TYPE REF TO zcl_excel_data_validation, lo_table TYPE REF TO zcl_excel_table, row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. @@ -2874,13 +3008,6 @@ lv_relation_id TYPE i VALUE 0, outline_level_row TYPE i VALUE 0, outline_level_col TYPE i VALUE 0, - lv_current_row TYPE i, - lv_next_row TYPE i, - ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, - ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, - lv_last_row TYPE i, - lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, - lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, col_count TYPE int4, merge_count TYPE int4, write_current_row TYPE boolean, @@ -2898,8 +3025,7 @@ FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, <fs_range_merge> LIKE LINE OF lt_range_merge, <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, - <ls_row_outline> LIKE LINE OF lts_row_outlines. + <row_dimension> TYPE zexcel_s_worksheet_rowdimensio. *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start @@ -3163,19 +3289,16 @@ ENDIF. ENDIF. " outlineLevelRow -* Excel is recalculating the outlinelevel on startup from the outline levels found in the rows -* If we place anything incorrect here it gets corrected, if don't place anything it gets added -* So no need to calculate the outlinelevel here ( at least for rows - probably for columns as well but I haven't tested yet -* LOOP AT row_dimensions ASSIGNING <row_dimension>. -* IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. -* outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). -* ENDIF. -* ENDLOOP. -* lv_value = outline_level_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow -* value = lv_value ). + LOOP AT row_dimensions ASSIGNING <row_dimension>. + IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. + outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). + ENDIF. + ENDLOOP. + lv_value = outline_level_row. + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow + value = lv_value ). " outlineLevelCol LOOP AT column_dimensions ASSIGNING <column_dimension>. IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. @@ -3367,150 +3490,80 @@ *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end *--------------------------------------------------------------------* -* We have problems when the first rows or trailing rows are not set but we have rowinformation -* to solve this we add dummycontent into first and last line that will not be set -* Set first line if necessary - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = 1. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. -* Set last line if necessary -* Last row with cell content - lv_last_row = io_worksheet->get_highest_row( ). -* Last line with row-information set directly ( like line height, hidden-status ... ) - lts_row_dimensions = io_worksheet->get_row_dimensions( ). - SORT lts_row_dimensions BY row DESCENDING. - READ TABLE lts_row_dimensions INDEX 1 ASSIGNING <row_dimension>. - IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row. - lv_last_row = <row_dimension>-row. - ENDIF. -* Last line with row-information set indirectly by row outline - lts_row_outlines = io_worksheet->get_row_outlines( ). - LOOP AT lts_row_outlines ASSIGNING <ls_row_outline>. - IF <ls_row_outline>-collapsed = 'X'. - lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row - ELSE. - lv_current_row = <ls_row_outline>-row_to. " collapsed-status may be set on following row - ENDIF. - IF lv_current_row > lv_last_row. - lv_last_row = lv_current_row. - ENDIF. - ENDLOOP. - READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. - IF sy-subrc <> 0. - ls_sheet_content_empty-cell_row = lv_last_row. - ls_sheet_content_empty-cell_column = 1. - ls_sheet_content_empty-cell_value = lc_dummy_cell_content. - INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. - ENDIF. - - CLEAR ls_sheet_content. - LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. + LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>. READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. CLEAR l_autofilter_hidden. ENDIF. CLEAR ls_style_mapping. -* Create row element -* issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row -* Get next line that may have to be added. If we have empty lines this is the next line after previous cell content -* Otherwise it is the line of the current cell content - lv_current_row = ls_last_row-cell_row + 1. - IF lv_current_row > ls_sheet_content-cell_row. - lv_current_row = ls_sheet_content-cell_row. - ENDIF. -* Fill in empty lines if necessary - assign an emtpy sheet content - lv_next_row = lv_current_row. - WHILE lv_next_row <= ls_sheet_content-cell_row. - lv_current_row = lv_next_row. - lv_next_row = lv_current_row + 1. - IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row - ASSIGN ls_sheet_content TO <ls_sheet_content>. - ELSE. -* Check if empty row is really necessary - this is basically the case when we have information in row_dimension - lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). - CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR - lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR - lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR - lo_row_dim_empty->get_xf_index( ) <> 0. - " Dummyentry A1 - ls_sheet_content_empty-cell_row = lv_current_row. - ls_sheet_content_empty-cell_column = 1. - ASSIGN ls_sheet_content_empty TO <ls_sheet_content>. - ENDIF. - - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . - CLEAR l_autofilter_hidden. - ENDIF. - ELSE. + IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. + IF lo_autofilter IS BOUND. + IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header + ls_area-row_end < ls_last_row-cell_row . CLEAR l_autofilter_hidden. ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( io_worksheet ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). - ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( io_worksheet ) = abap_true OR - row_dimension->get_outline_level( io_worksheet ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( io_worksheet ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( io_worksheet ) > 0. - lv_value = row_dimension->get_outline_level( io_worksheet ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). - ENDIF. - ENDIF. - l_autofilter_hidden = abap_true. " First default is not showing + ELSE. + CLEAR l_autofilter_hidden. ENDIF. - ENDWHILE. + IF ls_last_row-cell_row IS NOT INITIAL. + " Row visibility of previos row. + IF row_dimension->get_visible( ) = abap_false OR + l_autofilter_hidden = abap_true. + lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). + ENDIF. + lo_element->append_child( new_child = lo_element_2 ). " row node + ENDIF. + " Add new row + lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row + parent = lo_document ). + " r + lv_value = <ls_sheet_content>-cell_row. + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + + lo_element_2->set_attribute_ns( name = lc_xml_attr_r + value = lv_value ). + " Spans + lv_value = col_count. + CONCATENATE '1:' lv_value INTO lv_value. + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + lo_element_2->set_attribute_ns( name = lc_xml_attr_spans + value = lv_value ). + row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). + " Do we need the row dimension attributes? + IF row_dimension->get_row_height( ) >= 0 OR + row_dimension->get_collapsed( ) = abap_true OR + row_dimension->get_outline_level( ) > 0 OR + row_dimension->get_xf_index( ) <> 0 OR + l_autofilter_hidden = abap_true. + " Row dimensions + IF row_dimension->get_row_height( ) >= 0. + lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). + lv_value = row_dimension->get_row_height( ). + lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). + ENDIF. + " Collapsed + IF row_dimension->get_collapsed( ) = abap_true. + lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). + ENDIF. + " Outline level + IF row_dimension->get_outline_level( ) > 0. + lv_value = row_dimension->get_outline_level( ). + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). + ENDIF. + " Style + IF row_dimension->get_xf_index( ) <> 0. + lv_value = row_dimension->get_xf_index( ). + lo_element_2->set_attribute_ns( name = 's' value = lv_value ). + lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). + ENDIF. + ENDIF. + l_autofilter_hidden = abap_true. " First default is not showing + ENDIF. lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c parent = lo_document ). @@ -3578,8 +3631,7 @@ CONDENSE lv_value. lo_element_4->set_value( value = lv_value ). lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula - AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content. + ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL. "cell can have just style or formula IF <ls_sheet_content>-data_type IS NOT INITIAL. IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. lo_element_3->set_attribute_ns( name = lc_xml_attr_t @@ -3594,7 +3646,7 @@ lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v parent = lo_document ). - IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'. + IF <ls_sheet_content>-data_type EQ 's' or <ls_sheet_content>-data_type EQ 's_leading_blanks'. lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). CONDENSE lv_value. lo_element_4->set_value( value = lv_value ). @@ -3630,7 +3682,6 @@ ENDIF. lo_element->append_child( new_child = lo_element_2 ). " row node ENDIF. - DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries lo_element_root->append_child( new_child = lo_element ). " sheetData node @@ -4124,7 +4175,7 @@ " Hyperlinks DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. + lo_link TYPE REF TO zcl_excel_hyperlink. lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). IF lv_hyperlinks_count > 0. @@ -4454,46 +4505,46 @@ lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -ENDMETHOD. +endmethod. - - - - - METHOD create_xl_sheet_rels. + + + + + method CREATE_XL_SHEET_RELS. ** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', + DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', + lc_xml_node_relationship TYPE string VALUE 'Relationship', " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', + lc_xml_attr_id TYPE string VALUE 'Id', + lc_xml_attr_type TYPE string VALUE 'Type', + lc_xml_attr_target TYPE string VALUE 'Target', + lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', + lc_xml_val_external TYPE string VALUE 'External', " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. + lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', + lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', + lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', + lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', + lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. + DATA: lo_ixml TYPE REF TO if_ixml, + lo_document TYPE REF TO if_ixml_document, + lo_element_root TYPE REF TO if_ixml_element, + lo_element TYPE REF TO if_ixml_element, + lo_encoding TYPE REF TO if_ixml_encoding, + lo_streamfactory TYPE REF TO if_ixml_stream_factory, + lo_ostream TYPE REF TO if_ixml_ostream, + lo_renderer TYPE REF TO if_ixml_renderer, + lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_table TYPE REF TO zcl_excel_table, + lo_link TYPE REF TO zcl_excel_hyperlink. - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. + DATA: lv_value TYPE string, + lv_relation_id TYPE i, + lv_index_str TYPE string. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP @@ -4522,7 +4573,6 @@ ENDMETHOD. lo_iterator = io_worksheet->get_hyperlinks_iterator( ). WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). - CHECK lo_link->is_internal( ) = abap_false. " issue #340 - don't put internal links here ADD 1 TO lv_relation_id. lv_value = lv_relation_id. @@ -4625,11 +4675,12 @@ ENDMETHOD. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -ENDMETHOD. + +endmethod. - - - METHOD create_xl_styles. + + + method CREATE_XL_STYLES. ** Constant node name @@ -4721,7 +4772,12 @@ ENDMETHOD. lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. + lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + lc_xml_attr_type type string value 'type', + lc_xml_attr_bottom type string value 'bottom', + lc_xml_attr_top type string value 'top', + lc_xml_attr_right type string value 'right', + lc_xml_attr_left type string value 'left'. DATA: lo_ixml TYPE REF TO if_ixml, lo_document TYPE REF TO if_ixml_document, @@ -5039,32 +5095,141 @@ ENDMETHOD. LOOP AT lt_fills INTO ls_fill. lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill parent = lo_document ). - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - " bgcolor + if ls_fill-gradtype is not initial. + "gradient + + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_gradientfill + parent = lo_document ). + if ls_fill-gradtype-degree is not initial. + lv_value = ls_fill-gradtype-degree. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_degree value = lv_value ). + endif. + if ls_fill-gradtype-type is not initial. + lv_value = ls_fill-gradtype-type. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_type value = lv_value ). + endif. + if ls_fill-gradtype-bottom is not initial. + lv_value = ls_fill-gradtype-bottom. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_bottom value = lv_value ). + endif. + if ls_fill-gradtype-top is not initial. + lv_value = ls_fill-gradtype-top. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_top value = lv_value ). + endif. + if ls_fill-gradtype-right is not initial. + lv_value = ls_fill-gradtype-right. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_right value = lv_value ). + endif. + if ls_fill-gradtype-left is not initial. + lv_value = ls_fill-gradtype-left. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_left value = lv_value ). + endif. + + if ls_fill-gradtype-position3 is not initial. + "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient + lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop + parent = lo_sub_element ). + lv_value = ls_fill-gradtype-position1. + lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). + + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_sub_element_2 + is_color = ls_fill-bgcolor + iv_color_elem_name = lc_xml_node_color ). + lo_sub_element->append_child( new_child = lo_sub_element_2 ). + + lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop + parent = lo_sub_element ). + + lv_value = ls_fill-gradtype-position2. + + lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position + value = lv_value ). + + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_sub_element_2 + is_color = ls_fill-fgcolor + iv_color_elem_name = lc_xml_node_color ). + lo_sub_element->append_child( new_child = lo_sub_element_2 ). + + lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop + parent = lo_sub_element ). + + lv_value = ls_fill-gradtype-position3. + lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position + value = lv_value ). + + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_sub_element_2 + is_color = ls_fill-bgcolor + iv_color_elem_name = lc_xml_node_color ). + lo_sub_element->append_child( new_child = lo_sub_element_2 ). + + else. + "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient + lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop + parent = lo_sub_element ). + lv_value = ls_fill-gradtype-position1. + lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). + + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_sub_element_2 + is_color = ls_fill-bgcolor + iv_color_elem_name = lc_xml_node_color ). + lo_sub_element->append_child( new_child = lo_sub_element_2 ). + + lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop + parent = lo_sub_element ). + + lv_value = ls_fill-gradtype-position2. + lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position + value = lv_value ). + + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_sub_element_2 + is_color = ls_fill-fgcolor + iv_color_elem_name = lc_xml_node_color ). + lo_sub_element->append_child( new_child = lo_sub_element_2 ). + endif. + + + + + else. + "pattern + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill + parent = lo_document ). + lv_value = ls_fill-filltype. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype + value = lv_value ). + " fgcolor create_xl_styles_color_node( io_document = lo_document io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). + is_color = ls_fill-fgcolor + iv_color_elem_name = lc_xml_node_fgcolor ). - ENDIF. + IF ls_fill-fgcolor-rgb IS INITIAL AND + ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND + ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND + ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. + + " bgcolor + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_sub_element + is_color = ls_fill-bgcolor + iv_color_elem_name = lc_xml_node_bgcolor ). + + ENDIF. + endif. lo_element_fill->append_child( new_child = lo_sub_element )."pattern lo_element_fills->append_child( new_child = lo_element_fill ). @@ -5606,14 +5771,14 @@ ENDMETHOD. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -ENDMETHOD. +endmethod. - - - - - - METHOD create_xl_styles_color_node. + + + + + + method CREATE_XL_STYLES_COLOR_NODE. DATA: lo_sub_element TYPE REF TO if_ixml_element, lv_value TYPE string. @@ -5657,12 +5822,12 @@ ENDMETHOD. ENDIF. io_parent->append_child( new_child = lo_sub_element ). -ENDMETHOD. +endmethod. - - - - METHOD create_xl_table. + + + + method CREATE_XL_TABLE. DATA: lc_xml_node_table TYPE string VALUE 'table', lc_xml_node_relationship TYPE string VALUE 'Relationship', @@ -5836,10 +6001,10 @@ ENDMETHOD. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -ENDMETHOD. +endmethod. - - + + method CREATE_XL_THEME. @@ -5925,10 +6090,11 @@ ENDMETHOD. buffer = ep_content. - endmethod. + +endmethod. - - + + method CREATE_XL_WORKBOOK. *--------------------------------------------------------------------* * issue #230 - Pimp my Code @@ -6246,11 +6412,12 @@ ENDMETHOD. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - endmethod. + +endmethod. - - - + + + method FLAG2BOOL. @@ -6259,12 +6426,13 @@ ENDMETHOD. ELSE. ep_boolean = 'false'. ENDIF. - endmethod. + +endmethod. - - - - METHOD get_shared_string_index. + + + + method GET_SHARED_STRING_INDEX. DATA ls_shared_string TYPE zexcel_s_shared_string. @@ -6272,6 +6440,7 @@ ENDMETHOD. READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. ep_index = ls_shared_string-string_no. -ENDMETHOD. + +endmethod. diff --git a/ZA2X/PROG/ZDEMO_EXCEL2.slnk b/ZA2X/PROG/ZDEMO_EXCEL2.slnk index 52b7b56..1598627 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL2.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL2.slnk @@ -1,8 +1,7 @@ - - + + - @@ -14,50 +13,66 @@ *& *&---------------------------------------------------------------------* -REPORT zdemo_excel2. +report zdemo_excel2. -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_style_bold TYPE REF TO zcl_excel_style, - lo_style_underline TYPE REF TO zcl_excel_style, - lo_style_filled TYPE REF TO zcl_excel_style, - lo_style_border TYPE REF TO zcl_excel_style, - lo_style_button TYPE REF TO zcl_excel_style, - lo_border_dark TYPE REF TO zcl_excel_style_border, - lo_border_light TYPE REF TO zcl_excel_style_border. +data: lo_excel type ref to zcl_excel, + lo_worksheet type ref to zcl_excel_worksheet, + lo_style_bold type ref to zcl_excel_style, + lo_style_underline type ref to zcl_excel_style, + lo_style_filled type ref to zcl_excel_style, + lo_style_border type ref to zcl_excel_style, + lo_style_button type ref to zcl_excel_style, + lo_border_dark type ref to zcl_excel_style_border, + lo_border_light type ref to zcl_excel_style_border. -DATA: lv_style_bold_guid TYPE zexcel_cell_style, - lv_style_underline_guid TYPE zexcel_cell_style, - lv_style_filled_guid TYPE zexcel_cell_style, - lv_style_filled_green_guid TYPE zexcel_cell_style, - lv_style_border_guid TYPE zexcel_cell_style, - lv_style_button_guid TYPE zexcel_cell_style, - lv_style_filled_turquoise_guid TYPE zexcel_cell_style. +data: lv_style_bold_guid type zexcel_cell_style, + lv_style_underline_guid type zexcel_cell_style, + lv_style_filled_guid type zexcel_cell_style, + lv_style_filled_green_guid type zexcel_cell_style, + lv_style_border_guid type zexcel_cell_style, + lv_style_button_guid type zexcel_cell_style, + lv_style_filled_turquoise_guid type zexcel_cell_style, + lo_style_gr_cornerlb_guid type zexcel_cell_style, + lo_style_gr_cornerlt_guid type zexcel_cell_style, + lo_style_gr_cornerrb_guid type zexcel_cell_style, + lo_style_gr_cornerrt_guid type zexcel_cell_style, + lo_style_gr_horizontal90_guid type zexcel_cell_style, + lo_style_gr_horizontal270_guid type zexcel_cell_style, + lo_style_gr_horizontalb_guid type zexcel_cell_style, + lo_style_gr_vertical_guid type zexcel_cell_style, + lo_style_gr_vertical2_guid type zexcel_cell_style, + lo_style_gr_fromcenter_guid type zexcel_cell_style, + lo_style_gr_diagonal45_guid type zexcel_cell_style, + lo_style_gr_diagonal45b_guid type zexcel_cell_style, + lo_style_gr_diagonal135_guid type zexcel_cell_style, + lo_style_gr_diagonal135b_guid type zexcel_cell_style . -DATA: lv_file TYPE xstring, - lv_bytecount TYPE i, - lt_file_tab TYPE solix_tab. +data: lv_file type xstring, + lv_bytecount type i, + lt_file_tab type solix_tab. -DATA: lv_full_path TYPE string, - lv_workdir TYPE string, - lv_file_separator TYPE c. +data: lv_full_path type string, + lv_workdir type string, + lv_file_separator type c. -CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. -INCLUDE zdemo_excel_outputopt_incl. +data: lo_row_dim type ref to zcl_excel_worksheet_rowdimensi. + +constants: gc_save_file_name type string value '02_Styles.xlsx'. +include zdemo_excel_outputopt_incl. -START-OF-SELECTION. +start-of-selection. " Creates active sheet - CREATE OBJECT lo_excel. + create object lo_excel. " Create border object - CREATE OBJECT lo_border_dark. + create object lo_border_dark. lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - CREATE OBJECT lo_border_light. + create object lo_border_light. lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. " Create a bold / italic style @@ -102,6 +117,128 @@ START-OF-SELECTION. lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. lv_style_filled_green_guid = lo_style_filled->get_guid( ). + " Create filled with gradients + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlb. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_cornerlb_guid = lo_style_filled->get_guid( ). + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlt. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_cornerlt_guid = lo_style_filled->get_guid( ). + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrb. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_cornerrb_guid = lo_style_filled->get_guid( ). + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrt. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_cornerrt_guid = lo_style_filled->get_guid( ). + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal90. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_horizontal90_guid = lo_style_filled->get_guid( ). + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal270. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_horizontal270_guid = lo_style_filled->get_guid( ). + + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontalb. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_horizontalb_guid = lo_style_filled->get_guid( ). + + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_vertical_guid = lo_style_filled->get_guid( ). + + + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_vertical2_guid = lo_style_filled->get_guid( ). + + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_fromcenter. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_fromcenter_guid = lo_style_filled->get_guid( ). + + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_diagonal45_guid = lo_style_filled->get_guid( ). + + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45b. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_diagonal45b_guid = lo_style_filled->get_guid( ). + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_diagonal135_guid = lo_style_filled->get_guid( ). + + lo_style_filled = lo_excel->add_new_style( ). + lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135b. + lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. + lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. + lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. + lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. + lo_style_gr_diagonal135b_guid = lo_style_filled->get_guid( ). + + + " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) lo_style_filled = lo_excel->add_new_style( ). lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise @@ -131,6 +268,52 @@ START-OF-SELECTION. " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). + + lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_style = lo_style_gr_cornerlb_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerlb ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 10 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_style = lo_style_gr_cornerlt_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerlt ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 11 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_style = lo_style_gr_cornerrb_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerrb ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 12 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_style = lo_style_gr_cornerrt_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerrt ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 13 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_style = lo_style_gr_horizontal90_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_horizontal90 ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 14 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_style = lo_style_gr_horizontal270_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_horizontal270 ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 15 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 16 ip_style = lo_style_gr_horizontalb_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_horizontalb ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 16 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'C' ip_row = 17 ip_style = lo_style_gr_vertical_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_vertical ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 17 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_style = lo_style_gr_vertical2_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_vertical ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 18 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_style = lo_style_gr_fromcenter_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_fromcenter ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 19 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_style = lo_style_gr_diagonal45_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal45 ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 20 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'C' ip_row = 21 ip_style = lo_style_gr_diagonal45b_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal45b ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 21 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'B' ip_row = 22 ip_style = lo_style_gr_diagonal135_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal135 ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 22 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + lo_worksheet->set_cell( ip_column = 'C' ip_row = 23 ip_style = lo_style_gr_diagonal135b_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal135b ). + lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 23 ). + lo_row_dim->set_row_height( ip_row_height = 30 ). + + + * CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. * lv_file = lo_excel_writer->write_file( lo_excel ). * diff --git a/ZA2X/PROG/ZDEMO_EXCEL34.slnk b/ZA2X/PROG/ZDEMO_EXCEL34.slnk index 84a3a6c..539107a 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL34.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL34.slnk @@ -1,8 +1,7 @@ - - + + - @@ -203,11 +202,13 @@ START-OF-SELECTION. IF colorflag = 0. lo_worksheet->change_cell_style( ip_column = col_alpha ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' ). + ip_fill_fgcolor_rgb = 'FFB5866A' + ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). ELSE. lo_worksheet->change_cell_style( ip_column = col_alpha ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' ). + ip_fill_fgcolor_rgb = 'FFF5DEBF' + ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). ENDIF. diff --git a/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk b/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk index 3c62a01..18e0244 100644 --- a/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk +++ b/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk @@ -1,16 +1,26 @@ - - + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk b/ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk new file mode 100644 index 0000000..91b86cb --- /dev/null +++ b/ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk b/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk index 0c2e588..ed81bf7 100644 --- a/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk +++ b/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk @@ -1,16 +1,26 @@ - - + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk b/ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk new file mode 100644 index 0000000..58b0466 --- /dev/null +++ b/ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk b/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk index e1325ca..ebbc65d 100644 --- a/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk +++ b/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk @@ -1,5 +1,5 @@ - + @@ -13,4 +13,14 @@ + + + + + + + + + + From fdec5a1476fe792711a2a8fbbcda970a8d28adab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20P=C4=99giel?= Date: Sat, 10 Jan 2015 18:52:14 +0100 Subject: [PATCH 2/3] ZCL_EXCEL_CONVERTER Allowed to used objects which inherits from cl_gui_alv_grid --- ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk | 92 ++++++++++++++++-------------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk index d6dc26d..61acc64 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_CONVERTER.slnk @@ -1,12 +1,12 @@ - - - - - @@ -82,15 +82,6 @@ TYPES: BEGIN OF ts_color_styles, *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - @@ -861,7 +852,8 @@ ENDMETHOD. ls_fieldcatalog TYPE zexcel_s_converter_fcat, lo_if TYPE REF TO zif_excel_converter, ls_types TYPE ts_alv_types, - lo_addit TYPE REF TO cl_abap_classdescr. + lo_addit TYPE REF TO cl_abap_classdescr, + lo_addit_superclass type ref to cl_abap_classdescr. IF io_object IS BOUND. TRY. @@ -871,36 +863,48 @@ ENDMETHOD. ENDTRY. ls_types-seoclass = lo_addit->get_relative_name( ). READ TABLE wt_objects INTO ls_types WITH TABLE KEY seoclass = ls_types-seoclass. - IF sy-subrc = 0. - CREATE OBJECT lo_if TYPE (ls_types-clsname). - - TRY. + if sy-subrc ne 0. + do. + free lo_addit_superclass. + lo_addit_superclass = lo_addit->get_super_class_type( ). + if lo_addit_superclass is initial. + sy-subrc = '4'. + exit. + endif. + lo_addit = lo_addit_superclass. + ls_types-seoclass = lo_addit->get_relative_name( ). + read table wt_objects into ls_types with table key seoclass = ls_types-seoclass. + if sy-subrc eq 0. + exit. + endif. + enddo. + endif. + if sy-subrc = 0. + CREATE OBJECT lo_if type (ls_types-clsname). + try. lo_if->create_fieldcatalog( - EXPORTING - is_option = ws_option - io_object = io_object - it_table = it_table - IMPORTING - es_layout = ws_layout - et_fieldcatalog = wt_fieldcatalog - eo_table = wo_table - et_colors = wt_colors - et_filter = wt_filter - ). - ENDTRY. -* data lines of highest level. - IF ws_layout-max_subtotal_level > 0. - ADD 1 TO ws_layout-max_subtotal_level. - ENDIF. - ELSE. - RAISE EXCEPTION TYPE zcx_excel. - ENDIF. - ELSE. - REFRESH wt_fieldcatalog. - GET REFERENCE OF it_table INTO wo_table. - ENDIF. - - endmethod. + exporting + is_option = ws_option + io_object = io_object + it_table = it_table + importing + es_layout = ws_layout + et_fieldcatalog = wt_fieldcatalog + eo_table = wo_table + et_colors = wt_colors + et_filter = wt_filter + ). + endtry. +* data lines of highest level. + if ws_layout-max_subtotal_level > 0. add 1 to ws_layout-max_subtotal_level. endif. + else. + RAISE EXCEPTION type zcx_excel. + endif. + else. + refresh wt_fieldcatalog. + get reference of it_table into wo_table. + endif. +endmethod. From 7f54d62f88e19130e68ca3e001cdc6e95d80535c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20P=C4=99giel?= Date: Sat, 10 Jan 2015 18:58:17 +0100 Subject: [PATCH 3/3] Revert "Writer + Demo Programs" This reverts commit cbcd9bab1317a4e3bdddbd8f976f1d960b66f49a. --- ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk | 291 ++-- ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk | 1590 ++++++++-------------- ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk | 831 +++++------ ZA2X/PROG/ZDEMO_EXCEL2.slnk | 247 +--- ZA2X/PROG/ZDEMO_EXCEL34.slnk | 11 +- ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk | 38 +- ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk | 13 - ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk | 38 +- ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk | 13 - ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk | 12 +- 10 files changed, 1036 insertions(+), 2048 deletions(-) delete mode 100644 ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk delete mode 100644 ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk diff --git a/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk b/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk index 656a7f4..1128a99 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_STYLE_FILL.slnk @@ -1,65 +1,50 @@ - - *----------------------------------------------------------------------* -* CLASS ZCL_EXCEL_STYLE_FILL DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class zcl_excel_style_fill definition + + class ZCL_EXCEL_STYLE_FILL definition public final create public . - public section. +public section. +*"* public components of class ZCL_EXCEL_STYLE_FILL +*"* do not include other source files here!!! - constants c_fill_none type zexcel_fill_type value 'none'. "#EC NOTEXT - constants c_fill_solid type zexcel_fill_type value 'solid'. "#EC NOTEXT - constants c_fill_gradient_linear type zexcel_fill_type value 'linear'. "#EC NOTEXT - constants c_fill_gradient_path type zexcel_fill_type value 'path'. "#EC NOTEXT - constants c_fill_pattern_darkdown type zexcel_fill_type value 'darkDown'. "#EC NOTEXT - constants c_fill_pattern_darkgray type zexcel_fill_type value 'darkGray'. "#EC NOTEXT - constants c_fill_pattern_darkgrid type zexcel_fill_type value 'darkGrid'. "#EC NOTEXT - constants c_fill_pattern_darkhorizontal type zexcel_fill_type value 'darkHorizontal'. "#EC NOTEXT - constants c_fill_pattern_darktrellis type zexcel_fill_type value 'darkTrellis'. "#EC NOTEXT - constants c_fill_pattern_darkup type zexcel_fill_type value 'darkUp'. "#EC NOTEXT - constants c_fill_pattern_darkvertical type zexcel_fill_type value 'darkVertical'. "#EC NOTEXT - constants c_fill_pattern_gray0625 type zexcel_fill_type value 'gray0625'. "#EC NOTEXT - constants c_fill_pattern_gray125 type zexcel_fill_type value 'gray125'. "#EC NOTEXT - constants c_fill_pattern_lightdown type zexcel_fill_type value 'lightDown'. "#EC NOTEXT - constants c_fill_pattern_lightgray type zexcel_fill_type value 'lightGray'. "#EC NOTEXT - constants c_fill_pattern_lightgrid type zexcel_fill_type value 'lightGrid'. "#EC NOTEXT - constants c_fill_pattern_lighthorizontal type zexcel_fill_type value 'lightHorizontal'. "#EC NOTEXT - constants c_fill_pattern_lighttrellis type zexcel_fill_type value 'lightTrellis'. "#EC NOTEXT - constants c_fill_pattern_lightup type zexcel_fill_type value 'lightUp'. "#EC NOTEXT - constants c_fill_pattern_lightvertical type zexcel_fill_type value 'lightVertical'. "#EC NOTEXT - constants c_fill_pattern_mediumgray type zexcel_fill_type value 'mediumGray'. "#EC NOTEXT - constants c_fill_gradient_horizontal90 type zexcel_fill_type value 'horizontal90'. "#EC NOTEXT - constants c_fill_gradient_horizontal270 type zexcel_fill_type value 'horizontal270'. "#EC NOTEXT - constants c_fill_gradient_horizontalb type zexcel_fill_type value 'horizontalb'. "#EC NOTEXT - constants c_fill_gradient_vertical type zexcel_fill_type value 'vertical'. "#EC NOTEXT - constants c_fill_gradient_fromcenter type zexcel_fill_type value 'fromCenter'. "#EC NOTEXT - constants c_fill_gradient_diagonal45 type zexcel_fill_type value 'diagonal45'. "#EC NOTEXT - constants c_fill_gradient_diagonal45b type zexcel_fill_type value 'diagonal45b'. "#EC NOTEXT - constants c_fill_gradient_diagonal135 type zexcel_fill_type value 'diagonal135'. "#EC NOTEXT - constants c_fill_gradient_diagonal135b type zexcel_fill_type value 'diagonal135b'. "#EC NOTEXT - constants c_fill_gradient_cornerlt type zexcel_fill_type value 'cornerLT'. "#EC NOTEXT - constants c_fill_gradient_cornerlb type zexcel_fill_type value 'cornerLB'. "#EC NOTEXT - constants c_fill_gradient_cornerrt type zexcel_fill_type value 'cornerRT'. "#EC NOTEXT - constants c_fill_gradient_cornerrb type zexcel_fill_type value 'cornerRB'. "#EC NOTEXT - data gradtype type zexcel_s_gradient_type. - data filltype type zexcel_fill_type . - data rotation type zexcel_rotation . - data fgcolor type zexcel_s_style_color . - data bgcolor type zexcel_s_style_color . + constants C_FILL_NONE type ZEXCEL_FILL_TYPE value 'none'. "#EC NOTEXT + constants C_FILL_SOLID type ZEXCEL_FILL_TYPE value 'solid'. "#EC NOTEXT + constants C_FILL_GRADIENT_LINEAR type ZEXCEL_FILL_TYPE value 'linear'. "#EC NOTEXT + constants C_FILL_GRADIENT_PATH type ZEXCEL_FILL_TYPE value 'path'. "#EC NOTEXT + constants C_FILL_PATTERN_DARKDOWN type ZEXCEL_FILL_TYPE value 'darkDown'. "#EC NOTEXT + constants C_FILL_PATTERN_DARKGRAY type ZEXCEL_FILL_TYPE value 'darkGray'. "#EC NOTEXT + constants C_FILL_PATTERN_DARKGRID type ZEXCEL_FILL_TYPE value 'darkGrid'. "#EC NOTEXT + constants C_FILL_PATTERN_DARKHORIZONTAL type ZEXCEL_FILL_TYPE value 'darkHorizontal'. "#EC NOTEXT + constants C_FILL_PATTERN_DARKTRELLIS type ZEXCEL_FILL_TYPE value 'darkTrellis'. "#EC NOTEXT + constants C_FILL_PATTERN_DARKUP type ZEXCEL_FILL_TYPE value 'darkUp'. "#EC NOTEXT + constants C_FILL_PATTERN_DARKVERTICAL type ZEXCEL_FILL_TYPE value 'darkVertical'. "#EC NOTEXT + constants C_FILL_PATTERN_GRAY0625 type ZEXCEL_FILL_TYPE value 'gray0625'. "#EC NOTEXT + constants C_FILL_PATTERN_GRAY125 type ZEXCEL_FILL_TYPE value 'gray125'. "#EC NOTEXT + constants C_FILL_PATTERN_LIGHTDOWN type ZEXCEL_FILL_TYPE value 'lightDown'. "#EC NOTEXT + constants C_FILL_PATTERN_LIGHTGRAY type ZEXCEL_FILL_TYPE value 'lightGray'. "#EC NOTEXT + constants C_FILL_PATTERN_LIGHTGRID type ZEXCEL_FILL_TYPE value 'lightGrid'. "#EC NOTEXT + constants C_FILL_PATTERN_LIGHTHORIZONTAL type ZEXCEL_FILL_TYPE value 'lightHorizontal'. "#EC NOTEXT + constants C_FILL_PATTERN_LIGHTTRELLIS type ZEXCEL_FILL_TYPE value 'lightTrellis'. "#EC NOTEXT + constants C_FILL_PATTERN_LIGHTUP type ZEXCEL_FILL_TYPE value 'lightUp'. "#EC NOTEXT + constants C_FILL_PATTERN_LIGHTVERTICAL type ZEXCEL_FILL_TYPE value 'lightVertical'. "#EC NOTEXT + constants C_FILL_PATTERN_MEDIUMGRAY type ZEXCEL_FILL_TYPE value 'mediumGray'. "#EC NOTEXT + data FILLTYPE type ZEXCEL_FILL_TYPE . + data ROTATION type ZEXCEL_ROTATION . + data FGCOLOR type ZEXCEL_S_STYLE_COLOR . + data BGCOLOR type ZEXCEL_S_STYLE_COLOR . - methods constructor . - methods get_structure - returning - value(es_fill) type zexcel_s_style_fill . - protected section. - private section. - methods build_gradient. - methods check_filltype_is_gradient returning value(rv_is_gradient) type abap_bool. + methods CONSTRUCTOR . + methods GET_STRUCTURE + returning + value(ES_FILL) type ZEXCEL_S_STYLE_FILL . + *"* protected components of class ZABAP_EXCEL_STYLE_FONT +*"* do not include other source files here!!! +protected section. + *"* private components of class ZCL_EXCEL_STYLE_FILL +*"* do not include other source files here!!! +private section. *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes @@ -68,160 +53,48 @@ class zcl_excel_style_fill definition *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method build_gradient. - check check_filltype_is_gradient( ) eq abap_true. - case filltype. - when c_fill_gradient_horizontal90. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontal270. - gradtype-degree = '270'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_horizontalb. - gradtype-degree = '90'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_vertical. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_fromcenter. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - when c_fill_gradient_diagonal45. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal45b. - gradtype-degree = '45'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_diagonal135. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_diagonal135b. - gradtype-degree = '135'. - gradtype-position1 = '0'. - gradtype-position2 = '0.5'. - gradtype-position3 = '1'. - when c_fill_gradient_cornerlt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - when c_fill_gradient_cornerlb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '1'. - gradtype-top = '1'. - when c_fill_gradient_cornerrt. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-left = '1'. - gradtype-right = '1'. - when c_fill_gradient_cornerrb. - gradtype-type = c_fill_gradient_path. - gradtype-position1 = '0'. - gradtype-position2 = '1'. - gradtype-bottom = '0.5'. - gradtype-top = '0.5'. - gradtype-left = '0.5'. - gradtype-right = '0.5'. - endcase. - - endmethod. "build_gradient + + + + + + + + + + + + + + + + + + + + + + + + + + + method CONSTRUCTOR. + filltype = zcl_excel_style_fill=>c_fill_none. + fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. + fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. + bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. + bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. + rotation = 0. +endmethod. - - - method check_filltype_is_gradient. - case filltype. - when c_fill_gradient_horizontal90 or - c_fill_gradient_horizontal270 or - c_fill_gradient_horizontalb or - c_fill_gradient_vertical or - c_fill_gradient_fromcenter or - c_fill_gradient_diagonal45 or - c_fill_gradient_diagonal45b or - c_fill_gradient_diagonal135 or - c_fill_gradient_diagonal135b or - c_fill_gradient_cornerlt or - c_fill_gradient_cornerlb or - c_fill_gradient_cornerrt or - c_fill_gradient_cornerrb. - rv_is_gradient = abap_true. - endcase. - endmethod. "check_filltype_is_gradient - - - method constructor. - filltype = zcl_excel_style_fill=>c_fill_none. - fgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - fgcolor-indexed = zcl_excel_style_color=>c_indexed_not_set. - bgcolor-theme = zcl_excel_style_color=>c_theme_not_set. - bgcolor-indexed = zcl_excel_style_color=>c_indexed_sys_foreground. - rotation = 0. - - endmethod. "CONSTRUCTOR - - - - method get_structure. - es_fill-rotation = me->rotation. - es_fill-filltype = me->filltype. - es_fill-fgcolor = me->fgcolor. - es_fill-bgcolor = me->bgcolor. - me->build_gradient( ). - es_fill-gradtype = me->gradtype. - endmethod. "GET_STRUCTURE + + + method GET_STRUCTURE. + es_fill-rotation = me->rotation. + es_fill-filltype = me->filltype. + es_fill-fgColor = me->fgColor. + es_fill-bgColor = me->bgColor. +endmethod. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk index d9a3ce1..859990c 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk @@ -1,515 +1,40 @@ - - - - - - - - - - - class ZCL_EXCEL_WORKSHEET definition - public - final - create public . - -public section. - type-pools ABAP . - - interfaces ZIF_EXCEL_SHEET_PRINTSETTINGS . - interfaces ZIF_EXCEL_SHEET_PROPERTIES . - interfaces ZIF_EXCEL_SHEET_PROTECTION . - interfaces ZIF_EXCEL_SHEET_VBA_PROJECT . - - 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 - 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 . - data SHEET_CONTENT_MERGE type ZEXCEL_T_CELL_DATA_UNSORTED . - data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP . - data SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . " . - data SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . " . - data STYLES type ZEXCEL_T_SHEET_STYLE . - data TABCOLOR type ZEXCEL_S_TABCOLOR read-only . - - methods ADD_DRAWING - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods ADD_NEW_CONDITIONAL_STYLE - returning - value(EO_CONDITIONAL_STYLE) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . - methods ADD_NEW_DATA_VALIDATION - returning - value(EO_DATA_VALIDATION) type ref to ZCL_EXCEL_DATA_VALIDATION . - methods ADD_NEW_RANGE - returning - value(EO_RANGE) type ref to ZCL_EXCEL_RANGE . - methods BIND_ALV - importing - !IO_ALV type ref to OBJECT - !IT_TABLE type STANDARD TABLE - !I_TOP type I default 1 - !I_LEFT type I default 1 - !TABLE_STYLE type ZEXCEL_TABLE_STYLE optional - raising - ZCX_EXCEL . - type-pools SLIS . - type-pools SOI . - methods BIND_ALV_OLE2 - importing - !I_DOCUMENT_URL type CHAR255 default SPACE - !I_XLS type C default SPACE - !I_SAVE_PATH type STRING - !IO_ALV type ref to CL_GUI_ALV_GRID - !IT_LISTHEADER type SLIS_T_LISTHEADER optional - !I_TOP type I default 1 - !I_LEFT type I default 1 - !I_COLUMNS_HEADER type C default 'X' - !I_COLUMNS_AUTOFIT type C default 'X' - !I_FORMAT_COL_HEADER type SOI_FORMAT_ITEM optional - !I_FORMAT_SUBTOTAL type SOI_FORMAT_ITEM optional - !I_FORMAT_TOTAL type SOI_FORMAT_ITEM optional - exceptions - MISS_GUIDE - EX_TRANSFER_KKBLO_ERROR - FATAL_ERROR - INV_DATA_RANGE - DIM_MISMATCH_VKEY - DIM_MISMATCH_SEMA - ERROR_IN_SEMA . - methods BIND_TABLE - importing - !IP_TABLE type STANDARD TABLE - !IT_FIELD_CATALOG type ZEXCEL_T_FIELDCATALOG optional - !IS_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS optional - exporting - !ES_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS - raising - ZCX_EXCEL . - methods CALCULATE_COLUMN_WIDTHS - raising - ZCX_EXCEL . - methods CHANGE_CELL_STYLE - importing - !IP_COLUMN type SIMPLE - !IP_ROW type ZEXCEL_CELL_ROW - !IP_COMPLETE type ZEXCEL_S_CSTYLE_COMPLETE optional - !IP_XCOMPLETE type ZEXCEL_S_CSTYLEX_COMPLETE optional - !IP_FONT type ZEXCEL_S_CSTYLE_FONT optional - !IP_XFONT type ZEXCEL_S_CSTYLEX_FONT optional - !IP_FILL type ZEXCEL_S_CSTYLE_FILL optional - !IP_XFILL type ZEXCEL_S_CSTYLEX_FILL optional - !IP_BORDERS type ZEXCEL_S_CSTYLE_BORDERS optional - !IP_XBORDERS type ZEXCEL_S_CSTYLEX_BORDERS optional - !IP_ALIGNMENT type ZEXCEL_S_CSTYLE_ALIGNMENT optional - !IP_XALIGNMENT type ZEXCEL_S_CSTYLEX_ALIGNMENT optional - !IP_NUMBER_FORMAT_FORMAT_CODE type ZEXCEL_NUMBER_FORMAT optional - !IP_PROTECTION type ZEXCEL_S_CSTYLE_PROTECTION optional - !IP_XPROTECTION type ZEXCEL_S_CSTYLEX_PROTECTION optional - !IP_FONT_BOLD type FLAG optional - !IP_FONT_COLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_FONT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_FONT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_FONT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_FONT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_FONT_FAMILY type ZEXCEL_STYLE_FONT_FAMILY optional - !IP_FONT_ITALIC type FLAG optional - !IP_FONT_NAME type ZEXCEL_STYLE_FONT_NAME optional - !IP_FONT_SCHEME type ZEXCEL_STYLE_FONT_SCHEME optional - !IP_FONT_SIZE type ZEXCEL_STYLE_FONT_SIZE optional - !IP_FONT_STRIKETHROUGH type FLAG optional - !IP_FONT_UNDERLINE type FLAG optional - !IP_FONT_UNDERLINE_MODE type ZEXCEL_STYLE_FONT_UNDERLINE optional - !IP_FILL_FILLTYPE type ZEXCEL_FILL_TYPE optional - !IP_FILL_ROTATION type ZEXCEL_ROTATION optional - !IP_FILL_FGCOLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_FILL_FGCOLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_FILL_FGCOLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_FILL_FGCOLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_FILL_FGCOLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_FILL_BGCOLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_FILL_BGCOLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_FILL_BGCOLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_FILL_BGCOLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_FILL_BGCOLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_fill_gradtype_type type zexcel_s_gradient_type-type optional - !IP_fill_gradtype_degree type zexcel_s_gradient_type-degree optional - !IP_fill_gradtype_bottom type zexcel_s_gradient_type-bottom optional - !IP_fill_gradtype_top type zexcel_s_gradient_type-top optional - !IP_fill_gradtype_right type zexcel_s_gradient_type-right optional - !IP_fill_gradtype_left type zexcel_s_gradient_type-left optional - !IP_fill_gradtype_position1 type zexcel_s_gradient_type-position1 optional - !IP_fill_gradtype_position2 type zexcel_s_gradient_type-position2 optional - !IP_fill_gradtype_position3 type zexcel_s_gradient_type-position3 optional - !IP_BORDERS_ALLBORDERS type ZEXCEL_S_CSTYLE_BORDER optional - !IP_XBORDERS_ALLBORDERS type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_DIAGONAL type ZEXCEL_S_CSTYLE_BORDER optional - !IP_XBORDERS_DIAGONAL type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_DIAGONAL_MODE type ZEXCEL_DIAGONAL optional - !IP_BORDERS_DOWN type ZEXCEL_S_CSTYLE_BORDER optional - !IP_XBORDERS_DOWN type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_LEFT type ZEXCEL_S_CSTYLE_BORDER optional - !IP_XBORDERS_LEFT type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_RIGHT type ZEXCEL_S_CSTYLE_BORDER optional - !IP_XBORDERS_RIGHT type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_TOP type ZEXCEL_S_CSTYLE_BORDER optional - !IP_XBORDERS_TOP type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_ALIGNMENT_HORIZONTAL type ZEXCEL_ALIGNMENT optional - !IP_ALIGNMENT_VERTICAL type ZEXCEL_ALIGNMENT optional - !IP_ALIGNMENT_TEXTROTATION type ZEXCEL_TEXT_ROTATION optional - !IP_ALIGNMENT_WRAPTEXT type FLAG optional - !IP_ALIGNMENT_SHRINKTOFIT type FLAG optional - !IP_ALIGNMENT_INDENT type ZEXCEL_INDENT optional - !IP_PROTECTION_HIDDEN type ZEXCEL_CELL_PROTECTION optional - !IP_PROTECTION_LOCKED type ZEXCEL_CELL_PROTECTION optional - !IP_BORDERS_ALLBORDERS_STYLE type ZEXCEL_BORDER optional - !IP_BORDERS_ALLBORDERS_COLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_BORDERS_ALLBO_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_BORDERS_ALLBO_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_BORDERS_ALLBO_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_BORDERS_ALLBO_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_BORDERS_DIAGONAL_STYLE type ZEXCEL_BORDER optional - !IP_BORDERS_DIAGONAL_COLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_BORDERS_DIAGONAL_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_BORDERS_DIAGONAL_COLOR_INDE type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_BORDERS_DIAGONAL_COLOR_THEM type ZEXCEL_STYLE_COLOR_THEME optional - !IP_BORDERS_DIAGONAL_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_BORDERS_DOWN_STYLE type ZEXCEL_BORDER optional - !IP_BORDERS_DOWN_COLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_BORDERS_DOWN_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_BORDERS_DOWN_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_BORDERS_DOWN_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_BORDERS_DOWN_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_BORDERS_LEFT_STYLE type ZEXCEL_BORDER optional - !IP_BORDERS_LEFT_COLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_BORDERS_LEFT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_BORDERS_LEFT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_BORDERS_LEFT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_BORDERS_LEFT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_BORDERS_RIGHT_STYLE type ZEXCEL_BORDER optional - !IP_BORDERS_RIGHT_COLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_BORDERS_RIGHT_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_BORDERS_RIGHT_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_BORDERS_RIGHT_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_BORDERS_RIGHT_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - !IP_BORDERS_TOP_STYLE type ZEXCEL_BORDER optional - !IP_BORDERS_TOP_COLOR type ZEXCEL_S_STYLE_COLOR optional - !IP_BORDERS_TOP_COLOR_RGB type ZEXCEL_STYLE_COLOR_ARGB optional - !IP_BORDERS_TOP_COLOR_INDEXED type ZEXCEL_STYLE_COLOR_INDEXED optional - !IP_BORDERS_TOP_COLOR_THEME type ZEXCEL_STYLE_COLOR_THEME optional - !IP_BORDERS_TOP_COLOR_TINT type ZEXCEL_STYLE_COLOR_TINT optional - returning - value(EP_GUID) type ZEXCEL_CELL_STYLE - raising - ZCX_EXCEL . - methods CONSTRUCTOR - importing - !IP_EXCEL type ref to ZCL_EXCEL - !IP_TITLE type ZEXCEL_SHEET_TITLE optional - raising - ZCX_EXCEL . - methods DELETE_MERGE . - methods FREEZE_PANES - importing - !IP_NUM_COLUMNS type I optional - !IP_NUM_ROWS type I optional - raising - ZCX_EXCEL . - methods GET_ACTIVE_CELL - returning - value(EP_ACTIVE_CELL) type STRING - raising - ZCX_EXCEL . - methods GET_CELL - importing - !IP_COLUMN type SIMPLE - !IP_ROW type ZEXCEL_CELL_ROW - exporting - !EP_VALUE type ZEXCEL_CELL_VALUE - !EP_RC type SYSUBRC - !EP_STYLE type ref to ZCL_EXCEL_STYLE - !EP_GUID type ZEXCEL_CELL_STYLE - raising - ZCX_EXCEL . - methods GET_COLUMN_DIMENSION - importing - !IP_COLUMN type SIMPLE - returning - value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME - raising - ZCX_EXCEL . - methods GET_COLUMN_DIMENSIONS - returning - value(R_COLUMN_DIMENSION) type ZEXCEL_T_WORKSHEET_COLUMNDIME . - methods GET_COND_STYLES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_DATA_VALIDATIONS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_DATA_VALIDATIONS_SIZE - returning - value(EP_SIZE) type I . - methods GET_DEFAULT_COLUMN_DIMENSION - returning - value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME . - methods GET_DEFAULT_EXCEL_DATE_FORMAT - returning - value(EP_DEFAULT_EXCEL_DATE_FORMAT) type ZEXCEL_NUMBER_FORMAT . - methods GET_DEFAULT_EXCEL_TIME_FORMAT - returning - value(EP_DEFAULT_EXCEL_TIME_FORMAT) type ZEXCEL_NUMBER_FORMAT . - methods GET_DEFAULT_ROW_DIMENSION - returning - value(R_ROW_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . - methods GET_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING - raising - ZCX_EXCEL . - methods GET_DRAWINGS - importing - !IP_TYPE type ZEXCEL_DRAWING_TYPE optional - returning - value(R_DRAWINGS) type ref to ZCL_EXCEL_DRAWINGS . - methods GET_DRAWINGS_ITERATOR - importing - !IP_TYPE type ZEXCEL_DRAWING_TYPE - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_FREEZE_CELL - exporting - !EP_ROW type ZEXCEL_CELL_ROW - !EP_COLUMN type ZEXCEL_CELL_COLUMN . - methods GET_GUID - returning - value(EP_GUID) type UUID . - methods GET_HIGHEST_COLUMN - returning - value(R_HIGHEST_COLUMN) type ZEXCEL_CELL_COLUMN - raising - ZCX_EXCEL . - methods GET_HIGHEST_ROW - returning - value(R_HIGHEST_ROW) type INT4 - raising - ZCX_EXCEL . - methods GET_HYPERLINKS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_HYPERLINKS_SIZE - returning - value(EP_SIZE) type I . - methods GET_MERGE - returning - value(MERGE_RANGE) type STRING_TABLE - raising - ZCX_EXCEL . - methods GET_RANGES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_ROW_DIMENSION - importing - !IP_ROW type INT4 - returning - value(R_ROW_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . - methods GET_ROW_DIMENSIONS - returning - value(R_ROW_DIMENSION) type ZEXCEL_T_WORKSHEET_ROWDIMENSIO . - methods GET_TABCOLOR - returning - value(EV_TABCOLOR) type ZEXCEL_S_TABCOLOR . - methods GET_TABLES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_TABLES_SIZE - returning - value(EP_SIZE) type I . - methods GET_TITLE - importing - !IP_ESCAPED type FLAG default '' - returning - value(EP_TITLE) type ZEXCEL_SHEET_TITLE . - methods SET_CELL - importing - !IP_COLUMN type SIMPLE - !IP_ROW type ZEXCEL_CELL_ROW - !IP_VALUE type SIMPLE optional - !IP_FORMULA type ZEXCEL_CELL_FORMULA optional - !IP_STYLE type ZEXCEL_CELL_STYLE optional - !IP_HYPERLINK type ref to ZCL_EXCEL_HYPERLINK optional - !IP_DATA_TYPE type ZEXCEL_CELL_DATA_TYPE optional - !IP_ABAP_TYPE type ABAP_TYPEKIND optional - raising - ZCX_EXCEL . - methods SET_CELL_FORMULA - importing - !IP_COLUMN type SIMPLE - !IP_ROW type ZEXCEL_CELL_ROW - !IP_FORMULA type ZEXCEL_CELL_FORMULA - raising - ZCX_EXCEL . - methods SET_CELL_STYLE - importing - !IP_COLUMN type SIMPLE - !IP_ROW type ZEXCEL_CELL_ROW - !IP_STYLE type ZEXCEL_CELL_STYLE - raising - ZCX_EXCEL . - methods SET_COLUMN_WIDTH - importing - !IP_COLUMN type SIMPLE - !IP_WIDTH_FIX type SIMPLE default 0 - !IP_WIDTH_AUTOSIZE type FLAG default 'X' - raising - ZCX_EXCEL . - methods SET_DEFAULT_EXCEL_DATE_FORMAT - importing - !IP_DEFAULT_EXCEL_DATE_FORMAT type ZEXCEL_NUMBER_FORMAT - raising - ZCX_EXCEL . - methods SET_MERGE - importing - !IP_COLUMN_START type ZEXCEL_CELL_COLUMN_ALPHA optional - !IP_COLUMN_END type ZEXCEL_CELL_COLUMN_ALPHA optional - !IP_ROW type ZEXCEL_CELL_ROW optional - !IP_ROW_TO type ZEXCEL_CELL_ROW optional - raising - ZCX_EXCEL . - methods SET_PRINT_GRIDLINES - importing - !I_PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES . - methods SET_ROW_HEIGHT - importing - !IP_ROW type SIMPLE - !IP_HEIGHT_FIX type SIMPLE - raising - ZCX_EXCEL . - methods SET_SHOW_GRIDLINES - importing - !I_SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES . - methods SET_SHOW_ROWCOLHEADERS - importing - !I_SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_ROWCOLHEADER . - methods SET_TABCOLOR - importing - !IV_TABCOLOR type ZEXCEL_S_TABCOLOR . - methods SET_TABLE - importing - !IP_TABLE type STANDARD TABLE - !IP_HDR_STYLE type ZEXCEL_CELL_STYLE optional - !IP_BODY_STYLE type ZEXCEL_CELL_STYLE optional - !IP_TABLE_TITLE type STRING - !IP_TOP_LEFT_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA default 'B' - !IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3 - !IP_TRANSPOSE type XFELD optional - !IP_NO_HEADER type XFELD optional - raising - ZCX_EXCEL . - methods SET_TITLE - importing - !IP_TITLE type ZEXCEL_SHEET_TITLE - raising - ZCX_EXCEL . - methods IS_CELL_MERGED - importing - !IP_COLUMN type SIMPLE - !IP_ROW type ZEXCEL_CELL_ROW - returning - value(RP_IS_MERGED) type ABAP_BOOL - raising - ZCX_EXCEL . - protected section. - private section. - - types: - BEGIN OF mty_s_font_metric, + + + + + + + + + + + + + *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes @@ -664,49 +189,66 @@ CLASS lcl_gui_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid. ENDCLASS. "lcl_gui_alv_grid DEFINITION *"* use this source file for any macro definitions you need *"* in the implementation part of the class + + + + + + + + + + + + + + + + ABAP SLIS SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_COLUMNS. @@ -723,8 +265,7 @@ ENDCLASS. "lcl_gui_alv_grid DEFINITION me->print_title_set_range( ). - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~CLEAR_PRINT_REPEAT_ROWS. @@ -742,28 +283,25 @@ endmethod. me->print_title_set_range( ). - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_COLUMNS. ev_columns_from = me->print_title_col_from. ev_columns_to = me->print_title_col_to. - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~GET_PRINT_REPEAT_ROWS. ev_rows_from = me->print_title_row_from. ev_rows_to = me->print_title_row_to. - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_COLUMNS. *--------------------------------------------------------------------* * issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 +* - Stefan Schmöcker, 2012-12-02 *--------------------------------------------------------------------* DATA: lv_col_from_int TYPE i, @@ -806,14 +344,13 @@ endmethod. *--------------------------------------------------------------------* me->print_title_set_range( ). - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PRINTSETTINGS~SET_PRINT_REPEAT_ROWS. *--------------------------------------------------------------------* * issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 +* - Stefan Schmöcker, 2012-12-02 *--------------------------------------------------------------------* DATA: lv_errormessage TYPE string. @@ -853,8 +390,7 @@ endmethod. me->print_title_set_range( ). - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PROPERTIES~GET_STYLE. @@ -863,8 +399,7 @@ endmethod. ELSE. ep_style = me->excel->get_default_style( ). ENDIF. - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PROPERTIES~INITIALIZE. @@ -878,14 +413,12 @@ endmethod. ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_normal = 100. ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_pagelayoutview = 100 . ZIF_EXCEL_SHEET_PROPERTIES~zoomscale_sheetlayoutview = 100 . - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PROPERTIES~SET_STYLE. zif_excel_sheet_properties~style = ip_style. - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE. @@ -911,23 +444,20 @@ endmethod. me->zif_excel_sheet_protection~sheet = zif_excel_sheet_protection=>c_noactive. me->zif_excel_sheet_protection~sort = zif_excel_sheet_protection=>c_noactive. - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME. me->zif_excel_sheet_vba_project~codename = ip_codename. - -endmethod. + endmethod. method ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR. me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. - -endmethod. + endmethod. - - + + method ADD_DRAWING. CASE ip_drawing->get_type( ). WHEN zcl_excel_drawing=>type_image. @@ -935,43 +465,39 @@ endmethod. WHEN zcl_excel_drawing=>type_chart. charts->include( ip_drawing ). ENDCASE. - -endmethod. + endmethod. - - + + method ADD_NEW_CONDITIONAL_STYLE. CREATE OBJECT eo_conditional_style. conditional_styles->add( eo_conditional_style ). - -endmethod. + endmethod. - - + + method ADD_NEW_DATA_VALIDATION. CREATE OBJECT eo_data_validation. data_validations->add( eo_data_validation ). - -endmethod. + endmethod. - - + + method ADD_NEW_RANGE. * Create default blank range CREATE OBJECT eo_range. ranges->add( eo_range ). - -endmethod. + endmethod. - - - - - - - + + + + + + + method BIND_ALV. data: lo_converter type ref to zcl_excel_converter. @@ -992,29 +518,28 @@ endmethod. catch zcx_excel . endtry. - -endmethod. + endmethod. - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + method BIND_ALV_OLE2. *--------------------------------------------------------------------* * Method description: @@ -2570,7 +2095,7 @@ endmethod. search contentsitem-value for 'E'. if sy-fdpos eq 0. -* bring negative sign to front of amount +* use prefix notation for signed numbers translate contentsitem-value using '- '. condense contentsitem-value no-gaps. @@ -2584,8 +2109,8 @@ endmethod. set country space. * Hier wird nur die korrekte Kommaseparatierung gemacht, wenn die * Zeichen einer -* Zahl enthalten sind. Das ist f#ƒÂ#r Timestamps, die auch ":" enthalten. -* F#ƒÂ#r die +* Zahl enthalten sind. Das ist für Timestamps, die auch ":" enthalten. +* Für die * darf keine Kommaseparierung stattfinden. * Changing for correction request - Y6BK041073 if contentsitem-value co '0123456789.,-+E '. @@ -3082,19 +2607,18 @@ endmethod. li_document_size. close_document. - -endmethod. + endmethod. - - - - - - + + + + + + method BIND_TABLE. *--------------------------------------------------------------------* * issue #230 - Pimp my Code -* - Stefan Schmöcker, (wi p) 2012-12-01 +* - Stefan Schmöcker, (wi p) 2012-12-01 * - ... * aligning code * message made to support multilinguality @@ -3351,16 +2875,14 @@ endmethod. ENDIF. " << Issue #291 - -endmethod. + endmethod. - - - - - - method CALCULATE_CELL_WIDTH. -*--------------------------------------------------------------------* + + + + + + *--------------------------------------------------------------------* * issue #293 - Roberto Bianco * - Christian Assig 2014-03-14 * @@ -3370,6 +2892,7 @@ endmethod. * - Add additional width for auto filter buttons * - Add cell padding to simulate Excel behavior *--------------------------------------------------------------------* +METHOD calculate_cell_width. CONSTANTS: lc_default_font_name TYPE zexcel_style_font_name VALUE 'Calibri', "#EC NOTEXT @@ -3606,10 +3129,10 @@ endmethod. ADD 2 TO ep_width. ENDIF. -endmethod. +ENDMETHOD. - - + + method CALCULATE_COLUMN_WIDTHS. TYPES: BEGIN OF t_auto_size, @@ -3668,7 +3191,7 @@ endmethod. * ). * " For an easy start we just take the number of characters as the width * width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker +* " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker * " Calculate width using Font Size and Font Type * IF cell_style IS BOUND * AND cell_style->font IS BOUND. @@ -3690,120 +3213,110 @@ endmethod. ENDLOOP. ENDIF. - -endmethod. + endmethod. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - method CHANGE_CELL_STYLE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + METHOD change_cell_style. " issue # 139 DATA: stylemapping TYPE zexcel_s_stylemapping, @@ -4037,18 +3550,6 @@ endmethod. fill_bgcolor_theme fill-bgcolor-theme, fill_bgcolor_tint fill-bgcolor-tint, - fill_gradtype_type fill-gradtype-TYPE, - fill_gradtype_degree fill-gradtype-DEGREE, - fill_gradtype_bottom fill-gradtype-BOTTOM, - fill_gradtype_left fill-gradtype-LEFT, - fill_gradtype_top fill-gradtype-TOP, - fill_gradtype_right fill-gradtype-RIGHT, - fill_gradtype_position1 fill-gradtype-POSITION1, - fill_gradtype_position2 fill-gradtype-POSITION2, - fill_gradtype_position3 fill-gradtype-POSITION3, - - - borders_diagonal_mode borders-diagonal_mode, alignment_horizontal alignment-horizontal, alignment_vertical alignment-vertical, @@ -4111,12 +3612,12 @@ endmethod. ip_row = ip_row ip_style = ep_guid ). -endmethod. +ENDMETHOD. - - - - + + + + method CONSTRUCTOR. DATA: lv_title TYPE zexcel_sheet_title. @@ -4160,22 +3661,36 @@ endmethod. upper_cell-cell_row = 1. upper_cell-cell_column = 1. - -endmethod. + endmethod. - + method DELETE_MERGE. DELETE sheet_content_merge INDEX 1. DELETE sheet_content_merge INDEX 1. - -endmethod. + endmethod. - - - - + + + + + METHOD delete_row_outline. + + DELETE me->mt_row_outlines WHERE row_from = iv_row_from + AND row_to = iv_row_to. + IF sy-subrc <> 0. " didn't find outline that was to be deleted + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Row outline to be deleted does not exist'. + ENDIF. + +ENDMETHOD. + + + + + method FREEZE_PANES. data: lv_xsplit type i, lv_ysplit type i. @@ -4200,11 +3715,10 @@ endmethod. freeze_pane_cell_column = ip_num_columns + 1. freeze_pane_cell_row = ip_num_rows + 1. - -endmethod. + endmethod. - - + + method GENERATE_TITLE. DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, @@ -4236,12 +3750,11 @@ endmethod. ADD 1 TO sheetnumber. ENDDO. - -endmethod. + endmethod. - - - + + + method GET_ACTIVE_CELL. DATA: lv_active_column TYPE zexcel_cell_column_alpha, @@ -4253,17 +3766,16 @@ endmethod. SHIFT lv_active_row LEFT DELETING LEADING space. CONCATENATE lv_active_column lv_active_row INTO ep_active_cell. - -endmethod. + endmethod. - - - - - - - - + + + + + + + + method GET_CELL. DATA: lv_column TYPE zexcel_cell_column, @@ -4280,7 +3792,7 @@ endmethod. ep_value = ls_sheet_content-cell_value. ep_guid = ls_sheet_content-cell_style. " issue 139 - added this to be used for columnwidth calculation - " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker + " Addition to solve issue #120, contribution by Stefan Schm#ƒÂ#cker DATA: style_iterator TYPE REF TO cl_object_collection_iterator, style TYPE REF TO zcl_excel_style. IF ep_style IS REQUESTED. @@ -4293,13 +3805,12 @@ endmethod. ENDIF. ENDWHILE. ENDIF. - -endmethod. + endmethod. - - - - + + + + method GET_COLUMN_DIMENSION. FIELD-SYMBOLS: <fs_column_dimension> LIKE LINE OF column_dimensions. DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column @@ -4321,41 +3832,36 @@ endmethod. r_column_dimension = <fs_column_dimension>-column_dimension. ENDIF. - -endmethod. + endmethod. - - + + method GET_COLUMN_DIMENSIONS. r_column_dimension[] = me->column_dimensions[]. - -endmethod. + endmethod. - - + + method GET_COND_STYLES_ITERATOR. eo_iterator = me->conditional_styles->get_iterator( ). - -endmethod. + endmethod. - - + + method GET_DATA_VALIDATIONS_ITERATOR. eo_iterator = me->data_validations->get_iterator( ). - -endmethod. + endmethod. - - + + method GET_DATA_VALIDATIONS_SIZE. ep_size = me->data_validations->size( ). - -endmethod. + endmethod. - - + + method GET_DEFAULT_COLUMN_DIMENSION. IF me->default_column_dimension IS NOT BOUND. CREATE OBJECT me->default_column_dimension @@ -4366,11 +3872,10 @@ endmethod. ENDIF. r_column_dimension = me->default_column_dimension. - -endmethod. + endmethod. - - + + method GET_DEFAULT_EXCEL_DATE_FORMAT. CONSTANTS: c_lang_e TYPE lang VALUE 'E'. @@ -4393,11 +3898,10 @@ endmethod. ENDIF. ep_default_excel_date_format = default_excel_date_format. - -endmethod. + endmethod. - - + + method GET_DEFAULT_EXCEL_TIME_FORMAT. DATA: l_timefm TYPE xutimefm. @@ -4430,23 +3934,21 @@ endmethod. ENDCASE. ep_default_excel_time_format = default_excel_time_format. - -endmethod. + endmethod. - - + + method GET_DEFAULT_ROW_DIMENSION. IF me->default_row_dimension IS NOT BOUND. CREATE OBJECT me->default_row_dimension. ENDIF. r_row_dimension = me->default_row_dimension. - -endmethod. + endmethod. - - - + + + method GET_DIMENSION_RANGE. me->update_dimension_range( ). @@ -4462,12 +3964,11 @@ endmethod. CONCATENATE upper_cell-cell_coords ':' lower_cell-cell_coords INTO ep_dimension_range. ENDIF. - -endmethod. + endmethod. - - - + + + method GET_DRAWINGS. DATA: lo_drawing TYPE REF TO zcl_excel_drawing, @@ -4495,12 +3996,11 @@ endmethod. ENDWHILE. WHEN OTHERS. ENDCASE. - -endmethod. + endmethod. - - - + + + method GET_DRAWINGS_ITERATOR. CASE ip_type. WHEN zcl_excel_drawing=>type_image. @@ -4508,62 +4008,55 @@ endmethod. WHEN zcl_excel_drawing=>type_chart. eo_iterator = charts->get_iterator( ). ENDCASE. - -endmethod. + endmethod. - - - + + + method GET_FREEZE_CELL. ep_row = me->freeze_pane_cell_row. ep_column = me->freeze_pane_cell_column. - -endmethod. + endmethod. - - - method GET_GUID. + + + METHOD get_guid. ep_guid = me->guid. - -endmethod. +ENDMETHOD. - - - + + + method GET_HIGHEST_COLUMN. me->update_dimension_range( ). r_highest_column = me->lower_cell-cell_column. - -endmethod. + endmethod. - - - - method GET_HIGHEST_ROW. + + + + METHOD get_highest_row. me->update_dimension_range( ). r_highest_row = me->lower_cell-cell_row. - -endmethod. +ENDMETHOD. - - + + method GET_HYPERLINKS_ITERATOR. eo_iterator = hyperlinks->get_iterator( ). - -endmethod. + endmethod. - - + + method GET_HYPERLINKS_SIZE. ep_size = hyperlinks->size( ). - -endmethod. + endmethod. - - - + + + method GET_MERGE. DATA: lv_column_start TYPE string, @@ -4635,72 +4128,78 @@ endmethod. * SEPARATED BY ':'. * ENDIF. - -endmethod. + endmethod. - - + + method GET_RANGES_ITERATOR. eo_iterator = me->ranges->get_iterator( ). - -endmethod. + endmethod. - - - - method GET_ROW_DIMENSION. - FIELD-SYMBOLS: <fs_row_dimension> LIKE LINE OF row_dimensions. + + + + METHOD GET_ROW_DIMENSION. - READ TABLE me->row_dimensions ASSIGNING <fs_row_dimension> - WITH KEY row = ip_row. + FIELD-SYMBOLS: <ls_row_dimension> LIKE LINE OF me->row_dimensions. - IF NOT <fs_row_dimension> IS ASSIGNED. + DATA: ls_row_dimension LIKE LINE OF me->row_dimensions. + + READ TABLE me->row_dimensions ASSIGNING <ls_row_dimension> + WITH TABLE KEY row = ip_row. + + IF NOT <ls_row_dimension> IS ASSIGNED. CREATE OBJECT r_row_dimension EXPORTING ip_index = ip_row. - APPEND INITIAL LINE TO me->row_dimensions ASSIGNING <fs_row_dimension>. - <fs_row_dimension>-row = ip_row. - <fs_row_dimension>-row_dimension = r_row_dimension. + ls_row_dimension-row = ip_row. + ls_row_dimension-row_dimension = r_row_dimension. + INSERT ls_row_dimension INTO TABLE me->row_dimensions. ELSE. - r_row_dimension = <fs_row_dimension>-row_dimension. + r_row_dimension = <ls_row_dimension>-row_dimension. ENDIF. - -endmethod. +ENDMETHOD. - - - method GET_ROW_DIMENSIONS. + + + METHOD get_row_dimensions. + r_row_dimension[] = me->row_dimensions[]. -endmethod. +ENDMETHOD. - - + + + METHOD get_row_outlines. + + rt_row_outlines = me->mt_row_outlines. + +ENDMETHOD. + + + method GET_TABCOLOR. ev_tabcolor = me->tabcolor. - -endmethod. + endmethod. - - + + method GET_TABLES_ITERATOR. eo_iterator = tables->if_object_collection~get_iterator( ). - -endmethod. + endmethod. - - + + method GET_TABLES_SIZE. ep_size = tables->if_object_collection~size( ). - -endmethod. + endmethod. - - - + + + method GET_TITLE. DATA lv_value TYPE string. IF ip_escaped EQ abap_true. @@ -4709,13 +4208,12 @@ endmethod. ELSE. ep_title = me->title. ENDIF. - -endmethod. + endmethod. - - - - + + + + method GET_VALUE_TYPE. DATA: lo_addit TYPE REF TO cl_abap_elemdescr, ls_dfies TYPE dfies, @@ -4767,14 +4265,13 @@ endmethod. ENDIF. ENDIF. - -endmethod. + endmethod. - - - - - + + + + + method IS_CELL_MERGED. DATA lt_merge_range TYPE string_table. @@ -4794,11 +4291,11 @@ endmethod. ENDLOOP. endmethod. - + method PRINT_TITLE_SET_RANGE. *--------------------------------------------------------------------* * issue#235 - repeat rows/columns -* - Stefan Schmöcker, 2012-12-02 +* - Stefan Schmoecker, 2012-12-02 *--------------------------------------------------------------------* @@ -4891,19 +4388,18 @@ endmethod. - -endmethod. + endmethod. - - - - - - - - - - + + + + + + + + + + method SET_CELL. DATA: lv_column TYPE zexcel_cell_column, @@ -4934,7 +4430,7 @@ endmethod. * Begin of change issue #152 - don't touch exisiting style if only value is passed * lv_style_guid = ip_style. lv_column = zcl_excel_common=>convert_column2int( ip_column ). - READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 + READ TABLE sheet_content ASSIGNING <fs_sheet_content> WITH TABLE KEY cell_row = ip_row " Changed to access via table key , Stefan Schmöcker, 2013-08-03 cell_column = lv_column. IF sy-subrc = 0. IF ip_style IS INITIAL. @@ -5128,14 +4624,13 @@ endmethod. ENDIF. * End of Fix issue #162 - -endmethod. + endmethod. - - - - - + + + + + method SET_CELL_FORMULA. DATA: lv_column TYPE zexcel_cell_column, @@ -5163,14 +4658,13 @@ endmethod. <sheet_content>-cell_formula = ip_formula. - -endmethod. + endmethod. - - - - - + + + + + method SET_CELL_STYLE. DATA: lv_column TYPE zexcel_cell_column, @@ -5194,14 +4688,13 @@ endmethod. set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). ENDIF. - -endmethod. + endmethod. - - - - - + + + + + method SET_COLUMN_WIDTH. DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. DATA: width TYPE float. @@ -5231,12 +4724,11 @@ endmethod. column_dimension->set_auto_size( ip_width_autosize ). - -endmethod. + endmethod. - - - + + + method SET_DEFAULT_EXCEL_DATE_FORMAT. IF ip_default_excel_date_format IS INITIAL. @@ -5246,15 +4738,14 @@ endmethod. ENDIF. default_excel_date_format = ip_default_excel_date_format. - -endmethod. + endmethod. - - - - - - + + + + + + method SET_MERGE. DATA: lv_column_start TYPE zexcel_cell_column, @@ -5289,20 +4780,18 @@ endmethod. CONCATENATE ip_column_end lv_row_alpha INTO ls_sheet_content-cell_coords. INSERT ls_sheet_content INTO TABLE sheet_content_merge. - -endmethod. + endmethod. - - + + method SET_PRINT_GRIDLINES. me->print_gridlines = i_print_gridlines. - -endmethod. + endmethod. - - - - + + + + method SET_ROW_HEIGHT. DATA: row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. DATA: height TYPE float. @@ -5328,40 +4817,78 @@ endmethod. - -endmethod. + endmethod. - - + + + + + + METHOD set_row_outline. + + DATA: ls_row_outline LIKE LINE OF me->mt_row_outlines. + FIELD-SYMBOLS: <ls_row_outline> LIKE LINE OF me->mt_row_outlines. + + READ TABLE me->mt_row_outlines ASSIGNING <ls_row_outline> WITH TABLE KEY row_from = iv_row_from + row_to = iv_row_to. + IF sy-subrc <> 0. + IF iv_row_from <= 0. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'First row of outline must be a positive number'. + ENDIF. + IF iv_row_to < iv_row_from. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Last row of outline may not be less than first line of outline'. + ENDIF. + ls_row_outline-row_from = iv_row_from. + ls_row_outline-row_to = iv_row_to. + INSERT ls_row_outline INTO TABLE me->mt_row_outlines ASSIGNING <ls_row_outline>. + ENDIF. + + CASE iv_collapsed. + + WHEN abap_true + OR abap_false. + <ls_row_outline>-collapsed = iv_collapsed. + + WHEN OTHERS. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Unknown collapse state'. + + ENDCASE. +ENDMETHOD. + + + method SET_SHOW_GRIDLINES. me->show_gridlines = i_show_gridlines. - -endmethod. + endmethod. - - + + method SET_SHOW_ROWCOLHEADERS. me->show_rowcolheaders = i_show_rowcolheaders. - -endmethod. + endmethod. - - + + method SET_TABCOLOR. me->tabcolor = iv_tabcolor. - -endmethod. + endmethod. - - - - - - - - - - + + + + + + + + + + method SET_TABLE. DATA: lo_tabdescr TYPE REF TO cl_abap_structdescr, @@ -5434,29 +4961,28 @@ endmethod. ENDIF. ENDLOOP. - -endmethod. + endmethod. - - - + + + method SET_TITLE. *--------------------------------------------------------------------* * ToDos: -* 2do§1 The current coding for replacing a named ranges name +* 2do§1 The current coding for replacing a named ranges name * after renaming a sheet should be checked if it is * really working if sheetname should be escaped *--------------------------------------------------------------------* *--------------------------------------------------------------------* * issue #230 - Pimp my Code -* - Stefan Schmöcker, (wip ) 2012-12-08 +* - Stefan Schmoecker, (wip ) 2012-12-08 * - ... * changes: aligning code * message made to support multilinguality *--------------------------------------------------------------------* * issue#243 - ' is not allowed as first character in sheet title -* - Stefan Schmöcker, 2012-12-02 +* - Stefan Schmoecker, 2012-12-02 * changes: added additional check for ' as first character *--------------------------------------------------------------------* DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, @@ -5519,7 +5045,7 @@ endmethod. * After changing this worksheet's title we have to adjust * all ranges that are referring to this worksheet. *--------------------------------------------------------------------* -* 2do§1 - Check if the following quickfix is solid +* 2do§1 - Check if the following quickfix is solid * I fear it isn't - but this implementation is better then * nothing at all since it handles a supposed majority of cases *--------------------------------------------------------------------* @@ -5538,12 +5064,11 @@ endmethod. ENDWHILE. - -endmethod. + endmethod. - - - method UPDATE_DIMENSION_RANGE. + + + METHOD update_dimension_range. DATA: ls_sheet_content TYPE zexcel_s_cell_data, lt_sheet_content TYPE zexcel_t_cell_data_unsorted, @@ -5582,7 +5107,6 @@ endmethod. SHIFT lv_row_alpha LEFT DELETING LEADING space. CONCATENATE lv_column_alpha lv_row_alpha INTO lower_cell-cell_coords. - -endmethod. +ENDMETHOD. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk index 13bfd07..bdcd5ab 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk @@ -1,132 +1,6 @@ - - - - *----------------------------------------------------------------------* -* CLASS ZCL_EXCEL_WRITER_2007 DEFINITION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -class ZCL_EXCEL_WRITER_2007 definition - public - create public . - -public section. - - interfaces ZIF_EXCEL_WRITER . - protected section. - - constants C_CONTENT_TYPES type STRING value '[Content_Types].xml'. "#EC NOTEXT - constants C_DOCPROPS_APP type STRING value 'docProps/app.xml'. "#EC NOTEXT - constants C_DOCPROPS_CORE type STRING value 'docProps/core.xml'. "#EC NOTEXT - constants C_RELATIONSHIPS type STRING value '_rels/.rels'. "#EC NOTEXT - constants C_XL_DRAWINGS type STRING value 'xl/drawings/drawing#.xml'. "#EC NOTEXT - constants C_XL_DRAWINGS_RELS type STRING value 'xl/drawings/_rels/drawing#.xml.rels'. "#EC NOTEXT - constants C_XL_RELATIONSHIPS type STRING value 'xl/_rels/workbook.xml.rels'. "#EC NOTEXT - constants C_XL_SHAREDSTRINGS type STRING value 'xl/sharedStrings.xml'. "#EC NOTEXT - constants C_XL_CALCCHAIN type STRING value 'xl/calcChain.xml'. "#EC NOTEXT - constants C_XL_SHEET type STRING value 'xl/worksheets/sheet#.xml'. "#EC NOTEXT - constants C_XL_SHEET_RELS type STRING value 'xl/worksheets/_rels/sheet#.xml.rels'. "#EC NOTEXT - constants C_XL_STYLES type STRING value 'xl/styles.xml'. "#EC NOTEXT - constants C_XL_THEME type STRING value 'xl/theme/theme1.xml'. "#EC NOTEXT - constants C_XL_WORKBOOK type STRING value 'xl/workbook.xml'. "#EC NOTEXT - data EXCEL type ref to ZCL_EXCEL . - constants C_XL_PRINTERSETTINGS type STRING value 'xl/printerSettings/printerSettings#.bin'. "#EC NOTEXT - - methods CREATE - returning - value(EP_EXCEL) type XSTRING . - methods CREATE_CONTENT_TYPES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_APP - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_DOCPROPS_CORE - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_CHARTS - importing - !IO_DRAWING type ref to ZCL_EXCEL_DRAWING - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_DRAWINGS - importing - !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_DRAWING_ANCHOR - importing - !IO_DRAWING type ref to ZCL_EXCEL_DRAWING - !IO_DOCUMENT type ref to IF_IXML_DOCUMENT - !IP_INDEX type I - returning - value(EP_ANCHOR) type ref to IF_IXML_ELEMENT . - methods CREATE_XL_DRAWINGS_RELS - importing - !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_RELATIONSHIPS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHAREDSTRINGS - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_SHEET - importing - !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - !IV_ACTIVE type FLAG default '' - returning - value(EP_CONTENT) type XSTRING - raising - ZCX_EXCEL . - methods CREATE_XL_SHEET_RELS - importing - !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - !IV_DRAWING_INDEX type I - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_STYLES - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_STYLES_COLOR_NODE - importing - !IO_DOCUMENT type ref to IF_IXML_DOCUMENT - !IO_PARENT type ref to IF_IXML_ELEMENT - !IV_COLOR_ELEM_NAME type STRING default 'color' - !IS_COLOR type ZEXCEL_S_STYLE_COLOR . - methods CREATE_XL_TABLE - importing - !IO_TABLE type ref to ZCL_EXCEL_TABLE - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_THEME - returning - value(EP_CONTENT) type XSTRING . - methods CREATE_XL_WORKBOOK - returning - value(EP_CONTENT) type XSTRING . - private section. - - constants C_OFF type STRING value '0'. "#EC NOTEXT - constants C_ON type STRING value '1'. "#EC NOTEXT - data SHARED_STRINGS type ZEXCEL_T_SHARED_STRING . - data STYLES_COND_MAPPING type ZEXCEL_T_STYLES_COND_MAPPING . - data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING . - - methods FLAG2BOOL - importing - !IP_FLAG type FLAG - returning - value(EP_BOOLEAN) type CHAR5 . - methods GET_SHARED_STRING_INDEX - importing - !IP_CELL_VALUE type ZEXCEL_CELL_VALUE - returning - value(EP_INDEX) type INT4 . + + + *"* local class implementation for public class *"* use this source file for the implementation part of *"* local helper classes @@ -135,37 +9,36 @@ public section. *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + method ZIF_EXCEL_WRITER~WRITE_FILE. me->excel = io_excel. ep_file = me->create( ). - -endmethod. + endmethod. - - + + method CREATE. * Office 2007 file format is a cab of several xml files with extension .xlsx @@ -359,11 +232,10 @@ endmethod. * STEP 12: Create the final zip ep_excel = lo_zip->save( ). - -endmethod. + endmethod. - - + + method CREATE_CONTENT_TYPES. @@ -635,11 +507,10 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - + + method CREATE_DOCPROPS_APP. @@ -859,11 +730,10 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - + + method CREATE_DOCPROPS_CORE. @@ -994,11 +864,10 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - + + method CREATE_RELATIONSHIPS. @@ -1094,12 +963,11 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - - + + + method CREATE_XL_CHARTS. @@ -2000,12 +1868,11 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - - + + + method CREATE_XL_DRAWINGS. @@ -2081,12 +1948,11 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - - + + + method CREATE_XL_DRAWINGS_RELS. ** Constant node name @@ -2181,14 +2047,13 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - - - - + + + + + method CREATE_XL_DRAWING_ANCHOR. ** Constant node name @@ -2496,11 +2361,10 @@ endmethod. parent = io_document ). ep_anchor->append_child( new_child = lo_element_clientdata ). - -endmethod. + endmethod. - - + + method CREATE_XL_RELATIONSHIPS. @@ -2645,11 +2509,10 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - + + method CREATE_XL_SHAREDSTRINGS. @@ -2767,22 +2630,21 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - - - - - method CREATE_XL_SHEET. + + + + + + METHOD create_xl_sheet. *--------------------------------------------------------------------* * issue #330 - Adding ColorScale conditional formatting * - Ivan Femia, 2014-08-25 *--------------------------------------------------------------------* TYPES: BEGIN OF colors, - colorrgb TYPE zexcel_color, + colorrgb TYPE zexcel_color, END OF colors. *--------------------------------------------------------------------* @@ -2791,22 +2653,25 @@ endmethod. *--------------------------------------------------------------------* TYPES: BEGIN OF cfvo, - value TYPE zexcel_conditional_value, - type TYPE zexcel_conditional_type, + value TYPE zexcel_conditional_value, + type TYPE zexcel_conditional_type, END OF cfvo. *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - start *--------------------------------------------------------------------* TYPES: BEGIN OF lty_table_area, - left TYPE i, - right TYPE i, - top TYPE i, - bottom TYPE i, + left TYPE i, + right TYPE i, + top TYPE i, + bottom TYPE i, END OF lty_table_area. *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 1 - end *--------------------------------------------------------------------* +** Constants + CONSTANTS: + lc_dummy_cell_content TYPE zexcel_s_cell_data-cell_value VALUE '})~~~ This is a dummy value for ABAP2XLSX and you should never find this in a real excelsheet Ihope'. ** Constant node name @@ -2954,11 +2819,11 @@ endmethod. lc_xml_attr_tabcolor_rgb TYPE string VALUE 'rgb', lc_xml_attr_tabcolor_theme TYPE string VALUE 'theme', " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - lc_xml_node_comp_pref TYPE string VALUE 'x14ac', - lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. + lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + lc_xml_node_r_ns TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + lc_xml_node_comp_ns TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', + lc_xml_node_comp_pref TYPE string VALUE 'x14ac', + lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. DATA: lo_ixml TYPE REF TO if_ixml, lo_document TYPE REF TO if_ixml_document, @@ -2976,6 +2841,7 @@ endmethod. lo_data_validation TYPE REF TO zcl_excel_data_validation, lo_table TYPE REF TO zcl_excel_table, row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, + lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. @@ -3008,6 +2874,13 @@ endmethod. lv_relation_id TYPE i VALUE 0, outline_level_row TYPE i VALUE 0, outline_level_col TYPE i VALUE 0, + lv_current_row TYPE i, + lv_next_row TYPE i, + ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, + ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, + lv_last_row TYPE i, + lts_row_dimensions TYPE zexcel_t_worksheet_rowdimensio, + lts_row_outlines TYPE zcl_excel_worksheet=>mty_ts_outlines_row, col_count TYPE int4, merge_count TYPE int4, write_current_row TYPE boolean, @@ -3025,7 +2898,8 @@ endmethod. FIELD-SYMBOLS: <ls_sheet_content> TYPE zexcel_s_cell_data, <fs_range_merge> LIKE LINE OF lt_range_merge, <column_dimension> TYPE zexcel_s_worksheet_columndime, - <row_dimension> TYPE zexcel_s_worksheet_rowdimensio. + <row_dimension> TYPE zexcel_s_worksheet_rowdimensio, + <ls_row_outline> LIKE LINE OF lts_row_outlines. *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Declarations 2 - start @@ -3289,16 +3163,19 @@ endmethod. ENDIF. ENDIF. " outlineLevelRow - LOOP AT row_dimensions ASSIGNING <row_dimension>. - IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. - outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - lv_value = outline_level_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow - value = lv_value ). +* Excel is recalculating the outlinelevel on startup from the outline levels found in the rows +* If we place anything incorrect here it gets corrected, if don't place anything it gets added +* So no need to calculate the outlinelevel here ( at least for rows - probably for columns as well but I haven't tested yet +* LOOP AT row_dimensions ASSIGNING <row_dimension>. +* IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row. +* outline_level_row = <row_dimension>-row_dimension->get_outline_level( ). +* ENDIF. +* ENDLOOP. +* lv_value = outline_level_row. +* SHIFT lv_value RIGHT DELETING TRAILING space. +* SHIFT lv_value LEFT DELETING LEADING space. +* lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow +* value = lv_value ). " outlineLevelCol LOOP AT column_dimensions ASSIGNING <column_dimension>. IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col. @@ -3490,80 +3367,150 @@ endmethod. *--------------------------------------------------------------------* * issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end *--------------------------------------------------------------------* +* We have problems when the first rows or trailing rows are not set but we have rowinformation +* to solve this we add dummycontent into first and last line that will not be set +* Set first line if necessary + READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. + IF sy-subrc <> 0. + ls_sheet_content_empty-cell_row = 1. + ls_sheet_content_empty-cell_column = 1. + ls_sheet_content_empty-cell_value = lc_dummy_cell_content. + INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. + ENDIF. +* Set last line if necessary +* Last row with cell content + lv_last_row = io_worksheet->get_highest_row( ). +* Last line with row-information set directly ( like line height, hidden-status ... ) + lts_row_dimensions = io_worksheet->get_row_dimensions( ). + SORT lts_row_dimensions BY row DESCENDING. + READ TABLE lts_row_dimensions INDEX 1 ASSIGNING <row_dimension>. + IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row. + lv_last_row = <row_dimension>-row. + ENDIF. +* Last line with row-information set indirectly by row outline + lts_row_outlines = io_worksheet->get_row_outlines( ). + LOOP AT lts_row_outlines ASSIGNING <ls_row_outline>. + IF <ls_row_outline>-collapsed = 'X'. + lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row + ELSE. + lv_current_row = <ls_row_outline>-row_to. " collapsed-status may be set on following row + ENDIF. + IF lv_current_row > lv_last_row. + lv_last_row = lv_current_row. + ENDIF. + ENDLOOP. + READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. + IF sy-subrc <> 0. + ls_sheet_content_empty-cell_row = lv_last_row. + ls_sheet_content_empty-cell_column = 1. + ls_sheet_content_empty-cell_value = lc_dummy_cell_content. + INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. + ENDIF. - LOOP AT io_worksheet->sheet_content ASSIGNING <ls_sheet_content>. + + CLEAR ls_sheet_content. + LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. CLEAR l_autofilter_hidden. ENDIF. CLEAR ls_style_mapping. - IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - IF lo_autofilter IS BOUND. - IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header - ls_area-row_end < ls_last_row-cell_row . +* Create row element +* issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row +* Get next line that may have to be added. If we have empty lines this is the next line after previous cell content +* Otherwise it is the line of the current cell content + lv_current_row = ls_last_row-cell_row + 1. + IF lv_current_row > ls_sheet_content-cell_row. + lv_current_row = ls_sheet_content-cell_row. + ENDIF. +* Fill in empty lines if necessary - assign an emtpy sheet content + lv_next_row = lv_current_row. + WHILE lv_next_row <= ls_sheet_content-cell_row. + lv_current_row = lv_next_row. + lv_next_row = lv_current_row + 1. + IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row + ASSIGN ls_sheet_content TO <ls_sheet_content>. + ELSE. +* Check if empty row is really necessary - this is basically the case when we have information in row_dimension + lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). + CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR + lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR + lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR + lo_row_dim_empty->get_xf_index( ) <> 0. + " Dummyentry A1 + ls_sheet_content_empty-cell_row = lv_current_row. + ls_sheet_content_empty-cell_column = 1. + ASSIGN ls_sheet_content_empty TO <ls_sheet_content>. + ENDIF. + + IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. + IF lo_autofilter IS BOUND. + IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header + ls_area-row_end < ls_last_row-cell_row . + CLEAR l_autofilter_hidden. + ENDIF. + ELSE. CLEAR l_autofilter_hidden. ENDIF. - ELSE. - CLEAR l_autofilter_hidden. - ENDIF. - IF ls_last_row-cell_row IS NOT INITIAL. - " Row visibility of previos row. - IF row_dimension->get_visible( ) = abap_false OR - l_autofilter_hidden = abap_true. - lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). + IF ls_last_row-cell_row IS NOT INITIAL. + " Row visibility of previos row. + IF row_dimension->get_visible( io_worksheet ) = abap_false OR + l_autofilter_hidden = abap_true. + lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). + ENDIF. + lo_element->append_child( new_child = lo_element_2 ). " row node ENDIF. - lo_element->append_child( new_child = lo_element_2 ). " row node - ENDIF. - " Add new row - lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). - " r - lv_value = <ls_sheet_content>-cell_row. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. + " Add new row + lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row + parent = lo_document ). + " r + lv_value = <ls_sheet_content>-cell_row. + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_r - value = lv_value ). - " Spans - lv_value = col_count. - CONCATENATE '1:' lv_value INTO lv_value. - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = lc_xml_attr_spans - value = lv_value ). - row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). - " Do we need the row dimension attributes? - IF row_dimension->get_row_height( ) >= 0 OR - row_dimension->get_collapsed( ) = abap_true OR - row_dimension->get_outline_level( ) > 0 OR - row_dimension->get_xf_index( ) <> 0 OR - l_autofilter_hidden = abap_true. - " Row dimensions - IF row_dimension->get_row_height( ) >= 0. - lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). - lv_value = row_dimension->get_row_height( ). - lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). - ENDIF. - " Collapsed - IF row_dimension->get_collapsed( ) = abap_true. - lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). - ENDIF. - " Outline level - IF row_dimension->get_outline_level( ) > 0. - lv_value = row_dimension->get_outline_level( ). - SHIFT lv_value RIGHT DELETING TRAILING space. - SHIFT lv_value LEFT DELETING LEADING space. - lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). - ENDIF. - " Style - IF row_dimension->get_xf_index( ) <> 0. - lv_value = row_dimension->get_xf_index( ). - lo_element_2->set_attribute_ns( name = 's' value = lv_value ). - lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). + lo_element_2->set_attribute_ns( name = lc_xml_attr_r + value = lv_value ). + " Spans + lv_value = col_count. + CONCATENATE '1:' lv_value INTO lv_value. + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + lo_element_2->set_attribute_ns( name = lc_xml_attr_spans + value = lv_value ). + row_dimension = io_worksheet->get_row_dimension( <ls_sheet_content>-cell_row ). + " Do we need the row dimension attributes? + IF row_dimension->get_row_height( ) >= 0 OR + row_dimension->get_collapsed( io_worksheet ) = abap_true OR + row_dimension->get_outline_level( io_worksheet ) > 0 OR + row_dimension->get_xf_index( ) <> 0 OR + l_autofilter_hidden = abap_true. + " Row dimensions + IF row_dimension->get_row_height( ) >= 0. + lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). + lv_value = row_dimension->get_row_height( ). + lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). + ENDIF. + " Collapsed + IF row_dimension->get_collapsed( io_worksheet ) = abap_true. + lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). + ENDIF. + " Outline level + IF row_dimension->get_outline_level( io_worksheet ) > 0. + lv_value = row_dimension->get_outline_level( io_worksheet ). + SHIFT lv_value RIGHT DELETING TRAILING space. + SHIFT lv_value LEFT DELETING LEADING space. + lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). + ENDIF. + " Style + IF row_dimension->get_xf_index( ) <> 0. + lv_value = row_dimension->get_xf_index( ). + lo_element_2->set_attribute_ns( name = 's' value = lv_value ). + lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). + ENDIF. ENDIF. + l_autofilter_hidden = abap_true. " First default is not showing ENDIF. - l_autofilter_hidden = abap_true. " First default is not showing - ENDIF. + ENDWHILE. lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c parent = lo_document ). @@ -3631,7 +3578,8 @@ endmethod. CONDENSE lv_value. lo_element_4->set_value( value = lv_value ). lo_element_3->append_child( new_child = lo_element_4 ). " fomula node - ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL. "cell can have just style or formula + ELSEIF <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula + AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content. IF <ls_sheet_content>-data_type IS NOT INITIAL. IF <ls_sheet_content>-data_type EQ 's_leading_blanks'. lo_element_3->set_attribute_ns( name = lc_xml_attr_t @@ -3646,7 +3594,7 @@ endmethod. lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v parent = lo_document ). - IF <ls_sheet_content>-data_type EQ 's' or <ls_sheet_content>-data_type EQ 's_leading_blanks'. + IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'. lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). CONDENSE lv_value. lo_element_4->set_value( value = lv_value ). @@ -3682,6 +3630,7 @@ endmethod. ENDIF. lo_element->append_child( new_child = lo_element_2 ). " row node ENDIF. + DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries lo_element_root->append_child( new_child = lo_element ). " sheetData node @@ -4175,7 +4124,7 @@ endmethod. " Hyperlinks DATA: lv_hyperlinks_count TYPE i, - lo_link TYPE REF TO zcl_excel_hyperlink. + lo_link TYPE REF TO zcl_excel_hyperlink. lv_hyperlinks_count = io_worksheet->get_hyperlinks_size( ). IF lv_hyperlinks_count > 0. @@ -4505,46 +4454,46 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -endmethod. +ENDMETHOD. - - - - - method CREATE_XL_SHEET_RELS. + + + + + METHOD create_xl_sheet_rels. ** Constant node name - DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', - lc_xml_node_relationship TYPE string VALUE 'Relationship', + DATA: lc_xml_node_relationships TYPE string VALUE 'Relationships', + lc_xml_node_relationship TYPE string VALUE 'Relationship', " Node attributes - lc_xml_attr_id TYPE string VALUE 'Id', - lc_xml_attr_type TYPE string VALUE 'Type', - lc_xml_attr_target TYPE string VALUE 'Target', - lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', - lc_xml_val_external TYPE string VALUE 'External', + lc_xml_attr_id TYPE string VALUE 'Id', + lc_xml_attr_type TYPE string VALUE 'Type', + lc_xml_attr_target TYPE string VALUE 'Target', + lc_xml_attr_target_mode TYPE string VALUE 'TargetMode', + lc_xml_val_external TYPE string VALUE 'External', " Node namespace - lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', - lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. + lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', + lc_xml_node_rid_table_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table', + lc_xml_node_rid_printer_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', + lc_xml_node_rid_drawing_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', + lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, - lo_element_root TYPE REF TO if_ixml_element, - lo_element TYPE REF TO if_ixml_element, - lo_encoding TYPE REF TO if_ixml_encoding, - lo_streamfactory TYPE REF TO if_ixml_stream_factory, - lo_ostream TYPE REF TO if_ixml_ostream, - lo_renderer TYPE REF TO if_ixml_renderer, - lo_iterator TYPE REF TO cl_object_collection_iterator, - lo_table TYPE REF TO zcl_excel_table, - lo_link TYPE REF TO zcl_excel_hyperlink. + DATA: lo_ixml TYPE REF TO if_ixml, + lo_document TYPE REF TO if_ixml_document, + lo_element_root TYPE REF TO if_ixml_element, + lo_element TYPE REF TO if_ixml_element, + lo_encoding TYPE REF TO if_ixml_encoding, + lo_streamfactory TYPE REF TO if_ixml_stream_factory, + lo_ostream TYPE REF TO if_ixml_ostream, + lo_renderer TYPE REF TO if_ixml_renderer, + lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_table TYPE REF TO zcl_excel_table, + lo_link TYPE REF TO zcl_excel_hyperlink. - DATA: lv_value TYPE string, - lv_relation_id TYPE i, - lv_index_str TYPE string. + DATA: lv_value TYPE string, + lv_relation_id TYPE i, + lv_index_str TYPE string. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP @@ -4573,6 +4522,7 @@ endmethod. lo_iterator = io_worksheet->get_hyperlinks_iterator( ). WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ). + CHECK lo_link->is_internal( ) = abap_false. " issue #340 - don't put internal links here ADD 1 TO lv_relation_id. lv_value = lv_relation_id. @@ -4675,12 +4625,11 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. +ENDMETHOD. - - - method CREATE_XL_STYLES. + + + METHOD create_xl_styles. ** Constant node name @@ -4772,12 +4721,7 @@ endmethod. lc_xml_attr_diagonalup TYPE string VALUE 'diagonalUp', lc_xml_attr_diagonaldown TYPE string VALUE 'diagonalDown', " Node namespace - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - lc_xml_attr_type type string value 'type', - lc_xml_attr_bottom type string value 'bottom', - lc_xml_attr_top type string value 'top', - lc_xml_attr_right type string value 'right', - lc_xml_attr_left type string value 'left'. + lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'. DATA: lo_ixml TYPE REF TO if_ixml, lo_document TYPE REF TO if_ixml_document, @@ -5095,141 +5039,32 @@ endmethod. LOOP AT lt_fills INTO ls_fill. lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill parent = lo_document ). + "pattern + lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill + parent = lo_document ). + lv_value = ls_fill-filltype. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype + value = lv_value ). + " fgcolor + create_xl_styles_color_node( + io_document = lo_document + io_parent = lo_sub_element + is_color = ls_fill-fgcolor + iv_color_elem_name = lc_xml_node_fgcolor ). + IF ls_fill-fgcolor-rgb IS INITIAL AND + ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND + ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND + ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - if ls_fill-gradtype is not initial. - "gradient - - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_gradientfill - parent = lo_document ). - if ls_fill-gradtype-degree is not initial. - lv_value = ls_fill-gradtype-degree. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_degree value = lv_value ). - endif. - if ls_fill-gradtype-type is not initial. - lv_value = ls_fill-gradtype-type. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_type value = lv_value ). - endif. - if ls_fill-gradtype-bottom is not initial. - lv_value = ls_fill-gradtype-bottom. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_bottom value = lv_value ). - endif. - if ls_fill-gradtype-top is not initial. - lv_value = ls_fill-gradtype-top. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_top value = lv_value ). - endif. - if ls_fill-gradtype-right is not initial. - lv_value = ls_fill-gradtype-right. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_right value = lv_value ). - endif. - if ls_fill-gradtype-left is not initial. - lv_value = ls_fill-gradtype-left. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_left value = lv_value ). - endif. - - if ls_fill-gradtype-position3 is not initial. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position3. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - else. - "create <stop> elements for gradients, we can have 2 or 3 stops in each gradient - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - lv_value = ls_fill-gradtype-position1. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - - lo_sub_element_2 = lo_document->create_simple_element( name = lc_xml_node_stop - parent = lo_sub_element ). - - lv_value = ls_fill-gradtype-position2. - lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_position - value = lv_value ). - - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element_2 - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_color ). - lo_sub_element->append_child( new_child = lo_sub_element_2 ). - endif. - - - - - else. - "pattern - lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_patternfill - parent = lo_document ). - lv_value = ls_fill-filltype. - lo_sub_element->set_attribute_ns( name = lc_xml_attr_patterntype - value = lv_value ). - " fgcolor + " bgcolor create_xl_styles_color_node( io_document = lo_document io_parent = lo_sub_element - is_color = ls_fill-fgcolor - iv_color_elem_name = lc_xml_node_fgcolor ). + is_color = ls_fill-bgcolor + iv_color_elem_name = lc_xml_node_bgcolor ). - IF ls_fill-fgcolor-rgb IS INITIAL AND - ls_fill-fgcolor-indexed EQ zcl_excel_style_color=>c_indexed_not_set AND - ls_fill-fgcolor-theme EQ zcl_excel_style_color=>c_theme_not_set AND - ls_fill-fgcolor-tint IS INITIAL AND ls_fill-bgcolor-indexed EQ zcl_excel_style_color=>c_indexed_sys_foreground. - - " bgcolor - create_xl_styles_color_node( - io_document = lo_document - io_parent = lo_sub_element - is_color = ls_fill-bgcolor - iv_color_elem_name = lc_xml_node_bgcolor ). - - ENDIF. - endif. + ENDIF. lo_element_fill->append_child( new_child = lo_sub_element )."pattern lo_element_fills->append_child( new_child = lo_element_fill ). @@ -5771,14 +5606,14 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -endmethod. +ENDMETHOD. - - - - - - method CREATE_XL_STYLES_COLOR_NODE. + + + + + + METHOD create_xl_styles_color_node. DATA: lo_sub_element TYPE REF TO if_ixml_element, lv_value TYPE string. @@ -5822,12 +5657,12 @@ endmethod. ENDIF. io_parent->append_child( new_child = lo_sub_element ). -endmethod. +ENDMETHOD. - - - - method CREATE_XL_TABLE. + + + + METHOD create_xl_table. DATA: lc_xml_node_table TYPE string VALUE 'table', lc_xml_node_relationship TYPE string VALUE 'Relationship', @@ -6001,10 +5836,10 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -endmethod. +ENDMETHOD. - - + + method CREATE_XL_THEME. @@ -6090,11 +5925,10 @@ endmethod. buffer = ep_content. - -endmethod. + endmethod. - - + + method CREATE_XL_WORKBOOK. *--------------------------------------------------------------------* * issue #230 - Pimp my Code @@ -6412,12 +6246,11 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -endmethod. + endmethod. - - - + + + method FLAG2BOOL. @@ -6426,13 +6259,12 @@ endmethod. ELSE. ep_boolean = 'false'. ENDIF. - -endmethod. + endmethod. - - - - method GET_SHARED_STRING_INDEX. + + + + METHOD get_shared_string_index. DATA ls_shared_string TYPE zexcel_s_shared_string. @@ -6440,7 +6272,6 @@ endmethod. READ TABLE shared_strings INTO ls_shared_string WITH KEY string_value = ip_cell_value BINARY SEARCH. ep_index = ls_shared_string-string_no. - -endmethod. +ENDMETHOD. diff --git a/ZA2X/PROG/ZDEMO_EXCEL2.slnk b/ZA2X/PROG/ZDEMO_EXCEL2.slnk index 1598627..52b7b56 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL2.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL2.slnk @@ -1,7 +1,8 @@ - - + + + @@ -13,66 +14,50 @@ *& *&---------------------------------------------------------------------* -report zdemo_excel2. +REPORT zdemo_excel2. -data: lo_excel type ref to zcl_excel, - lo_worksheet type ref to zcl_excel_worksheet, - lo_style_bold type ref to zcl_excel_style, - lo_style_underline type ref to zcl_excel_style, - lo_style_filled type ref to zcl_excel_style, - lo_style_border type ref to zcl_excel_style, - lo_style_button type ref to zcl_excel_style, - lo_border_dark type ref to zcl_excel_style_border, - lo_border_light type ref to zcl_excel_style_border. +DATA: lo_excel TYPE REF TO zcl_excel, + lo_worksheet TYPE REF TO zcl_excel_worksheet, + lo_style_bold TYPE REF TO zcl_excel_style, + lo_style_underline TYPE REF TO zcl_excel_style, + lo_style_filled TYPE REF TO zcl_excel_style, + lo_style_border TYPE REF TO zcl_excel_style, + lo_style_button TYPE REF TO zcl_excel_style, + lo_border_dark TYPE REF TO zcl_excel_style_border, + lo_border_light TYPE REF TO zcl_excel_style_border. -data: lv_style_bold_guid type zexcel_cell_style, - lv_style_underline_guid type zexcel_cell_style, - lv_style_filled_guid type zexcel_cell_style, - lv_style_filled_green_guid type zexcel_cell_style, - lv_style_border_guid type zexcel_cell_style, - lv_style_button_guid type zexcel_cell_style, - lv_style_filled_turquoise_guid type zexcel_cell_style, - lo_style_gr_cornerlb_guid type zexcel_cell_style, - lo_style_gr_cornerlt_guid type zexcel_cell_style, - lo_style_gr_cornerrb_guid type zexcel_cell_style, - lo_style_gr_cornerrt_guid type zexcel_cell_style, - lo_style_gr_horizontal90_guid type zexcel_cell_style, - lo_style_gr_horizontal270_guid type zexcel_cell_style, - lo_style_gr_horizontalb_guid type zexcel_cell_style, - lo_style_gr_vertical_guid type zexcel_cell_style, - lo_style_gr_vertical2_guid type zexcel_cell_style, - lo_style_gr_fromcenter_guid type zexcel_cell_style, - lo_style_gr_diagonal45_guid type zexcel_cell_style, - lo_style_gr_diagonal45b_guid type zexcel_cell_style, - lo_style_gr_diagonal135_guid type zexcel_cell_style, - lo_style_gr_diagonal135b_guid type zexcel_cell_style . +DATA: lv_style_bold_guid TYPE zexcel_cell_style, + lv_style_underline_guid TYPE zexcel_cell_style, + lv_style_filled_guid TYPE zexcel_cell_style, + lv_style_filled_green_guid TYPE zexcel_cell_style, + lv_style_border_guid TYPE zexcel_cell_style, + lv_style_button_guid TYPE zexcel_cell_style, + lv_style_filled_turquoise_guid TYPE zexcel_cell_style. -data: lv_file type xstring, - lv_bytecount type i, - lt_file_tab type solix_tab. +DATA: lv_file TYPE xstring, + lv_bytecount TYPE i, + lt_file_tab TYPE solix_tab. -data: lv_full_path type string, - lv_workdir type string, - lv_file_separator type c. +DATA: lv_full_path TYPE string, + lv_workdir TYPE string, + lv_file_separator TYPE c. -data: lo_row_dim type ref to zcl_excel_worksheet_rowdimensi. - -constants: gc_save_file_name type string value '02_Styles.xlsx'. -include zdemo_excel_outputopt_incl. +CONSTANTS: gc_save_file_name TYPE string VALUE '02_Styles.xlsx'. +INCLUDE zdemo_excel_outputopt_incl. -start-of-selection. +START-OF-SELECTION. " Creates active sheet - create object lo_excel. + CREATE OBJECT lo_excel. " Create border object - create object lo_border_dark. + CREATE OBJECT lo_border_dark. lo_border_dark->border_color-rgb = zcl_excel_style_color=>c_black. lo_border_dark->border_style = zcl_excel_style_border=>c_border_thin. - create object lo_border_light. + CREATE OBJECT lo_border_light. lo_border_light->border_color-rgb = zcl_excel_style_color=>c_gray. lo_border_light->border_style = zcl_excel_style_border=>c_border_thin. " Create a bold / italic style @@ -117,128 +102,6 @@ start-of-selection. lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. lv_style_filled_green_guid = lo_style_filled->get_guid( ). - " Create filled with gradients - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_cornerlb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerlt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_cornerlt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_cornerrb_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_cornerrt. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_cornerrt_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal90. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_horizontal90_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontal270. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_horizontal270_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_horizontalb. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_horizontalb_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_vertical_guid = lo_style_filled->get_guid( ). - - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_vertical. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_vertical2_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_fromcenter. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_fromcenter_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_diagonal45_guid = lo_style_filled->get_guid( ). - - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_diagonal45b_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_diagonal135_guid = lo_style_filled->get_guid( ). - - lo_style_filled = lo_excel->add_new_style( ). - lo_style_filled->fill->filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135b. - lo_style_filled->fill->fgcolor-rgb = zcl_excel_style_color=>c_blue. - lo_style_filled->fill->bgcolor-rgb = zcl_excel_style_color=>c_white. - lo_style_filled->font->name = zcl_excel_style_font=>c_name_cambria. - lo_style_filled->font->scheme = zcl_excel_style_font=>c_scheme_major. - lo_style_gr_diagonal135b_guid = lo_style_filled->get_guid( ). - - - " Create filled style turquoise using legacy excel ver <= 2003 palette. (https://code.sdn.sap.com/spaces/abap2xlsx/tickets/92) lo_style_filled = lo_excel->add_new_style( ). lo_excel->legacy_palette->set_color( "replace built-in color from palette with out custom RGB turquoise @@ -268,52 +131,6 @@ start-of-selection. " https://code.sdn.sap.com/spaces/abap2xlsx/tickets/44-exception-zcx_excel-thrown-when-style-is-set-for-an-empty-cell lo_worksheet->set_cell_style( ip_column = 'E' ip_row = 6 ip_style = lv_style_filled_green_guid ). - - lo_worksheet->set_cell( ip_column = 'B' ip_row = 10 ip_style = lo_style_gr_cornerlb_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerlb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 10 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 11 ip_style = lo_style_gr_cornerlt_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerlt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 11 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 12 ip_style = lo_style_gr_cornerrb_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerrb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 12 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 13 ip_style = lo_style_gr_cornerrt_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_cornerrt ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 13 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 14 ip_style = lo_style_gr_horizontal90_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_horizontal90 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 14 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 15 ip_style = lo_style_gr_horizontal270_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_horizontal270 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 15 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 16 ip_style = lo_style_gr_horizontalb_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_horizontalb ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 16 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 17 ip_style = lo_style_gr_vertical_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 17 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 18 ip_style = lo_style_gr_vertical2_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_vertical ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 18 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 19 ip_style = lo_style_gr_fromcenter_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_fromcenter ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 19 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 20 ip_style = lo_style_gr_diagonal45_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal45 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 20 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 21 ip_style = lo_style_gr_diagonal45b_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal45b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 21 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'B' ip_row = 22 ip_style = lo_style_gr_diagonal135_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal135 ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 22 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - lo_worksheet->set_cell( ip_column = 'C' ip_row = 23 ip_style = lo_style_gr_diagonal135b_guid ip_value = zcL_excel_style_fill=>c_fill_gradient_diagonal135b ). - lo_row_dim = lo_worksheet->get_row_dimension( ip_row = 23 ). - lo_row_dim->set_row_height( ip_row_height = 30 ). - - - * CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. * lv_file = lo_excel_writer->write_file( lo_excel ). * diff --git a/ZA2X/PROG/ZDEMO_EXCEL34.slnk b/ZA2X/PROG/ZDEMO_EXCEL34.slnk index 539107a..84a3a6c 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL34.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL34.slnk @@ -1,7 +1,8 @@ - - + + + @@ -202,13 +203,11 @@ START-OF-SELECTION. IF colorflag = 0. lo_worksheet->change_cell_style( ip_column = col_alpha ip_row = row - ip_fill_fgcolor_rgb = 'FFB5866A' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal135 ). + ip_fill_fgcolor_rgb = 'FFB5866A' ). ELSE. lo_worksheet->change_cell_style( ip_column = col_alpha ip_row = row - ip_fill_fgcolor_rgb = 'FFF5DEBF' - ip_fill_filltype = zcl_excel_style_fill=>c_fill_gradient_diagonal45 ). + ip_fill_fgcolor_rgb = 'FFF5DEBF' ). ENDIF. diff --git a/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk b/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk index 18e0244..3c62a01 100644 --- a/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk +++ b/ZA2X/TABL/ZEXCEL_S_CSTYLEX_FILL.slnk @@ -1,26 +1,16 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk b/ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk deleted file mode 100644 index 91b86cb..0000000 --- a/ZA2X/TABL/ZEXCEL_S_CSTYLEX_GRADTYPE.slnk +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk b/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk index ed81bf7..0c2e588 100644 --- a/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk +++ b/ZA2X/TABL/ZEXCEL_S_CSTYLE_FILL.slnk @@ -1,26 +1,16 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + diff --git a/ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk b/ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk deleted file mode 100644 index 58b0466..0000000 --- a/ZA2X/TABL/ZEXCEL_S_GRADIENT_TYPE.slnk +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk b/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk index ebbc65d..e1325ca 100644 --- a/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk +++ b/ZA2X/TABL/ZEXCEL_S_STYLE_FILL.slnk @@ -1,5 +1,5 @@ - + @@ -13,14 +13,4 @@ - - - - - - - - - -