adding support for hyperlinks. Both internal links (within spreadsheet) and external urls are supported.

git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@25 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
This commit is contained in:
Tomek Mackowski 2010-10-14 21:18:46 +00:00
parent 72b99e10da
commit 1d625968dc
5 changed files with 266 additions and 12 deletions

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="utf-16"?>
<CLAS CLSNAME="ZCL_EXCEL_HYPERLINK" VERSION="1" LANGU="E" DESCRIPT="Hyperlink" UUID="DFD57606ED7E50F1A3520003FF8F0689" CATEGORY="00" EXPOSURE="0" STATE="1" RELEASE="0" AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" CHGDANYON="00000000" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" R3RELEASE="701" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
<publicSection>class ZCL_EXCEL_HYPERLINK definition
public
final
create private .
*&quot;* public components of class ZCL_EXCEL_HYPERLINK
*&quot;* do not include other source files here!!!
public section.
type-pools ABAP .
class-methods CREATE_EXTERNAL_LINK
importing
!IV_URL type STRING
returning
value(OV_LINK) type ref to ZCL_EXCEL_HYPERLINK .
class-methods CREATE_INTERNAL_LINK
importing
!IV_LOCATION type STRING
returning
value(OV_LINK) type ref to ZCL_EXCEL_HYPERLINK .
methods IS_INTERNAL
returning
value(EV_RET) type ABAP_BOOL .
methods SET_CELL_REFERENCE
importing
!IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
!IP_ROW type ZEXCEL_CELL_ROW .
methods GET_REF
returning
value(EV_REF) type STRING .
methods GET_URL
returning
value(EV_URL) type STRING .</publicSection>
<protectedSection>*&quot;* protected components of class ZCL_EXCEL_HYPERLINK
*&quot;* do not include other source files here!!!
protected section.</protectedSection>
<privateSection>*&quot;* private components of class ZCL_EXCEL_HYPERLINK
*&quot;* do not include other source files here!!!
private section.
data LOCATION type STRING .
data CELL_REFERENCE type STRING .
data INTERNAL type ABAP_BOOL .
data COLUMN type ZEXCEL_CELL_COLUMN_ALPHA .
data ROW type ZEXCEL_CELL_ROW .
class-methods CREATE
importing
!IV_URL type STRING
!IV_INTERNAL type ABAP_BOOL
returning
value(OV_LINK) type ref to ZCL_EXCEL_HYPERLINK .</privateSection>
<localImplementation>*&quot;* local class implementation for public class
*&quot;* use this source file for the implementation part of
*&quot;* local helper classes</localImplementation>
<localTypes>*&quot;* use this source file for any type declarations (class
*&quot;* definitions, interfaces or data types) you need for method
*&quot;* implementation or private method&apos;s signature</localTypes>
<localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros>
<textPool/>
<classDocumentation/>
<typeUsage CLSNAME="ZCL_EXCEL_HYPERLINK" TYPEGROUP="ABAP" VERSION="1" TPUTYPE="0" EXPLICIT="X" IMPLICIT="X"/>
<forwardDeclaration>ABAP</forwardDeclaration>
<attribute CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CELL_REFERENCE" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="2 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" EXPOSURE="0" STATE="1" EDITORDER="4 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="INTERNAL" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="3 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ABAP_BOOL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="LOCATION" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="1 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" EXPOSURE="0" STATE="1" EDITORDER="5 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<method CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE" VERSION="1" LANGU="E" DESCRIPT="Creates new instance of hyperlink" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE" SCONAME="IV_URL" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE" SCONAME="IV_INTERNAL" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ABAP_BOOL"/>
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE" SCONAME="OV_LINK" VERSION="1" LANGU="E" DESCRIPT="Hyperlink" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_HYPERLINK"/>
<source>method CREATE.
data: lo_hyperlink type REF TO zcl_excel_hyperlink.
create OBJECT lo_hyperlink.
lo_hyperlink-&gt;location = iv_url.
lo_hyperlink-&gt;internal = iv_internal.
ov_link = lo_hyperlink.
endmethod.</source>
<methodDocumentation/>
</method>
<method CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE_EXTERNAL_LINK" VERSION="1" LANGU="E" DESCRIPT="Creates new instance of external link (URL)" EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE_EXTERNAL_LINK" SCONAME="IV_URL" VERSION="1" LANGU="E" DESCRIPT="URL location" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE_EXTERNAL_LINK" SCONAME="OV_LINK" VERSION="1" LANGU="E" DESCRIPT="Hyperlink" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_HYPERLINK"/>
<source>METHOD create_external_link.
ov_link = zcl_excel_hyperlink=&gt;create( iv_url = iv_url
iv_internal = abap_false ).
ENDMETHOD.</source>
<methodDocumentation/>
</method>
<method CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE_INTERNAL_LINK" VERSION="1" LANGU="E" DESCRIPT="Creates new instance of internal link" EXPOSURE="2" STATE="1" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="1" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE_INTERNAL_LINK" SCONAME="IV_LOCATION" VERSION="1" LANGU="E" DESCRIPT="Location in current spraedsheet" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="CREATE_INTERNAL_LINK" SCONAME="OV_LINK" VERSION="1" LANGU="E" DESCRIPT="Hyperlink" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101014" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="ZCL_EXCEL_HYPERLINK"/>
<source>METHOD create_internal_link.
ov_link = zcl_excel_hyperlink=&gt;create( iv_url = iv_location
iv_internal = abap_true ).
ENDMETHOD.</source>
<methodDocumentation/>
</method>
<method CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="GET_REF" VERSION="1" LANGU="E" DESCRIPT="Gets the reference string" EXPOSURE="2" STATE="1" EDITORDER="5 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="GET_REF" SCONAME="EV_REF" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
<source>METHOD get_ref.
ev_ref = row.
CONDENSE ev_ref.
CONCATENATE column ev_ref INTO ev_ref.
ENDMETHOD.</source>
<methodDocumentation/>
</method>
<method CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="GET_URL" VERSION="1" LANGU="E" DESCRIPT="Gets the urls of the link" EXPOSURE="2" STATE="1" EDITORDER="6 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="GET_URL" SCONAME="EV_URL" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
<source>method GET_URL.
ev_url = me-&gt;location.
endmethod.</source>
<methodDocumentation/>
</method>
<method CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="IS_INTERNAL" VERSION="1" LANGU="E" DESCRIPT="Checks if link is pointing to internall location" EXPOSURE="2" STATE="1" EDITORDER="3 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="IS_INTERNAL" SCONAME="EV_RET" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ABAP_BOOL"/>
<source>method IS_INTERNAL.
ev_ret = me-&gt;internal.
endmethod.</source>
<methodDocumentation/>
</method>
<method CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="SET_CELL_REFERENCE" VERSION="1" LANGU="E" DESCRIPT="Sets reference to the cell" EXPOSURE="2" STATE="1" EDITORDER="4 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="SET_CELL_REFERENCE" SCONAME="IP_COLUMN" VERSION="1" LANGU="E" DESCRIPT="Cell Column" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_COLUMN_ALPHA"/>
<parameter CLSNAME="ZCL_EXCEL_HYPERLINK" CMPNAME="SET_CELL_REFERENCE" SCONAME="IP_ROW" VERSION="1" LANGU="E" DESCRIPT="Cell Row" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_ROW"/>
<source>METHOD set_cell_reference.
me-&gt;column = ip_column.
me-&gt;row = ip_row.
ENDMETHOD.</source>
<methodDocumentation/>
</method>
</CLAS>

View File

@ -128,7 +128,8 @@ public section.
!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_STYLE type ZEXCEL_CELL_STYLE optional
!IP_HYPERLINK type ref to ZCL_EXCEL_HYPERLINK optional .
methods SET_CELL_STYLE
importing
!IP_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA
@ -148,7 +149,13 @@ public section.
!IP_BODY_STYLE type ZEXCEL_CELL_STYLE optional
!IP_TABLE_TITLE type STRING
!IP_TOP_LEFT_COLUMN type ZEXCEL_CELL_COLUMN_ALPHA default &apos;B&apos;
!IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3 .</publicSection>
!IP_TOP_LEFT_ROW type ZEXCEL_CELL_ROW default 3 .
methods GET_HYPERLINKS_SIZE
returning
value(EP_SIZE) type I .
methods GET_HYPERLINKS_ITERATOR
returning
value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .</publicSection>
<protectedSection>*&quot;* protected components of class ZCL_EXCEL_WORKSHEET
*&quot;* do not include other source files here!!!
protected section.</protectedSection>
@ -171,6 +178,7 @@ private section.
data ROW_DIMENSIONS type ZEXCEL_T_WORKSHEET_ROWDIMENSIO .
data TABLES type ref to CL_OBJECT_COLLECTION .
data UPPER_CELL type ZEXCEL_S_CELL_DATA .
data HYPERLINKS type ref to CL_OBJECT_COLLECTION .
methods UPDATE_DIMENSION_RANGE .</privateSection>
<localImplementation>*&quot;* local class implementation for public class
@ -209,6 +217,7 @@ private section.
<attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="TABLES" VERSION="1" LANGU="E" DESCRIPT="Colletion of tables" EXPOSURE="0" STATE="1" EDITORDER="24 " AUTHOR="FEMIA" CREATEDON="20100831" CHANGEDBY="FEMIA" CHANGEDON="20100921" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="TITLE" VERSION="1" LANGU="E" DESCRIPT="Title" EXPOSURE="2" STATE="1" EDITORDER="25 " AUTHOR="FEMIA" CREATEDON="20100629" CHANGEDBY="FEMIA" CHANGEDON="20100921" ATTDECLTYP="0" ATTVALUE="&apos;Worksheet&apos;" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_SHEET_TITLE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="UPPER_CELL" VERSION="1" LANGU="E" DESCRIPT="Top left range cell" EXPOSURE="0" STATE="1" EDITORDER="26 " AUTHOR="FEMIA" CREATEDON="20100704" CHANGEDBY="FEMIA" CHANGEDON="20100921" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_S_CELL_DATA" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="HYPERLINKS" VERSION="1" LANGU="E" DESCRIPT="Colletion of hyperlinks" EXPOSURE="0" STATE="1" EDITORDER="27 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101011" ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " R3RELEASE="701" TYPESRC_LENG="0 "/>
<interfaceMethod CLSNAME="ZCL_EXCEL_WORKSHEET" CPDNAME="ZIF_EXCEL_SHEET_PROTECTION~INITIALIZE">
<source>METHOD zif_excel_sheet_protection~initialize.
@ -390,6 +399,7 @@ endmethod.</source>
CREATE OBJECT tables.
CREATE OBJECT drawings.
me-&gt;zif_excel_sheet_protection~initialize( ).
CREATE OBJECT hyperlinks.
* initialize active cell coordinates
active_cell-cell_row = 1.
@ -709,7 +719,8 @@ endmethod.</source>
<parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_VALUE" VERSION="1" LANGU="E" DESCRIPT="Cell Value" CMPTYPE="1" MTDTYPE="0" EDITORDER="3 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20100629" CHANGEDBY="FEMIA" CHANGEDON="20100921" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="SIMPLE" PAROPTIONL="X"/>
<parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_FORMULA" VERSION="1" LANGU="E" DESCRIPT="Cell Formula" CMPTYPE="1" MTDTYPE="0" EDITORDER="4 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20100710" CHANGEDBY="FEMIA" CHANGEDON="20100921" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_FORMULA" PAROPTIONL="X"/>
<parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_STYLE" VERSION="1" LANGU="E" DESCRIPT="Single-Character Indicator" CMPTYPE="1" MTDTYPE="0" EDITORDER="5 " DISPID="0 " AUTHOR="FEMIA" CREATEDON="20100705" CHANGEDBY="FEMIA" CHANGEDON="20100921" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE" PAROPTIONL="X"/>
<source>method SET_CELL.
<parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="SET_CELL" SCONAME="IP_HYPERLINK" VERSION="1" LANGU="E" DESCRIPT="Hyperlink" CMPTYPE="1" MTDTYPE="0" EDITORDER="6 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101011" PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_HYPERLINK" PAROPTIONL="X"/>
<source>METHOD set_cell.
DATA: lv_column TYPE zexcel_cell_column,
ls_sheet_content TYPE zexcel_s_cell_data,
@ -766,6 +777,12 @@ endmethod.</source>
ENDCASE.
ENDIF.
IF ip_hyperlink IS BOUND.
ip_hyperlink-&gt;set_cell_reference( ip_column = ip_column
ip_row = ip_row ).
me-&gt;hyperlinks-&gt;add( ip_hyperlink ).
ENDIF.
lv_column = zcl_excel_common=&gt;convert_column2int( ip_column ).
READ TABLE sheet_content ASSIGNING &lt;fs_sheet_content&gt; WITH KEY cell_row = ip_row
@ -964,4 +981,18 @@ endmethod.</source>
endmethod.</source>
</method>
<method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_ITERATOR" VERSION="1" LANGU="E" DESCRIPT="Get iterator for links collection" EXPOSURE="2" STATE="1" EDITORDER="30 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101011" MTDTYPE="0" MTDDECLTYP="0" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_ITERATOR" SCONAME="EO_ITERATOR" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="CL_OBJECT_COLLECTION_ITERATOR"/>
<source>METHOD get_hyperlinks_iterator.
eo_iterator = hyperlinks-&gt;get_iterator( ).
ENDMETHOD.</source>
<methodDocumentation/>
</method>
<method CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_SIZE" VERSION="1" LANGU="E" DESCRIPT="Gets the size of links collection" EXPOSURE="2" STATE="1" EDITORDER="27 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDBY="BCUSER" CHANGEDON="20101011" MTDTYPE="0" MTDDECLTYP="0" R3RELEASE="701" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_WORKSHEET" CMPNAME="GET_HYPERLINKS_SIZE" SCONAME="EP_SIZE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " AUTHOR="BCUSER" CREATEDON="20101011" CHANGEDON="00000000" PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="I"/>
<source>METHOD get_hyperlinks_size.
ep_size = hyperlinks-&gt;size( ).
ENDMETHOD.</source>
<methodDocumentation/>
</method>
</CLAS>

View File

@ -1722,7 +1722,8 @@ endmethod.</source>
ls_style_mapping TYPE zexcel_s_styles_mapping,
lv_freeze_cell_row TYPE zexcel_cell_row,
lv_freeze_cell_column TYPE zexcel_cell_column,
lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha.
lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha,
lv_relation_id TYPE i.
DATA: default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime,
default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi.
@ -2307,6 +2308,49 @@ endmethod.</source>
lo_element_root-&gt;append_child( new_child = lo_element ).
ENDIF.
* links
DATA: lv_hyperlinks_count TYPE i,
lo_link TYPE REF TO zcl_excel_hyperlink.
lv_hyperlinks_count = io_worksheet-&gt;get_hyperlinks_size( ).
IF lv_hyperlinks_count &gt; 0.
lo_element = lo_document-&gt;create_simple_element( name = &apos;hyperlinks&apos;
parent = lo_document ).
lv_relation_id = io_worksheet-&gt;get_tables_size( ). &quot;need to count tables
lo_iterator = io_worksheet-&gt;get_hyperlinks_iterator( ).
WHILE lo_iterator-&gt;if_object_collection_iterator~has_next( ) EQ abap_true.
lo_link ?= lo_iterator-&gt;if_object_collection_iterator~get_next( ).
lo_element_2 = lo_document-&gt;create_simple_element( name = &apos;hyperlink&apos;
parent = lo_element ).
lv_value = lo_link-&gt;get_ref( ).
lo_element_2-&gt;set_attribute_ns( name = &apos;ref&apos;
value = lv_value ).
IF lo_link-&gt;is_internal( ) = abap_true.
lv_value = lo_link-&gt;get_url( ).
lo_element_2-&gt;set_attribute_ns( name = &apos;location&apos;
value = lv_value ).
ELSE.
ADD 1 TO lv_relation_id.
lv_value = lv_relation_id.
CONDENSE lv_value.
CONCATENATE &apos;rId&apos; lv_value INTO lv_value.
lo_element_2-&gt;set_attribute_ns( name = &apos;r:id&apos;
value = lv_value ).
ENDIF.
lo_element-&gt;append_child( new_child = lo_element_2 ).
ENDWHILE.
lo_element_root-&gt;append_child( new_child = lo_element ).
ENDIF.
&quot; pageMargins node
lo_element = lo_document-&gt;create_simple_element( name = lc_xml_node_pagemargins
parent = lo_document ).
@ -2467,13 +2511,13 @@ endmethod.</source>
lo_element-&gt;set_attribute_ns( name = &apos;count&apos;
value = lv_value ).
lv_table_count = 0.
lv_relation_id = 0.
lo_iterator = io_worksheet-&gt;get_tables_iterator( ).
WHILE lo_iterator-&gt;if_object_collection_iterator~has_next( ) EQ abap_true.
lo_table ?= lo_iterator-&gt;if_object_collection_iterator~get_next( ).
ADD 1 TO lv_table_count.
ADD 1 TO lv_relation_id.
lv_value = lv_table_count.
lv_value = lv_relation_id.
CONDENSE lv_value.
CONCATENATE &apos;rId&apos; lv_value INTO lv_value.
lo_element_2 = lo_document-&gt;create_simple_element( name = &apos;tablePart&apos;
@ -2523,10 +2567,13 @@ ENDMETHOD.</source>
lc_xml_attr_id TYPE string VALUE &apos;Id&apos;,
lc_xml_attr_type TYPE string VALUE &apos;Type&apos;,
lc_xml_attr_target TYPE string VALUE &apos;Target&apos;,
lc_xml_attr_target_mode TYPE string VALUE &apos;TargetMode&apos;,
lc_xml_val_external TYPE string VALUE &apos;External&apos;,
&quot; Node namespace
lc_xml_node_rels_ns TYPE string VALUE &apos;http://schemas.openxmlformats.org/package/2006/relationships&apos;,
lc_xml_node_rid_table_tp TYPE string VALUE &apos;http://schemas.openxmlformats.org/officeDocument/2006/relationships/table&apos;,
lc_xml_node_rid_drawing_tp TYPE string VALUE &apos;http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing&apos;.
lc_xml_node_rid_link_tp TYPE string VALUE &apos;http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink&apos;.
DATA: lo_ixml TYPE REF TO if_ixml,
lo_document TYPE REF TO if_ixml_document,
@ -2537,7 +2584,8 @@ ENDMETHOD.</source>
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_table TYPE REF TO zcl_excel_table,
lo_link TYPE REF TO zcl_excel_hyperlink.
DATA: lv_value TYPE string,
lv_counter TYPE i,
@ -2590,6 +2638,30 @@ ENDMETHOD.</source>
lo_element_root-&gt;append_child( new_child = lo_element ).
ENDWHILE.
lo_iterator = io_worksheet-&gt;get_hyperlinks_iterator( ).
WHILE lo_iterator-&gt;if_object_collection_iterator~has_next( ) EQ abap_true.
lo_link ?= lo_iterator-&gt;if_object_collection_iterator~get_next( ).
ADD 1 TO lv_counter.
lv_value = lv_counter.
CONDENSE lv_value.
CONCATENATE &apos;rId&apos; lv_value INTO lv_value.
lo_element = lo_document-&gt;create_simple_element( name = lc_xml_node_relationship
parent = lo_document ).
lo_element-&gt;set_attribute_ns( name = lc_xml_attr_id
value = lv_value ).
lo_element-&gt;set_attribute_ns( name = lc_xml_attr_type
value = lc_xml_node_rid_link_tp ).
lv_value = lo_link-&gt;get_url( ).
lo_element-&gt;set_attribute_ns( name = lc_xml_attr_target
value = lv_value ).
lo_element-&gt;set_attribute_ns( name = lc_xml_attr_target_mode
value = lc_xml_val_external ).
lo_element_root-&gt;append_child( new_child = lo_element ).
ENDWHILE.
* drawing
DATA: lo_drawings TYPE REF TO zcl_excel_drawings.

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-16"?>
<PROG NAME="ZDEMO_EXCEL1" VARCL="X" SUBC="1" CNAM="FEMIA" CDAT="20100711" UNAM="FEMIA" UDAT="20100924" VERN="000062" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" SDATE="20100924" STIME="153901" IDATE="20100924" ITIME="153901" UCCHECK="X">
<PROG NAME="ZDEMO_EXCEL1" VARCL="X" SUBC="1" CNAM="FEMIA" CDAT="20100711" UNAM="BCUSER" UDAT="20101014" VERN="000040" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" SDATE="20101014" STIME="222501" IDATE="20101014" ITIME="222501" UCCHECK="X">
<textPool>
<language SPRAS="E">
<textElement ID="R" ENTRY="Test for excel" LENGTH="14 "/>
@ -17,7 +17,9 @@ REPORT zdemo_excel1.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_excel_writer TYPE REF TO zif_excel_writer,
lo_worksheet TYPE REF TO zcl_excel_worksheet.
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_hyperlink TYPE REF TO zcl_excel_hyperlink,
column_dimension TYPE REF TO zcl_excel_worksheet_columndime.
DATA: lv_file TYPE xstring,
lv_bytecount TYPE i,
@ -59,6 +61,11 @@ START-OF-SELECTION.
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = 2 ip_value = &apos;Hello world&apos; ).
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = 3 ip_value = sy-datum ).
lo_worksheet-&gt;set_cell( ip_column = &apos;C&apos; ip_row = 3 ip_value = sy-uzeit ).
lo_hyperlink = zcl_excel_hyperlink=&gt;create_external_link( iv_url = &apos;https://cw.sdn.sap.com/cw/groups/abap2xlsx&apos; ).
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = 4 ip_value = &apos;Click here to visit abap2xlsx homepage&apos; ip_hyperlink = lo_hyperlink ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;B&apos; ).
column_dimension-&gt;set_width( 11 ).
CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
lv_file = lo_excel_writer-&gt;write_file( lo_excel ).

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-16"?>
<PROG NAME="ZDEMO_EXCEL4" VARCL="X" SUBC="1" CNAM="FEMIA" CDAT="20100711" UNAM="FEMIA" UDAT="20100924" VERN="000040" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" SDATE="20100924" STIME="153902" IDATE="20100924" ITIME="153902" UCCHECK="X">
<PROG NAME="ZDEMO_EXCEL4" VARCL="X" SUBC="1" CNAM="FEMIA" CDAT="20100711" UNAM="BCUSER" UDAT="20101014" VERN="000019" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" SDATE="20101014" STIME="220426" IDATE="20101014" ITIME="220426" UCCHECK="X">
<textPool>
<language SPRAS="E">
<textElement ID="R" ENTRY="Test for excel" LENGTH="14 "/>
@ -17,7 +17,8 @@ REPORT zdemo_excel4.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_excel_writer TYPE REF TO zif_excel_writer,
lo_worksheet TYPE REF TO zcl_excel_worksheet.
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_hyperlink TYPE REF TO zcl_excel_hyperlink.
DATA: lv_file TYPE xstring,
lv_bytecount TYPE i,
@ -57,6 +58,8 @@ START-OF-SELECTION.
lo_worksheet = lo_excel-&gt;get_active_worksheet( ).
lo_worksheet-&gt;title = &apos;Sheet1&apos;.
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = 2 ip_value = &apos;This is the first sheet&apos; ).
lo_hyperlink = zcl_excel_hyperlink=&gt;create_internal_link( iv_location = &apos;Sheet2!B2&apos; ).
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = 3 ip_value = &apos;This is link to second sheet&apos; ip_hyperlink = lo_hyperlink ).
lo_worksheet-&gt;sheet_setup-&gt;set_page_margins( ip_header = &apos;1&apos; ip_footer = &apos;1&apos; ip_unit = &apos;cm&apos; ).
lo_worksheet-&gt;sheet_setup-&gt;black_and_white = &apos;X&apos;.
@ -73,6 +76,8 @@ START-OF-SELECTION.
lo_worksheet = lo_excel-&gt;add_new_worksheet( ).
lo_worksheet-&gt;title = &apos;Sheet2&apos;.
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = 2 ip_value = &apos;This is the second sheet&apos; ).
lo_hyperlink = zcl_excel_hyperlink=&gt;create_internal_link( iv_location = &apos;Sheet1!B2&apos; ).
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = 3 ip_value = &apos;This is link to first sheet&apos; ip_hyperlink = lo_hyperlink ).
CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
lv_file = lo_excel_writer-&gt;write_file( lo_excel ).