abap2xlsx/ZA2X/CLAS/ZCL_EXCEL_READER_XLSM.slnk
Ivan 24c5fca308 Update slinkees
Update of all the slinkees files with the latest version of SAPLink to
simplify merge of pull request
2015-01-12 14:55:28 -06:00

137 lines
6.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<CLAS CLSNAME="ZCL_EXCEL_READER_XLSM" VERSION="1" LANGU="E" DESCRIPT="Excel with macro reader" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="ZCL_EXCEL_READER_2007">
<localImplementation>*&quot;* use this source file for the definition and implementation of
*&quot;* local helper classes, interface definitions and type
*&quot;* declarations</localImplementation>
<localTypes>*&quot;* use this source file for any type of declarations (class
*&quot;* definitions, interfaces or type declarations) you need for
*&quot;* components in the private section</localTypes>
<localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros>
<inheritance CLSNAME="ZCL_EXCEL_READER_XLSM" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" STATE="1">
<redefinition CLSNAME="ZCL_EXCEL_READER_XLSM" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" MTDNAME="LOAD_WORKBOOK" EXPOSURE="1"/>
<redefinition CLSNAME="ZCL_EXCEL_READER_XLSM" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" MTDNAME="LOAD_WORKSHEET" EXPOSURE="1"/>
</inheritance>
<method CLSNAME="ZCL_EXCEL_READER_XLSM" CMPNAME="LOAD_VBAPROJECT" VERSION="1" LANGU="E" DESCRIPT="Load VBA binary" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_XLSM" CMPNAME="LOAD_VBAPROJECT" SCONAME="IP_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<parameter CLSNAME="ZCL_EXCEL_READER_XLSM" CMPNAME="LOAD_VBAPROJECT" SCONAME="IP_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL"/>
<source>METHOD load_vbaproject.
DATA lv_content TYPE xstring.
lv_content = me-&gt;get_from_zip_archive( ip_path ).
ip_excel-&gt;zif_excel_book_vba_project~set_vbaproject( lv_content ).
ENDMETHOD.</source>
</method>
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKBOOK" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<source>method LOAD_WORKBOOK.
super-&gt;load_workbook( EXPORTING iv_workbook_full_filename = iv_workbook_full_filename
io_excel = io_excel ).
CONSTANTS: lc_vba_project TYPE string VALUE &apos;http://schemas.microsoft.com/office/2006/relationships/vbaProject&apos;.
DATA: rels_workbook_path TYPE string,
rels_workbook TYPE REF TO if_ixml_document,
path TYPE string,
node TYPE REF TO if_ixml_element,
workbook TYPE REF TO if_ixml_document,
stripped_name TYPE chkfile,
dirname TYPE string,
relationship TYPE t_relationship,
fileversion TYPE t_fileversion,
workbookpr TYPE t_workbookpr.
FIELD-SYMBOLS: &lt;worksheet&gt; TYPE t_relationship.
CALL FUNCTION &apos;TRINT_SPLIT_FILE_AND_PATH&apos;
EXPORTING
full_name = iv_workbook_full_filename
IMPORTING
stripped_name = stripped_name
file_path = dirname.
&quot; Read Workbook Relationships
CONCATENATE dirname &apos;_rels/&apos; stripped_name &apos;.rels&apos;
INTO rels_workbook_path.
rels_workbook = me-&gt;get_ixml_from_zip_archive( rels_workbook_path ).
node ?= rels_workbook-&gt;find_from_name( &apos;Relationship&apos; ).
WHILE node IS BOUND.
me-&gt;fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ).
CASE relationship-type.
WHEN lc_vba_project.
&quot; Read VBA binary
CONCATENATE dirname relationship-target INTO path.
me-&gt;load_vbaproject( ip_path = path
ip_excel = io_excel ).
WHEN OTHERS.
ENDCASE.
node ?= node-&gt;get_next( ).
ENDWHILE.
&quot; Read Workbook codeName
workbook = me-&gt;get_ixml_from_zip_archive( iv_workbook_full_filename ).
node ?= workbook-&gt;find_from_name( &apos;fileVersion&apos; ).
IF node IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = node
CHANGING cp_structure = fileversion ).
io_excel-&gt;zif_excel_book_vba_project~set_codename( fileversion-codename ).
ENDIF.
&quot; Read Workbook codeName
workbook = me-&gt;get_ixml_from_zip_archive( iv_workbook_full_filename ).
node ?= workbook-&gt;find_from_name( &apos;workbookPr&apos; ).
IF node IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = node
CHANGING cp_structure = workbookpr ).
io_excel-&gt;zif_excel_book_vba_project~set_codename_pr( workbookpr-codename ).
ENDIF.
endmethod.</source>
</method>
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<source>method LOAD_WORKSHEET.
super-&gt;load_worksheet( EXPORTING ip_path = ip_path
io_worksheet = io_worksheet ).
DATA: path TYPE string,
node TYPE REF TO if_ixml_element,
worksheet TYPE REF TO if_ixml_document,
sheetpr TYPE t_sheetpr.
* &quot; Read Workbook codeName
* workbook = me-&gt;get_ixml_from_zip_archive( ip_path ).
* node ?= workbook-&gt;find_from_name( &apos;fileVersion&apos; ).
* IF node IS BOUND.
*
* fill_struct_from_attributes( EXPORTING ip_element = node
* CHANGING cp_structure = fileversion ).
*
* IO_WORKSHEET-&gt;zif_excel_book_vba_project~set_codename( fileversion-codename ).
* ENDIF.
&quot; Read Workbook codeName
worksheet = me-&gt;get_ixml_from_zip_archive( ip_path ).
node ?= worksheet-&gt;find_from_name( &apos;sheetPr&apos; ).
IF node IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = node
CHANGING cp_structure = sheetpr ).
io_worksheet-&gt;zif_excel_sheet_vba_project~set_codename_pr( sheetpr-codename ).
ENDIF.
endmethod.</source>
</method>
</CLAS>