From edb50701b121c77189079699ec8a2b6a8c949a7b Mon Sep 17 00:00:00 2001 From: mfallen Date: Thu, 21 Feb 2019 15:45:27 +0100 Subject: [PATCH] Redefinition Header Footer Image Get errors when using header/footer in more than one sheet --- src/zcl_excel_worksheet.clas.abap | 1061 +++++++++++++----------- src/zcl_excel_worksheet.clas.xml | 6 + src/zcl_excel_writer_2007.clas.abap | 309 +++++-- src/zcl_excel_writer_2007.clas.xml | 6 + src/zexcel_s_drawings.tabl.xml | 25 + src/zexcel_t_drawings.ttyp.xml | 16 + src/ztest_excel_image_header.prog.abap | 23 + 7 files changed, 899 insertions(+), 547 deletions(-) create mode 100644 src/zexcel_s_drawings.tabl.xml create mode 100644 src/zexcel_t_drawings.ttyp.xml diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index d0b84c6..f82adf5 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -2,525 +2,525 @@ class ZCL_EXCEL_WORKSHEET definition public create public . - public section. +public section. *"* public components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! - type-pools ABAP . +*"* protected components of class ZCL_EXCEL_WORKSHEET +*"* do not include other source files here!!! +*"* protected components of class ZCL_EXCEL_WORKSHEET +*"* do not include other source files here!!! + type-pools ABAP . + type-pools SLIS . + type-pools SOI . - interfaces ZIF_EXCEL_SHEET_PRINTSETTINGS . - interfaces ZIF_EXCEL_SHEET_PROPERTIES . - interfaces ZIF_EXCEL_SHEET_PROTECTION . - interfaces ZIF_EXCEL_SHEET_VBA_PROJECT . + interfaces ZIF_EXCEL_SHEET_PRINTSETTINGS . + interfaces ZIF_EXCEL_SHEET_PROPERTIES . + interfaces ZIF_EXCEL_SHEET_PROTECTION . + interfaces ZIF_EXCEL_SHEET_VBA_PROJECT . - types: - begin of MTY_S_OUTLINE_ROW, + types: + begin of MTY_S_OUTLINE_ROW, ROW_FROM type I, ROW_TO type I, COLLAPSED type ABAP_BOOL, end of MTY_S_OUTLINE_ROW . - types: - MTY_TS_OUTLINES_ROW type sorted table of MTY_S_OUTLINE_ROW with unique key ROW_FROM ROW_TO . + types: + MTY_TS_OUTLINES_ROW type sorted table of MTY_S_OUTLINE_ROW with unique key ROW_FROM ROW_TO . - 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_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 . + 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_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_COMMENT importing !IP_COMMENT type ref to ZCL_EXCEL_COMMENT . - methods ADD_DRAWING - importing - !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . - methods ADD_NEW_COLUMN - importing - !IP_COLUMN type SIMPLE - returning - value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . - methods ADD_NEW_STYLE_COND - returning - value(EO_STYLE_COND) type ref to ZCL_EXCEL_STYLE_COND . - 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 ADD_NEW_ROW - importing - !IP_ROW type SIMPLE - returning - value(EO_ROW) type ref to ZCL_EXCEL_ROW . - 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 - !I_TABLE type ABAP_BOOL default ABAP_TRUE - 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 - value(IV_DEFAULT_DESCR) type C 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_BORDERS_ALLBORDERS type ZEXCEL_S_CSTYLE_BORDER optional - !IP_FILL_GRADTYPE_TYPE type ZEXCEL_S_GRADIENT_TYPE-TYPE optional - !IP_FILL_GRADTYPE_DEGREE type ZEXCEL_S_GRADIENT_TYPE-DEGREE optional - !IP_XBORDERS_ALLBORDERS type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_DIAGONAL type ZEXCEL_S_CSTYLE_BORDER optional - !IP_FILL_GRADTYPE_BOTTOM type ZEXCEL_S_GRADIENT_TYPE-BOTTOM optional - !IP_FILL_GRADTYPE_TOP type ZEXCEL_S_GRADIENT_TYPE-TOP optional - !IP_XBORDERS_DIAGONAL type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_DIAGONAL_MODE type ZEXCEL_DIAGONAL optional - !IP_FILL_GRADTYPE_RIGHT type ZEXCEL_S_GRADIENT_TYPE-RIGHT optional - !IP_BORDERS_DOWN type ZEXCEL_S_CSTYLE_BORDER optional - !IP_FILL_GRADTYPE_LEFT type ZEXCEL_S_GRADIENT_TYPE-LEFT optional - !IP_FILL_GRADTYPE_POSITION1 type ZEXCEL_S_GRADIENT_TYPE-POSITION1 optional - !IP_XBORDERS_DOWN type ZEXCEL_S_CSTYLEX_BORDER optional - !IP_BORDERS_LEFT type ZEXCEL_S_CSTYLE_BORDER optional - !IP_FILL_GRADTYPE_POSITION2 type ZEXCEL_S_GRADIENT_TYPE-POSITION2 optional - !IP_FILL_GRADTYPE_POSITION3 type ZEXCEL_S_GRADIENT_TYPE-POSITION3 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 - importing - !IP_CELL_COLUMN type SIMPLE optional - !IP_CELL_ROW type ZEXCEL_CELL_ROW optional - raising - ZCX_EXCEL . - methods DELETE_ROW_OUTLINE - importing - !IV_ROW_FROM type I - !IV_ROW_TO type I - raising - ZCX_EXCEL . - 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 - !EP_FORMULA type ZEXCEL_CELL_FORMULA - raising - ZCX_EXCEL . - methods GET_COLUMN - importing - !IP_COLUMN type SIMPLE - returning - value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . - methods GET_COLUMNS - returning - value(EO_COLUMNS) type ref to ZCL_EXCEL_COLUMNS . - methods GET_COLUMNS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_STYLE_COND_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 - returning - value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . - 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 - returning - value(EO_ROW) type ref to ZCL_EXCEL_ROW . - methods GET_DIMENSION_RANGE - returning - value(EP_DIMENSION_RANGE) type STRING - raising - ZCX_EXCEL . - methods GET_COMMENTS - returning - value(R_COMMENTS) type ref to ZCL_EXCEL_COMMENTS . - methods GET_DRAWINGS - importing - !IP_TYPE type ZEXCEL_DRAWING_TYPE optional - returning - value(R_DRAWINGS) type ref to ZCL_EXCEL_DRAWINGS . - methods GET_COMMENTS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - 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_PAGEBREAKS - returning - value(RO_PAGEBREAKS) type ref to ZCL_EXCEL_WORKSHEET_PAGEBREAKS - raising - ZCX_EXCEL . - methods GET_RANGES_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_ROW - importing - !IP_ROW type INT4 - returning - value(EO_ROW) type ref to ZCL_EXCEL_ROW . - methods GET_ROWS - returning - value(EO_ROWS) type ref to ZCL_EXCEL_ROWS . - methods GET_ROWS_ITERATOR - returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . - methods GET_ROW_OUTLINES - returning - value(RT_ROW_OUTLINES) type MTY_TS_OUTLINES_ROW . - methods GET_STYLE_COND - importing - !IP_GUID type ZEXCEL_CELL_STYLE - returning - value(EO_STYLE_COND) type ref to ZCL_EXCEL_STYLE_COND . - 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 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 . - 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 SIMPLE default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MIN_COL - !IP_COLUMN_END type SIMPLE default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MAX_COL - !IP_ROW type ZEXCEL_CELL_ROW default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MIN_ROW - !IP_ROW_TO type ZEXCEL_CELL_ROW default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MAX_ROW + methods ADD_DRAWING + importing + !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . + methods ADD_NEW_COLUMN + importing + !IP_COLUMN type SIMPLE + returning + value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods ADD_NEW_STYLE_COND + returning + value(EO_STYLE_COND) type ref to ZCL_EXCEL_STYLE_COND . + 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 ADD_NEW_ROW + importing + !IP_ROW type SIMPLE + returning + value(EO_ROW) type ref to ZCL_EXCEL_ROW . + 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 + !I_TABLE type ABAP_BOOL default ABAP_TRUE + raising + ZCX_EXCEL . + 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 + value(IV_DEFAULT_DESCR) type C 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_BORDERS_ALLBORDERS type ZEXCEL_S_CSTYLE_BORDER optional + !IP_FILL_GRADTYPE_TYPE type ZEXCEL_S_GRADIENT_TYPE-TYPE optional + !IP_FILL_GRADTYPE_DEGREE type ZEXCEL_S_GRADIENT_TYPE-DEGREE optional + !IP_XBORDERS_ALLBORDERS type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_DIAGONAL type ZEXCEL_S_CSTYLE_BORDER optional + !IP_FILL_GRADTYPE_BOTTOM type ZEXCEL_S_GRADIENT_TYPE-BOTTOM optional + !IP_FILL_GRADTYPE_TOP type ZEXCEL_S_GRADIENT_TYPE-TOP optional + !IP_XBORDERS_DIAGONAL type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_DIAGONAL_MODE type ZEXCEL_DIAGONAL optional + !IP_FILL_GRADTYPE_RIGHT type ZEXCEL_S_GRADIENT_TYPE-RIGHT optional + !IP_BORDERS_DOWN type ZEXCEL_S_CSTYLE_BORDER optional + !IP_FILL_GRADTYPE_LEFT type ZEXCEL_S_GRADIENT_TYPE-LEFT optional + !IP_FILL_GRADTYPE_POSITION1 type ZEXCEL_S_GRADIENT_TYPE-POSITION1 optional + !IP_XBORDERS_DOWN type ZEXCEL_S_CSTYLEX_BORDER optional + !IP_BORDERS_LEFT type ZEXCEL_S_CSTYLE_BORDER optional + !IP_FILL_GRADTYPE_POSITION2 type ZEXCEL_S_GRADIENT_TYPE-POSITION2 optional + !IP_FILL_GRADTYPE_POSITION3 type ZEXCEL_S_GRADIENT_TYPE-POSITION3 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 + importing + !IP_CELL_COLUMN type SIMPLE optional + !IP_CELL_ROW type ZEXCEL_CELL_ROW optional + raising + ZCX_EXCEL . + methods DELETE_ROW_OUTLINE + importing + !IV_ROW_FROM type I + !IV_ROW_TO type I + raising + ZCX_EXCEL . + 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 + !EP_FORMULA type ZEXCEL_CELL_FORMULA + raising + ZCX_EXCEL . + methods GET_COLUMN + importing + !IP_COLUMN type SIMPLE + returning + value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods GET_COLUMNS + returning + value(EO_COLUMNS) type ref to ZCL_EXCEL_COLUMNS . + methods GET_COLUMNS_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_STYLE_COND_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 + returning + value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + 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 + returning + value(EO_ROW) type ref to ZCL_EXCEL_ROW . + methods GET_DIMENSION_RANGE + returning + value(EP_DIMENSION_RANGE) type STRING + raising + ZCX_EXCEL . + methods GET_COMMENTS + returning + value(R_COMMENTS) type ref to ZCL_EXCEL_COMMENTS . + methods GET_DRAWINGS + importing + !IP_TYPE type ZEXCEL_DRAWING_TYPE optional + returning + value(R_DRAWINGS) type ref to ZCL_EXCEL_DRAWINGS . + methods GET_COMMENTS_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + 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_PAGEBREAKS + returning + value(RO_PAGEBREAKS) type ref to ZCL_EXCEL_WORKSHEET_PAGEBREAKS + raising + ZCX_EXCEL . + methods GET_RANGES_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_ROW + importing + !IP_ROW type INT4 + returning + value(EO_ROW) type ref to ZCL_EXCEL_ROW . + methods GET_ROWS + returning + value(EO_ROWS) type ref to ZCL_EXCEL_ROWS . + methods GET_ROWS_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_ROW_OUTLINES + returning + value(RT_ROW_OUTLINES) type MTY_TS_OUTLINES_ROW . + methods GET_STYLE_COND + importing + !IP_GUID type ZEXCEL_CELL_STYLE + returning + value(EO_STYLE_COND) type ref to ZCL_EXCEL_STYLE_COND . + 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 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 . + 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 SIMPLE default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MIN_COL + !IP_COLUMN_END type SIMPLE default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MAX_COL + !IP_ROW type ZEXCEL_CELL_ROW default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MIN_ROW + !IP_ROW_TO type ZEXCEL_CELL_ROW default ZCL_EXCEL_COMMON=>C_EXCEL_SHEET_MAX_ROW !IP_STYLE type ZEXCEL_CELL_STYLE optional "added parameter !IP_VALUE type SIMPLE optional "added parameter !IP_FORMULA type ZEXCEL_CELL_FORMULA optional "added parameter - 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_ROW_OUTLINE - importing - !IV_ROW_FROM type I - !IV_ROW_TO type I - !IV_COLLAPSED type ABAP_BOOL - 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 GET_TABLE - importing - IV_SKIPPED_ROWS type INT4 default 0 - IV_SKIPPED_COLS type INT4 default 0 - exporting - ET_TABLE type standard table - raising - ZCX_EXCEL. - -methods SET_MERGE_STYLE + raising + ZCX_EXCEL . + methods SET_PRINT_GRIDLINES importing - !IP_COLUMN_START type simple optional - !IP_COLUMN_END type simple optional + !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_ROW_OUTLINE + importing + !IV_ROW_FROM type I + !IV_ROW_TO type I + !IV_COLLAPSED type ABAP_BOOL + 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 GET_TABLE + importing + !IV_SKIPPED_ROWS type INT4 default 0 + !IV_SKIPPED_COLS type INT4 default 0 + exporting + !ET_TABLE type STANDARD TABLE + raising + ZCX_EXCEL . + methods SET_MERGE_STYLE + importing + !IP_COLUMN_START type SIMPLE optional + !IP_COLUMN_END type SIMPLE optional !IP_ROW type ZEXCEL_CELL_ROW optional !IP_ROW_TO type ZEXCEL_CELL_ROW optional !IP_STYLE type ZEXCEL_CELL_STYLE optional . - -methods SET_AREA_FORMULA + methods SET_AREA_FORMULA importing - !IP_COLUMN_START type simple - !IP_COLUMN_END type simple optional + !IP_COLUMN_START type SIMPLE + !IP_COLUMN_END type SIMPLE optional !IP_ROW type ZEXCEL_CELL_ROW !IP_ROW_TO type ZEXCEL_CELL_ROW optional !IP_FORMULA type ZEXCEL_CELL_FORMULA !IP_MERGE type ABAP_BOOL optional raising ZCX_EXCEL . - -methods SET_AREA_STYLE + methods SET_AREA_STYLE importing - !IP_COLUMN_START type simple - !IP_COLUMN_END type simple optional + !IP_COLUMN_START type SIMPLE + !IP_COLUMN_END type SIMPLE optional !IP_ROW type ZEXCEL_CELL_ROW !IP_ROW_TO type ZEXCEL_CELL_ROW optional !IP_STYLE type ZEXCEL_CELL_STYLE !IP_MERGE type ABAP_BOOL optional . - - methods SET_AREA + methods SET_AREA importing - !IP_COLUMN_START type simple - !IP_COLUMN_END type simple optional + !IP_COLUMN_START type SIMPLE + !IP_COLUMN_END type SIMPLE optional !IP_ROW type ZEXCEL_CELL_ROW !IP_ROW_TO type ZEXCEL_CELL_ROW optional !IP_VALUE type SIMPLE optional @@ -532,11 +532,9 @@ methods SET_AREA_STYLE !IP_MERGE type ABAP_BOOL optional raising ZCX_EXCEL . - -*"* protected components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! -*"* protected components of class ZCL_EXCEL_WORKSHEET -*"* do not include other source files here!!! + methods GET_HEADER_FOOTER_DRAWINGS + returning + value(RT_DRAWINGS) type ZEXCEL_T_DRAWINGS . protected section. private section. @@ -4101,6 +4099,87 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. endmethod. +METHOD get_header_footer_drawings. + DATA: ls_odd_header TYPE zexcel_s_worksheet_head_foot, + ls_odd_footer TYPE zexcel_s_worksheet_head_foot, + ls_even_header TYPE zexcel_s_worksheet_head_foot, + ls_even_footer TYPE zexcel_s_worksheet_head_foot, + ls_hd_ft TYPE zexcel_s_worksheet_head_foot. + + FIELD-SYMBOLS: TYPE zexcel_s_drawings. + + me->sheet_setup->get_header_footer( IMPORTING ep_odd_header = ls_odd_header + ep_odd_footer = ls_odd_footer + ep_even_header = ls_even_header + ep_even_footer = ls_even_footer ). + +********************************************************************** +*** Odd header + ls_hd_ft = ls_odd_header. + IF ls_hd_ft-left_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-left_image. + ENDIF. + IF ls_hd_ft-right_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-right_image. + ENDIF. + IF ls_hd_ft-center_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-center_image. + ENDIF. + +********************************************************************** +*** Odd footer + ls_hd_ft = ls_odd_footer. + IF ls_hd_ft-left_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-left_image. + ENDIF. + IF ls_hd_ft-right_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-right_image. + ENDIF. + IF ls_hd_ft-center_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-center_image. + ENDIF. + +********************************************************************** +*** Even header + ls_hd_ft = ls_even_header. + IF ls_hd_ft-left_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-left_image. + ENDIF. + IF ls_hd_ft-right_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-right_image. + ENDIF. + IF ls_hd_ft-center_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-center_image. + ENDIF. + +********************************************************************** +*** Even footer + ls_hd_ft = ls_even_footer. + IF ls_hd_ft-left_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-left_image. + ENDIF. + IF ls_hd_ft-right_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-right_image. + ENDIF. + IF ls_hd_ft-center_image IS NOT INITIAL. + APPEND INITIAL LINE TO rt_drawings ASSIGNING . + -drawing = ls_hd_ft-center_image. + ENDIF. + +ENDMETHOD. + + method GET_HIGHEST_COLUMN. ME->UPDATE_DIMENSION_RANGE( ). R_HIGHEST_COLUMN = ME->LOWER_CELL-CELL_COLUMN. diff --git a/src/zcl_excel_worksheet.clas.xml b/src/zcl_excel_worksheet.clas.xml index 49b5c4d..adac0bd 100644 --- a/src/zcl_excel_worksheet.clas.xml +++ b/src/zcl_excel_worksheet.clas.xml @@ -550,6 +550,12 @@ I Get sheet guid + + ZCL_EXCEL_WORKSHEET + GET_HEADER_FOOTER_DRAWINGS + E + Get HD/FT Drawings + ZCL_EXCEL_WORKSHEET GET_HYPERLINKS_ITERATOR diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index 13c1a2f..dc8460d 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -33,8 +33,7 @@ protected section. data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING . constants C_XL_COMMENTS type STRING value 'xl/comments#.xml'. "#EC NOTEXT constants CL_XL_DRAWING_FOR_COMMENTS type STRING value 'xl/drawings/vmlDrawing#.vml'. "#EC NOTEXT - constants C_XL_DRAWINGS_VML type STRING value 'xl/drawings/vmlDrawing1.vml'. "#EC NOTEXT - constants C_XL_DRAWINGS_VML_RELS type STRING value 'xl/drawings/_rels/vmlDrawing1.vml.rels'. "#EC NOTEXT + constants C_XL_DRAWINGS_VML_RELS type STRING value 'xl/drawings/_rels/vmlDrawing#.vml.rels'. "#EC NOTEXT methods CREATE_XL_SHEET_SHEET_DATA importing @@ -179,6 +178,16 @@ protected section. !IS_HEADER type ZEXCEL_S_WORKSHEET_HEAD_FOOT returning value(EP_CONTENT) type STRING . + methods CREATE_XL_DRAWING_FOR_HDFT_IM + importing + !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET + returning + value(EP_CONTENT) type XSTRING . + methods CREATE_XL_DRAWINGS_HDFT_RELS + importing + !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET + returning + value(EP_CONTENT) type XSTRING . private section. *"* private components of class ZCL_EXCEL_WRITER_2007 @@ -366,6 +375,30 @@ METHOD create. content = lv_content ). ENDIF. +* Add Header/Footer image + DATA: lt_drawings TYPE zexcel_t_drawings. + lt_drawings = lo_worksheet->get_header_footer_drawings( ). + IF lines( lt_drawings ) > 0. "Header or footer image exist + + lv_comment_index = lv_comment_index + 1. + lv_index_str = lv_comment_index. + CONDENSE lv_index_str NO-GAPS. + + " Create vmlDrawing that will host the image + lv_content = me->create_xl_drawing_for_hdft_im( lo_worksheet ). + lv_xl_drawing_for_comment = me->cl_xl_drawing_for_comments. + REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_for_comment WITH lv_index_str. + lo_zip->add( name = lv_xl_drawing_for_comment + content = lv_content ). + + " Create vmlDrawing REL that will host the image + lv_content = me->create_xl_drawings_hdft_rels( lo_worksheet ). + lv_xl_drawing_rels = me->c_xl_drawings_vml_rels. + REPLACE ALL OCCURRENCES OF '#' IN lv_xl_drawing_rels WITH lv_index_str. + lo_zip->add( name = lv_xl_drawing_rels + content = lv_content ). + ENDIF. + lv_xl_sheet_rels = me->c_xl_sheet_rels. lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet @@ -401,11 +434,11 @@ METHOD create. lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). * IF lo_drawing->get_type( ) NE zcl_excel_drawing=>type_image_header_footer. - lv_content = lo_drawing->get_media( ). - lv_value = lo_drawing->get_media_name( ). - CONCATENATE 'xl/media/' lv_value INTO lv_value. - lo_zip->add( name = lv_value - content = lv_content ). + lv_content = lo_drawing->get_media( ). + lv_value = lo_drawing->get_media_name( ). + CONCATENATE 'xl/media/' lv_value INTO lv_value. + lo_zip->add( name = lv_value + content = lv_content ). * ENDIF. ENDWHILE. @@ -433,20 +466,6 @@ METHOD create. "------------------------------------------------- ENDWHILE. -********************************************************************** -*** Header Footer Image -*** Thanks to Marios Toumanis for the hints! - lv_content = me->create_xl_drawings_vml( ). - lo_zip->add( name = me->c_xl_drawings_vml - content = lv_content ). - - lv_content = me->create_xl_drawings_vml_rels( ). - lv_xl_drawing_rels = me->c_xl_drawings_vml_rels. - lo_zip->add( name = lv_xl_drawing_rels - content = lv_content ). -********************************************************************** -********************************************************************** - * Second to last step: Allow further information put into the zip archive by child classes me->add_further_data_to_zip( lo_zip ). @@ -2531,6 +2550,105 @@ method CREATE_XL_DRAWINGS. endmethod. +METHOD create_xl_drawings_hdft_rels. + +** Constant node name + 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', + " Node namespace + lc_xml_node_rels_ns TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', + lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', + lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. + + DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, + lo_drawing TYPE REF TO zcl_excel_drawing, + 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, + + lv_value TYPE string, + lv_relation_id TYPE i, + lt_temp TYPE strtable, + lt_drawings TYPE zexcel_t_drawings. + + FIELD-SYMBOLS: TYPE sstrtable, + TYPE zexcel_s_drawings. + + +* BODY +********************************************************************** +* STEP 1: Create [Content_Types].xml into the root of the ZIP + lo_ixml = cl_ixml=>create( ). + +********************************************************************** +* STEP 2: Set document attributes + lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian + character_set = 'utf-8' ). + lo_document = lo_ixml->create_document( ). + lo_document->set_encoding( lo_encoding ). + lo_document->set_standalone( abap_true ). + +********************************************************************** +* STEP 3: Create main node relationships + lo_element_root = lo_document->create_simple_element( name = lc_xml_node_relationships + parent = lo_document ). + lo_element_root->set_attribute_ns( name = 'xmlns' + value = lc_xml_node_rels_ns ). + +********************************************************************** +* STEP 4: Create subnodes + +********************************************************************** + + + lt_drawings = io_worksheet->get_header_footer_drawings( ). + LOOP AT lt_drawings ASSIGNING . "Header or footer image exist + ADD 1 TO lv_relation_id. +* lv_value = lv_relation_id. + lv_value = -drawing->get_index( ). + READ TABLE lt_temp WITH KEY str = lv_value TRANSPORTING NO FIELDS. + IF sy-subrc NE 0. + APPEND INITIAL LINE TO lt_temp ASSIGNING . + -row_index = sy-tabix. + -str = lv_value. + CONDENSE lv_value. + CONCATENATE 'rId' lv_value INTO lv_value. + lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship + parent = lo_document ). + lo_element->set_attribute_ns( name = lc_xml_attr_id +* value = 'LOGO' ). + value = lv_value ). + lo_element->set_attribute_ns( name = lc_xml_attr_type + value = lc_xml_node_rid_image_tp ). + + lv_value = '../media/#'. + REPLACE '#' IN lv_value WITH -drawing->get_media_name( ). + lo_element->set_attribute_ns( name = lc_xml_attr_target +* value = '../media/LOGO.png' ). + value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). + ENDIF. + ENDLOOP. + +********************************************************************** +* STEP 5: Create xstring stream + lo_streamfactory = lo_ixml->create_stream_factory( ). + lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). + lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). + lo_renderer->render( ). + +ENDMETHOD. "create_xl_drawings_hdft_rels + + method CREATE_XL_DRAWINGS_RELS. ** Constant node name @@ -3332,6 +3450,91 @@ METHOD create_xl_drawing_for_comments. ENDMETHOD. +METHOD create_xl_drawing_for_hdft_im. + + + DATA: + ld_1 TYPE string, + ld_2 TYPE string, + ld_3 TYPE string, + ld_4 TYPE string, + ld_5 TYPE string, + ld_6 TYPE string, + ld_7 TYPE string, + + ls_odd_header TYPE zexcel_s_worksheet_head_foot, + ls_odd_footer TYPE zexcel_s_worksheet_head_foot, + ls_even_header TYPE zexcel_s_worksheet_head_foot, + ls_even_footer TYPE zexcel_s_worksheet_head_foot, + lv_content TYPE string, + lo_xml_document TYPE REF TO cl_xml_document. + + +* INIT_RESULT + CLEAR ep_content. + + +* BODY + ld_1 = ''. + ld_2 = ''. + ld_3 = ''. + ld_4 = ''. + + + CONCATENATE ld_1 + ld_2 + ld_3 + ld_4 + INTO lv_content. + + io_worksheet->sheet_setup->get_header_footer( IMPORTING ep_odd_header = ls_odd_header + ep_odd_footer = ls_odd_footer + ep_even_header = ls_even_header + ep_even_footer = ls_even_footer ). + + ld_5 = me->set_vml_shape_header( ls_odd_header ). + CONCATENATE lv_content + ld_5 + INTO lv_content. + ld_5 = me->set_vml_shape_header( ls_even_header ). + CONCATENATE lv_content + ld_5 + INTO lv_content. + ld_5 = me->set_vml_shape_footer( ls_odd_footer ). + CONCATENATE lv_content + ld_5 + INTO lv_content. + ld_5 = me->set_vml_shape_footer( ls_even_footer ). + CONCATENATE lv_content + ld_5 + INTO lv_content. + + ld_7 = ''. + + CONCATENATE lv_content + ld_7 + INTO lv_content. + + CREATE OBJECT lo_xml_document. + CALL METHOD lo_xml_document->parse_string + EXPORTING + stream = lv_content. + + CALL FUNCTION 'SCMS_STRING_TO_XSTRING' + EXPORTING + text = lv_content + IMPORTING + buffer = ep_content + EXCEPTIONS + failed = 1 + OTHERS = 2. + IF sy-subrc <> 0. + CLEAR ep_content. + ENDIF. + +ENDMETHOD. + + method CREATE_XL_RELATIONSHIPS. @@ -5424,7 +5627,8 @@ METHOD create_xl_sheet_rels. DATA: lv_value TYPE string, lv_relation_id TYPE i, - lv_index_str TYPE string. + lv_index_str TYPE string, + lv_comment_index TYPE i. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP @@ -5505,6 +5709,8 @@ METHOD create_xl_sheet_rels. * Begin - Add - Issue #180 DATA: lo_comments TYPE REF TO zcl_excel_comments. + lv_comment_index = iv_comment_index. + lo_comments = io_worksheet->get_comments( ). IF lo_comments->is_empty( ) = abap_false. " Drawing for comment @@ -5512,6 +5718,7 @@ METHOD create_xl_sheet_rels. parent = lo_document ). ADD 1 TO lv_relation_id. + ADD 1 TO lv_comment_index. lv_value = lv_relation_id. CONDENSE lv_value. @@ -5556,39 +5763,29 @@ METHOD create_xl_sheet_rels. ********************************************************************** * header footer image - DATA: lo_drawing TYPE REF TO zcl_excel_drawing. + DATA: lt_drawings TYPE zexcel_t_drawings. + lt_drawings = io_worksheet->get_header_footer_drawings( ). + IF lines( lt_drawings ) > 0. "Header or footer image exist + ADD 1 TO lv_relation_id. + " Drawing for comment/header/footer + lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship + parent = lo_document ). + lv_value = lv_relation_id. + CONDENSE lv_value. + CONCATENATE 'rId' lv_value INTO lv_value. + lo_element->set_attribute_ns( name = lc_xml_attr_id + value = lv_value ). + lo_element->set_attribute_ns( name = lc_xml_attr_type + value = lc_xml_node_rid_drawing_cmt_tp ). - lo_comments = io_worksheet->get_comments( ). - IF lo_comments->is_empty( ) = abap_true. -* lv_relation_id = 0. - lv_relation_id = iv_drawing_index. - lo_iterator = me->excel->get_drawings_iterator( zcl_excel_drawing=>type_image ). - WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. - lo_drawing ?= lo_iterator->if_object_collection_iterator~get_next( ). - IF lo_drawing->get_type( ) = zcl_excel_drawing=>type_image_header_footer. - ADD 1 TO lv_relation_id. - " Drawing for comment/header/footer - lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship - parent = lo_document ). - lv_value = lv_relation_id. - CONDENSE lv_value. - CONCATENATE 'rId' lv_value INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_id - value = lv_value ). - lo_element->set_attribute_ns( name = lc_xml_attr_type - value = lc_xml_node_rid_drawing_cmt_tp ). - - lv_index_str = iv_comment_index. - CONDENSE lv_index_str NO-GAPS. - MOVE me->cl_xl_drawing_for_comments TO lv_value. - REPLACE 'xl' WITH '..' INTO lv_value. - REPLACE '#' WITH lv_index_str INTO lv_value. - lo_element->set_attribute_ns( name = lc_xml_attr_target - value = lv_value ). - lo_element_root->append_child( new_child = lo_element ). - EXIT. - ENDIF. - ENDWHILE. + lv_index_str = lv_comment_index. + CONDENSE lv_index_str NO-GAPS. + MOVE me->cl_xl_drawing_for_comments TO lv_value. + REPLACE 'xl' WITH '..' INTO lv_value. + REPLACE '#' WITH lv_index_str INTO lv_value. + lo_element->set_attribute_ns( name = lc_xml_attr_target + value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). ENDIF. *** End Header Footer ********************************************************************** @@ -7833,7 +8030,7 @@ METHOD set_vml_shape_header. IF is_header-center_image IS NOT INITIAL. lv_content_center = lc_shape. REPLACE '{ID}' IN lv_content_center WITH lc_shape_header_center. - ls_drawing_position = is_header-left_image->get_position( ). + ls_drawing_position = is_header-center_image->get_position( ). IF ls_drawing_position-size-height IS NOT INITIAL. lv_value = ls_drawing_position-size-height. ELSE. @@ -7857,7 +8054,7 @@ METHOD set_vml_shape_header. IF is_header-right_image IS NOT INITIAL. lv_content_right = lc_shape. REPLACE '{ID}' IN lv_content_right WITH lc_shape_header_right. - ls_drawing_position = is_header-left_image->get_position( ). + ls_drawing_position = is_header-right_image->get_position( ). IF ls_drawing_position-size-height IS NOT INITIAL. lv_value = ls_drawing_position-size-height. ELSE. diff --git a/src/zcl_excel_writer_2007.clas.xml b/src/zcl_excel_writer_2007.clas.xml index c238d0a..5b9d1b7 100644 --- a/src/zcl_excel_writer_2007.clas.xml +++ b/src/zcl_excel_writer_2007.clas.xml @@ -109,6 +109,12 @@ I Create 'xl/drawings/drawing1.xml' + + ZCL_EXCEL_WRITER_2007 + CREATE_XL_DRAWINGS_HDFT_RELS + E + Create 'xl/drawings/_rel/vmlDrawing1.vml.rels' + ZCL_EXCEL_WRITER_2007 CREATE_XL_DRAWINGS_RELS diff --git a/src/zexcel_s_drawings.tabl.xml b/src/zexcel_s_drawings.tabl.xml new file mode 100644 index 0000000..01653de --- /dev/null +++ b/src/zexcel_s_drawings.tabl.xml @@ -0,0 +1,25 @@ + + + + + + ZEXCEL_S_DRAWINGS + INTTAB + 4 + + + + ZEXCEL_S_DRAWINGS + DRAWING + 0001 + ZCL_EXCEL_DRAWING + 0 + REF + REF RC + R + C + + + + + diff --git a/src/zexcel_t_drawings.ttyp.xml b/src/zexcel_t_drawings.ttyp.xml new file mode 100644 index 0000000..1513706 --- /dev/null +++ b/src/zexcel_t_drawings.ttyp.xml @@ -0,0 +1,16 @@ + + + + + + ZEXCEL_T_DRAWINGS + ZEXCEL_S_DRAWINGS + S + STRU + T + D + N + + + + diff --git a/src/ztest_excel_image_header.prog.abap b/src/ztest_excel_image_header.prog.abap index 43c8716..4499c23 100644 --- a/src/ztest_excel_image_header.prog.abap +++ b/src/ztest_excel_image_header.prog.abap @@ -76,5 +76,28 @@ START-OF-SELECTION. " assign drawing to the worksheet lo_worksheet->add_drawing( lo_drawing ). +********************************************************************** +********************************************************************** +* New sheet + lo_worksheet = lo_excel->add_new_worksheet( 'Sheet2' ). + +********************************************************************** +*** Header Left + " create global drawing, set position and media from web repository + lo_drawing = lo_excel->add_new_drawing( ip_type = zcl_excel_drawing=>type_image_header_footer ). + + ls_key-relid = 'MI'. + ls_key-objid = 'SAPLOGO.GIF'. + lo_drawing->set_media_www( ip_key = ls_key + ip_width = 166 + ip_height = 75 ). + + + CLEAR ls_header. + ls_header-left_image = ls_footer-left_image = lo_drawing. + + lo_worksheet->sheet_setup->set_header_footer( ip_odd_header = ls_header ). + + *** Create output lcl_output=>output( lo_excel ).