mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 11:16:14 +08:00
Redefinition Header Footer Image
Get errors when using header/footer in more than one sheet
This commit is contained in:
parent
8e87d303a5
commit
edb50701b1
|
@ -2,10 +2,16 @@ class ZCL_EXCEL_WORKSHEET definition
|
||||||
public
|
public
|
||||||
create public .
|
create public .
|
||||||
|
|
||||||
public section.
|
public section.
|
||||||
*"* public components of class ZCL_EXCEL_WORKSHEET
|
*"* public 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!!!
|
||||||
|
*"* protected components of class ZCL_EXCEL_WORKSHEET
|
||||||
*"* do not include other source files here!!!
|
*"* do not include other source files here!!!
|
||||||
type-pools ABAP .
|
type-pools ABAP .
|
||||||
|
type-pools SLIS .
|
||||||
|
type-pools SOI .
|
||||||
|
|
||||||
interfaces ZIF_EXCEL_SHEET_PRINTSETTINGS .
|
interfaces ZIF_EXCEL_SHEET_PRINTSETTINGS .
|
||||||
interfaces ZIF_EXCEL_SHEET_PROPERTIES .
|
interfaces ZIF_EXCEL_SHEET_PROPERTIES .
|
||||||
|
@ -25,11 +31,11 @@ class ZCL_EXCEL_WORKSHEET definition
|
||||||
constants C_BREAK_NONE type ZEXCEL_BREAK value 0. "#EC NOTEXT
|
constants C_BREAK_NONE type ZEXCEL_BREAK value 0. "#EC NOTEXT
|
||||||
constants C_BREAK_ROW type ZEXCEL_BREAK value 1. "#EC NOTEXT
|
constants C_BREAK_ROW type ZEXCEL_BREAK value 1. "#EC NOTEXT
|
||||||
data EXCEL type ref to ZCL_EXCEL read-only .
|
data EXCEL type ref to ZCL_EXCEL read-only .
|
||||||
data PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES read-only value ABAP_FALSE. "#EC NOTEXT . " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
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 type ZEXCEL_T_CELL_DATA .
|
||||||
data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP .
|
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_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 SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT
|
||||||
data STYLES type ZEXCEL_T_SHEET_STYLE .
|
data STYLES type ZEXCEL_T_SHEET_STYLE .
|
||||||
data TABCOLOR type ZEXCEL_S_TABCOLOR read-only .
|
data TABCOLOR type ZEXCEL_S_TABCOLOR read-only .
|
||||||
|
|
||||||
|
@ -61,15 +67,13 @@ class ZCL_EXCEL_WORKSHEET definition
|
||||||
methods BIND_ALV
|
methods BIND_ALV
|
||||||
importing
|
importing
|
||||||
!IO_ALV type ref to OBJECT
|
!IO_ALV type ref to OBJECT
|
||||||
!IT_TABLE type standard table
|
!IT_TABLE type STANDARD TABLE
|
||||||
!I_TOP type I default 1
|
!I_TOP type I default 1
|
||||||
!I_LEFT type I default 1
|
!I_LEFT type I default 1
|
||||||
!TABLE_STYLE type ZEXCEL_TABLE_STYLE optional
|
!TABLE_STYLE type ZEXCEL_TABLE_STYLE optional
|
||||||
!I_TABLE type ABAP_BOOL default ABAP_TRUE
|
!I_TABLE type ABAP_BOOL default ABAP_TRUE
|
||||||
raising
|
raising
|
||||||
ZCX_EXCEL .
|
ZCX_EXCEL .
|
||||||
type-pools SLIS .
|
|
||||||
type-pools SOI .
|
|
||||||
methods BIND_ALV_OLE2
|
methods BIND_ALV_OLE2
|
||||||
importing
|
importing
|
||||||
!I_DOCUMENT_URL type CHAR255 default SPACE
|
!I_DOCUMENT_URL type CHAR255 default SPACE
|
||||||
|
@ -94,7 +98,7 @@ class ZCL_EXCEL_WORKSHEET definition
|
||||||
ERROR_IN_SEMA .
|
ERROR_IN_SEMA .
|
||||||
methods BIND_TABLE
|
methods BIND_TABLE
|
||||||
importing
|
importing
|
||||||
!IP_TABLE type standard table
|
!IP_TABLE type STANDARD TABLE
|
||||||
!IT_FIELD_CATALOG type ZEXCEL_T_FIELDCATALOG optional
|
!IT_FIELD_CATALOG type ZEXCEL_T_FIELDCATALOG optional
|
||||||
!IS_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS optional
|
!IS_TABLE_SETTINGS type ZEXCEL_S_TABLE_SETTINGS optional
|
||||||
value(IV_DEFAULT_DESCR) type C optional
|
value(IV_DEFAULT_DESCR) type C optional
|
||||||
|
@ -465,7 +469,7 @@ class ZCL_EXCEL_WORKSHEET definition
|
||||||
!IV_TABCOLOR type ZEXCEL_S_TABCOLOR .
|
!IV_TABCOLOR type ZEXCEL_S_TABCOLOR .
|
||||||
methods SET_TABLE
|
methods SET_TABLE
|
||||||
importing
|
importing
|
||||||
!IP_TABLE type standard table
|
!IP_TABLE type STANDARD TABLE
|
||||||
!IP_HDR_STYLE type ZEXCEL_CELL_STYLE optional
|
!IP_HDR_STYLE type ZEXCEL_CELL_STYLE optional
|
||||||
!IP_BODY_STYLE type ZEXCEL_CELL_STYLE optional
|
!IP_BODY_STYLE type ZEXCEL_CELL_STYLE optional
|
||||||
!IP_TABLE_TITLE type STRING
|
!IP_TABLE_TITLE type STRING
|
||||||
|
@ -482,45 +486,41 @@ class ZCL_EXCEL_WORKSHEET definition
|
||||||
ZCX_EXCEL .
|
ZCX_EXCEL .
|
||||||
methods GET_TABLE
|
methods GET_TABLE
|
||||||
importing
|
importing
|
||||||
IV_SKIPPED_ROWS type INT4 default 0
|
!IV_SKIPPED_ROWS type INT4 default 0
|
||||||
IV_SKIPPED_COLS type INT4 default 0
|
!IV_SKIPPED_COLS type INT4 default 0
|
||||||
exporting
|
exporting
|
||||||
ET_TABLE type standard table
|
!ET_TABLE type STANDARD TABLE
|
||||||
raising
|
raising
|
||||||
ZCX_EXCEL.
|
ZCX_EXCEL .
|
||||||
|
methods SET_MERGE_STYLE
|
||||||
methods SET_MERGE_STYLE
|
|
||||||
importing
|
importing
|
||||||
!IP_COLUMN_START type simple optional
|
!IP_COLUMN_START type SIMPLE optional
|
||||||
!IP_COLUMN_END type simple optional
|
!IP_COLUMN_END type SIMPLE optional
|
||||||
!IP_ROW type ZEXCEL_CELL_ROW optional
|
!IP_ROW type ZEXCEL_CELL_ROW optional
|
||||||
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
||||||
!IP_STYLE type ZEXCEL_CELL_STYLE optional .
|
!IP_STYLE type ZEXCEL_CELL_STYLE optional .
|
||||||
|
methods SET_AREA_FORMULA
|
||||||
methods SET_AREA_FORMULA
|
|
||||||
importing
|
importing
|
||||||
!IP_COLUMN_START type simple
|
!IP_COLUMN_START type SIMPLE
|
||||||
!IP_COLUMN_END type simple optional
|
!IP_COLUMN_END type SIMPLE optional
|
||||||
!IP_ROW type ZEXCEL_CELL_ROW
|
!IP_ROW type ZEXCEL_CELL_ROW
|
||||||
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
||||||
!IP_FORMULA type ZEXCEL_CELL_FORMULA
|
!IP_FORMULA type ZEXCEL_CELL_FORMULA
|
||||||
!IP_MERGE type ABAP_BOOL optional
|
!IP_MERGE type ABAP_BOOL optional
|
||||||
raising
|
raising
|
||||||
ZCX_EXCEL .
|
ZCX_EXCEL .
|
||||||
|
methods SET_AREA_STYLE
|
||||||
methods SET_AREA_STYLE
|
|
||||||
importing
|
importing
|
||||||
!IP_COLUMN_START type simple
|
!IP_COLUMN_START type SIMPLE
|
||||||
!IP_COLUMN_END type simple optional
|
!IP_COLUMN_END type SIMPLE optional
|
||||||
!IP_ROW type ZEXCEL_CELL_ROW
|
!IP_ROW type ZEXCEL_CELL_ROW
|
||||||
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
||||||
!IP_STYLE type ZEXCEL_CELL_STYLE
|
!IP_STYLE type ZEXCEL_CELL_STYLE
|
||||||
!IP_MERGE type ABAP_BOOL optional .
|
!IP_MERGE type ABAP_BOOL optional .
|
||||||
|
|
||||||
methods SET_AREA
|
methods SET_AREA
|
||||||
importing
|
importing
|
||||||
!IP_COLUMN_START type simple
|
!IP_COLUMN_START type SIMPLE
|
||||||
!IP_COLUMN_END type simple optional
|
!IP_COLUMN_END type SIMPLE optional
|
||||||
!IP_ROW type ZEXCEL_CELL_ROW
|
!IP_ROW type ZEXCEL_CELL_ROW
|
||||||
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
!IP_ROW_TO type ZEXCEL_CELL_ROW optional
|
||||||
!IP_VALUE type SIMPLE optional
|
!IP_VALUE type SIMPLE optional
|
||||||
|
@ -532,11 +532,9 @@ methods SET_AREA_STYLE
|
||||||
!IP_MERGE type ABAP_BOOL optional
|
!IP_MERGE type ABAP_BOOL optional
|
||||||
raising
|
raising
|
||||||
ZCX_EXCEL .
|
ZCX_EXCEL .
|
||||||
|
methods GET_HEADER_FOOTER_DRAWINGS
|
||||||
*"* protected components of class ZCL_EXCEL_WORKSHEET
|
returning
|
||||||
*"* do not include other source files here!!!
|
value(RT_DRAWINGS) type ZEXCEL_T_DRAWINGS .
|
||||||
*"* protected components of class ZCL_EXCEL_WORKSHEET
|
|
||||||
*"* do not include other source files here!!!
|
|
||||||
protected section.
|
protected section.
|
||||||
private section.
|
private section.
|
||||||
|
|
||||||
|
@ -4101,6 +4099,87 @@ CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION.
|
||||||
endmethod.
|
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: <fs_drawings> 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 <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-left_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-right_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-right_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-center_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-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 <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-left_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-right_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-right_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-center_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-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 <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-left_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-right_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-right_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-center_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-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 <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-left_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-right_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-right_image.
|
||||||
|
ENDIF.
|
||||||
|
IF ls_hd_ft-center_image IS NOT INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_drawings ASSIGNING <fs_drawings>.
|
||||||
|
<fs_drawings>-drawing = ls_hd_ft-center_image.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
method GET_HIGHEST_COLUMN.
|
method GET_HIGHEST_COLUMN.
|
||||||
ME->UPDATE_DIMENSION_RANGE( ).
|
ME->UPDATE_DIMENSION_RANGE( ).
|
||||||
R_HIGHEST_COLUMN = ME->LOWER_CELL-CELL_COLUMN.
|
R_HIGHEST_COLUMN = ME->LOWER_CELL-CELL_COLUMN.
|
||||||
|
|
|
@ -550,6 +550,12 @@
|
||||||
<LANGU>I</LANGU>
|
<LANGU>I</LANGU>
|
||||||
<DESCRIPT>Get sheet guid</DESCRIPT>
|
<DESCRIPT>Get sheet guid</DESCRIPT>
|
||||||
</SEOCOMPOTX>
|
</SEOCOMPOTX>
|
||||||
|
<SEOCOMPOTX>
|
||||||
|
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
|
||||||
|
<CMPNAME>GET_HEADER_FOOTER_DRAWINGS</CMPNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>Get HD/FT Drawings</DESCRIPT>
|
||||||
|
</SEOCOMPOTX>
|
||||||
<SEOCOMPOTX>
|
<SEOCOMPOTX>
|
||||||
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
|
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
|
||||||
<CMPNAME>GET_HYPERLINKS_ITERATOR</CMPNAME>
|
<CMPNAME>GET_HYPERLINKS_ITERATOR</CMPNAME>
|
||||||
|
|
|
@ -33,8 +33,7 @@ protected section.
|
||||||
data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING .
|
data STYLES_MAPPING type ZEXCEL_T_STYLES_MAPPING .
|
||||||
constants C_XL_COMMENTS type STRING value 'xl/comments#.xml'. "#EC NOTEXT
|
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 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/vmlDrawing#.vml.rels'. "#EC NOTEXT
|
||||||
constants C_XL_DRAWINGS_VML_RELS type STRING value 'xl/drawings/_rels/vmlDrawing1.vml.rels'. "#EC NOTEXT
|
|
||||||
|
|
||||||
methods CREATE_XL_SHEET_SHEET_DATA
|
methods CREATE_XL_SHEET_SHEET_DATA
|
||||||
importing
|
importing
|
||||||
|
@ -179,6 +178,16 @@ protected section.
|
||||||
!IS_HEADER type ZEXCEL_S_WORKSHEET_HEAD_FOOT
|
!IS_HEADER type ZEXCEL_S_WORKSHEET_HEAD_FOOT
|
||||||
returning
|
returning
|
||||||
value(EP_CONTENT) type STRING .
|
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 section.
|
||||||
|
|
||||||
*"* private components of class ZCL_EXCEL_WRITER_2007
|
*"* private components of class ZCL_EXCEL_WRITER_2007
|
||||||
|
@ -366,6 +375,30 @@ METHOD create.
|
||||||
content = lv_content ).
|
content = lv_content ).
|
||||||
ENDIF.
|
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_xl_sheet_rels = me->c_xl_sheet_rels.
|
||||||
lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet
|
lv_content = me->create_xl_sheet_rels( io_worksheet = lo_worksheet
|
||||||
|
@ -433,20 +466,6 @@ METHOD create.
|
||||||
"-------------------------------------------------
|
"-------------------------------------------------
|
||||||
ENDWHILE.
|
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
|
* Second to last step: Allow further information put into the zip archive by child classes
|
||||||
me->add_further_data_to_zip( lo_zip ).
|
me->add_further_data_to_zip( lo_zip ).
|
||||||
|
|
||||||
|
@ -2531,6 +2550,105 @@ method CREATE_XL_DRAWINGS.
|
||||||
endmethod.
|
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: <fs_temp> TYPE sstrtable,
|
||||||
|
<fs_drawings> 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 <fs_drawings>. "Header or footer image exist
|
||||||
|
ADD 1 TO lv_relation_id.
|
||||||
|
* lv_value = lv_relation_id.
|
||||||
|
lv_value = <fs_drawings>-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 <fs_temp>.
|
||||||
|
<fs_temp>-row_index = sy-tabix.
|
||||||
|
<fs_temp>-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 <fs_drawings>-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.
|
method CREATE_XL_DRAWINGS_RELS.
|
||||||
|
|
||||||
** Constant node name
|
** Constant node name
|
||||||
|
@ -3332,6 +3450,91 @@ METHOD create_xl_drawing_for_comments.
|
||||||
ENDMETHOD.
|
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 = '<xml xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"><o:shapelayout v:ext="edit"><o:idmap v:ext="edit" data="1"/></o:shapelayout>'.
|
||||||
|
ld_2 = '<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"/><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"/>'.
|
||||||
|
ld_3 = '<v:f eqn="sum @0 1 0"/><v:f eqn="sum 0 0 @1"/><v:f eqn="prod @2 1 2"/><v:f eqn="prod @3 21600 pixelWidth"/><v:f eqn="prod @3 21600 pixelHeight"/><v:f eqn="sum @0 0 1"/><v:f eqn="prod @6 1 2"/><v:f eqn="prod @7 21600 pixelWidth"/>'.
|
||||||
|
ld_4 = '<v:f eqn="sum @8 21600 0"/><v:f eqn="prod @7 21600 pixelHeight"/><v:f eqn="sum @10 21600 0"/></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/><o:lock v:ext="edit" aspectratio="t"/></v:shapetype>'.
|
||||||
|
|
||||||
|
|
||||||
|
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 = '</xml>'.
|
||||||
|
|
||||||
|
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.
|
method CREATE_XL_RELATIONSHIPS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -5424,7 +5627,8 @@ METHOD create_xl_sheet_rels.
|
||||||
|
|
||||||
DATA: lv_value TYPE string,
|
DATA: lv_value TYPE string,
|
||||||
lv_relation_id TYPE i,
|
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
|
* 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
|
* Begin - Add - Issue #180
|
||||||
DATA: lo_comments TYPE REF TO zcl_excel_comments.
|
DATA: lo_comments TYPE REF TO zcl_excel_comments.
|
||||||
|
|
||||||
|
lv_comment_index = iv_comment_index.
|
||||||
|
|
||||||
lo_comments = io_worksheet->get_comments( ).
|
lo_comments = io_worksheet->get_comments( ).
|
||||||
IF lo_comments->is_empty( ) = abap_false.
|
IF lo_comments->is_empty( ) = abap_false.
|
||||||
" Drawing for comment
|
" Drawing for comment
|
||||||
|
@ -5512,6 +5718,7 @@ METHOD create_xl_sheet_rels.
|
||||||
parent = lo_document ).
|
parent = lo_document ).
|
||||||
|
|
||||||
ADD 1 TO lv_relation_id.
|
ADD 1 TO lv_relation_id.
|
||||||
|
ADD 1 TO lv_comment_index.
|
||||||
|
|
||||||
lv_value = lv_relation_id.
|
lv_value = lv_relation_id.
|
||||||
CONDENSE lv_value.
|
CONDENSE lv_value.
|
||||||
|
@ -5556,16 +5763,9 @@ METHOD create_xl_sheet_rels.
|
||||||
|
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
* header footer image
|
* 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( ).
|
||||||
lo_comments = io_worksheet->get_comments( ).
|
IF lines( lt_drawings ) > 0. "Header or footer image exist
|
||||||
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.
|
ADD 1 TO lv_relation_id.
|
||||||
" Drawing for comment/header/footer
|
" Drawing for comment/header/footer
|
||||||
lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship
|
lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship
|
||||||
|
@ -5578,7 +5778,7 @@ METHOD create_xl_sheet_rels.
|
||||||
lo_element->set_attribute_ns( name = lc_xml_attr_type
|
lo_element->set_attribute_ns( name = lc_xml_attr_type
|
||||||
value = lc_xml_node_rid_drawing_cmt_tp ).
|
value = lc_xml_node_rid_drawing_cmt_tp ).
|
||||||
|
|
||||||
lv_index_str = iv_comment_index.
|
lv_index_str = lv_comment_index.
|
||||||
CONDENSE lv_index_str NO-GAPS.
|
CONDENSE lv_index_str NO-GAPS.
|
||||||
MOVE me->cl_xl_drawing_for_comments TO lv_value.
|
MOVE me->cl_xl_drawing_for_comments TO lv_value.
|
||||||
REPLACE 'xl' WITH '..' INTO lv_value.
|
REPLACE 'xl' WITH '..' INTO lv_value.
|
||||||
|
@ -5586,9 +5786,6 @@ METHOD create_xl_sheet_rels.
|
||||||
lo_element->set_attribute_ns( name = lc_xml_attr_target
|
lo_element->set_attribute_ns( name = lc_xml_attr_target
|
||||||
value = lv_value ).
|
value = lv_value ).
|
||||||
lo_element_root->append_child( new_child = lo_element ).
|
lo_element_root->append_child( new_child = lo_element ).
|
||||||
EXIT.
|
|
||||||
ENDIF.
|
|
||||||
ENDWHILE.
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
*** End Header Footer
|
*** End Header Footer
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
|
@ -7833,7 +8030,7 @@ METHOD set_vml_shape_header.
|
||||||
IF is_header-center_image IS NOT INITIAL.
|
IF is_header-center_image IS NOT INITIAL.
|
||||||
lv_content_center = lc_shape.
|
lv_content_center = lc_shape.
|
||||||
REPLACE '{ID}' IN lv_content_center WITH lc_shape_header_center.
|
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.
|
IF ls_drawing_position-size-height IS NOT INITIAL.
|
||||||
lv_value = ls_drawing_position-size-height.
|
lv_value = ls_drawing_position-size-height.
|
||||||
ELSE.
|
ELSE.
|
||||||
|
@ -7857,7 +8054,7 @@ METHOD set_vml_shape_header.
|
||||||
IF is_header-right_image IS NOT INITIAL.
|
IF is_header-right_image IS NOT INITIAL.
|
||||||
lv_content_right = lc_shape.
|
lv_content_right = lc_shape.
|
||||||
REPLACE '{ID}' IN lv_content_right WITH lc_shape_header_right.
|
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.
|
IF ls_drawing_position-size-height IS NOT INITIAL.
|
||||||
lv_value = ls_drawing_position-size-height.
|
lv_value = ls_drawing_position-size-height.
|
||||||
ELSE.
|
ELSE.
|
||||||
|
|
|
@ -109,6 +109,12 @@
|
||||||
<LANGU>I</LANGU>
|
<LANGU>I</LANGU>
|
||||||
<DESCRIPT>Create 'xl/drawings/drawing1.xml'</DESCRIPT>
|
<DESCRIPT>Create 'xl/drawings/drawing1.xml'</DESCRIPT>
|
||||||
</SEOCOMPOTX>
|
</SEOCOMPOTX>
|
||||||
|
<SEOCOMPOTX>
|
||||||
|
<CLSNAME>ZCL_EXCEL_WRITER_2007</CLSNAME>
|
||||||
|
<CMPNAME>CREATE_XL_DRAWINGS_HDFT_RELS</CMPNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>Create 'xl/drawings/_rel/vmlDrawing1.vml.rels'</DESCRIPT>
|
||||||
|
</SEOCOMPOTX>
|
||||||
<SEOCOMPOTX>
|
<SEOCOMPOTX>
|
||||||
<CLSNAME>ZCL_EXCEL_WRITER_2007</CLSNAME>
|
<CLSNAME>ZCL_EXCEL_WRITER_2007</CLSNAME>
|
||||||
<CMPNAME>CREATE_XL_DRAWINGS_RELS</CMPNAME>
|
<CMPNAME>CREATE_XL_DRAWINGS_RELS</CMPNAME>
|
||||||
|
|
25
src/zexcel_s_drawings.tabl.xml
Normal file
25
src/zexcel_s_drawings.tabl.xml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TABL" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<DD02V>
|
||||||
|
<TABNAME>ZEXCEL_S_DRAWINGS</TABNAME>
|
||||||
|
<TABCLASS>INTTAB</TABCLASS>
|
||||||
|
<EXCLASS>4</EXCLASS>
|
||||||
|
</DD02V>
|
||||||
|
<DD03P_TABLE>
|
||||||
|
<DD03P>
|
||||||
|
<TABNAME>ZEXCEL_S_DRAWINGS</TABNAME>
|
||||||
|
<FIELDNAME>DRAWING</FIELDNAME>
|
||||||
|
<POSITION>0001</POSITION>
|
||||||
|
<ROLLNAME>ZCL_EXCEL_DRAWING</ROLLNAME>
|
||||||
|
<ADMINFIELD>0</ADMINFIELD>
|
||||||
|
<DATATYPE>REF</DATATYPE>
|
||||||
|
<MASK> REF RC</MASK>
|
||||||
|
<COMPTYPE>R</COMPTYPE>
|
||||||
|
<REFTYPE>C</REFTYPE>
|
||||||
|
</DD03P>
|
||||||
|
</DD03P_TABLE>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
16
src/zexcel_t_drawings.ttyp.xml
Normal file
16
src/zexcel_t_drawings.ttyp.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_TTYP" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<DD40V>
|
||||||
|
<TYPENAME>ZEXCEL_T_DRAWINGS</TYPENAME>
|
||||||
|
<ROWTYPE>ZEXCEL_S_DRAWINGS</ROWTYPE>
|
||||||
|
<ROWKIND>S</ROWKIND>
|
||||||
|
<DATATYPE>STRU</DATATYPE>
|
||||||
|
<ACCESSMODE>T</ACCESSMODE>
|
||||||
|
<KEYDEF>D</KEYDEF>
|
||||||
|
<KEYKIND>N</KEYKIND>
|
||||||
|
</DD40V>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -76,5 +76,28 @@ START-OF-SELECTION.
|
||||||
" assign drawing to the worksheet
|
" assign drawing to the worksheet
|
||||||
lo_worksheet->add_drawing( lo_drawing ).
|
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
|
*** Create output
|
||||||
lcl_output=>output( lo_excel ).
|
lcl_output=>output( lo_excel ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user