Read XLSX from third-party providers (namespaces) (#935)

* theme namespace

* XLSM and rename namespace default to main

Co-authored-by: sandraros <sandra.rossi@gmail.com>
Co-authored-by: Abo <andrea@borgia.bo.it>
This commit is contained in:
sandraros 2022-01-15 17:05:38 +01:00 committed by GitHub
parent a09229a130
commit 6a32480e5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 317 additions and 257 deletions

View File

@ -67,6 +67,11 @@ CLASS zcl_excel_common DEFINITION
EXPORTING
!e_column TYPE zexcel_cell_column_alpha
!e_row TYPE zexcel_cell_row .
CLASS-METHODS clone_ixml_with_namespaces
IMPORTING
element TYPE REF TO if_ixml_element
RETURNING
VALUE(result) TYPE REF TO if_ixml_element.
CLASS-METHODS date_to_excel_string
IMPORTING
!ip_value TYPE d
@ -625,6 +630,32 @@ CLASS zcl_excel_common IMPLEMENTATION.
ENDMETHOD.
METHOD clone_ixml_with_namespaces.
DATA: iterator TYPE REF TO if_ixml_node_iterator,
node TYPE REF TO if_ixml_node,
xmlns TYPE ihttpnvp,
xmlns_table TYPE TABLE OF ihttpnvp.
FIELD-SYMBOLS:
<xmlns> TYPE ihttpnvp.
iterator = element->create_iterator( ).
result ?= element->clone( ).
node = iterator->get_next( ).
WHILE node IS BOUND.
xmlns-name = node->get_namespace_prefix( ).
xmlns-value = node->get_namespace_uri( ).
COLLECT xmlns INTO xmlns_table.
node = iterator->get_next( ).
ENDWHILE.
LOOP AT xmlns_table ASSIGNING <xmlns>.
result->set_attribute_ns( prefix = 'xmlns' name = <xmlns>-name value = <xmlns>-value ).
ENDLOOP.
ENDMETHOD.
METHOD date_to_excel_string.
DATA: lv_date_diff TYPE i.

View File

@ -28,6 +28,13 @@ CLASS zcl_excel_drawing DEFINITION
CONSTANTS c_media_type_xml TYPE string VALUE 'xml'. "#EC NOTEXT
CONSTANTS c_media_type_jpg TYPE string VALUE 'jpg'. "#EC NOTEXT
CONSTANTS type_image_header_footer TYPE zexcel_drawing_type VALUE 'hd_ft'. "#EC NOTEXT
CONSTANTS: BEGIN OF namespace,
c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart',
a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main',
r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006',
c14 TYPE string VALUE 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart',
END OF namespace.
METHODS constructor
IMPORTING
@ -401,56 +408,56 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
ENDCASE.
"Fill properties
node2 ?= node->find_from_name( name = 'date1904' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'date1904' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_1904val = ls_prop-val.
node2 ?= node->find_from_name( name = 'lang' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'lang' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_langval = ls_prop-val.
node2 ?= node->find_from_name( name = 'roundedCorners' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'roundedCorners' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_roundedcornersval = ls_prop-val.
"style
node2 ?= node->find_from_name( name = 'style' namespace = 'c14' ).
node2 ?= node->find_from_name_ns( name = 'style' uri = namespace-c14 ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_c14styleval = ls_prop-val.
node2 ?= node->find_from_name( name = 'style' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'style' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_styleval = ls_prop-val.
"---------------------------Read graph properties
"ADDED
CLEAR node2.
node2 ?= node->find_from_name( name = 'title' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'title' uri = namespace-c ).
IF node2 IS BOUND AND node2 IS NOT INITIAL.
node3 ?= node2->find_from_name( name = 't' namespace = 'a' ).
node3 ?= node2->find_from_name_ns( name = 't' uri = namespace-a ).
me->graph->title = node3->get_value( ).
ENDIF.
"END
node2 ?= node->find_from_name( name = 'autoTitleDeleted' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'autoTitleDeleted' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_autotitledeletedval = ls_prop-val.
"plotArea
CASE me->graph_type.
WHEN c_graph_bars.
node2 ?= node->find_from_name( name = 'barDir' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'barDir' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_bardirval = ls_prop-val.
node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'grouping' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_groupingval = ls_prop-val.
node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'varyColors' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_varycolorsval = ls_prop-val.
"Load series
CALL METHOD node->get_elements_by_tag_name
CALL METHOD node->get_elements_by_tag_name_ns
EXPORTING
* depth = 0
name = 'ser'
* namespace = ''
uri = namespace-c
RECEIVING
rval = lo_collection.
CALL METHOD lo_collection->create_iterator
@ -461,27 +468,27 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
node2 ?= lo_node->query_interface( ixml_iid_element ).
ENDIF.
WHILE lo_node IS BOUND.
node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'idx' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_idx = ls_prop-val.
node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'order' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_order = ls_prop-val.
node3 ?= node2->find_from_name( name = 'invertIfNegative' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'invertIfNegative' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_invertifnegative = ls_prop-val.
node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'v' uri = namespace-c ).
IF node3 IS BOUND.
lv_sername = node3->get_value( ).
ENDIF.
node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'strRef' uri = namespace-c ).
IF node3 IS BOUND.
node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ).
node4 ?= node3->find_from_name_ns( name = 'f' uri = namespace-c ).
lv_label = node4->get_value( ).
ENDIF.
node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'numRef' uri = namespace-c ).
IF node3 IS BOUND.
node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ).
node4 ?= node3->find_from_name_ns( name = 'f' uri = namespace-c ).
lv_value = node4->get_value( ).
ENDIF.
CALL METHOD lo_barchart->create_serie
@ -498,35 +505,35 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
ENDIF.
ENDWHILE.
"note: numCache avoided
node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showLegendKey' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_showlegendkeyval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showVal' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_showvalval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showCatName' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_showcatnameval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showSerName' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_showsernameval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showPercent' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_showpercentval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showBubbleSize' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_showbubblesizeval = ls_prop-val.
node2 ?= node->find_from_name( name = 'gapWidth' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'gapWidth' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_gapwidthval = ls_prop-val.
"Load axes
node2 ?= node->find_from_name( name = 'barChart' namespace = 'c' ).
CALL METHOD node2->get_elements_by_tag_name
node2 ?= node->find_from_name_ns( name = 'barChart' uri = namespace-c ).
CALL METHOD node2->get_elements_by_tag_name_ns
EXPORTING
* depth = 0
name = 'axId'
* namespace = ''
uri = namespace-c
RECEIVING
rval = lo_collection.
CALL METHOD lo_collection->create_iterator
@ -540,45 +547,45 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lv_axid = ls_prop-val.
IF sy-index EQ 1. "catAx
node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ).
node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'catAx' uri = namespace-c ).
node3 ?= node2->find_from_name_ns( name = 'orientation' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_orientation = ls_prop-val.
node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'delete' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_delete = ls_prop-val.
node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'axPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_axpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'numFmt' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_formatcode = ls_prop-formatcode.
lv_sourcelinked = ls_prop-sourcelinked.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_majortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_minortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'tickLblPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_ticklblpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crossAx' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crossax = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crosses' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crosses = ls_prop-val.
node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'auto' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_auto = ls_prop-val.
node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'lblAlgn' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_lblalgn = ls_prop-val.
node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'lblOffset' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_lbloffset = ls_prop-val.
node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'noMultiLvlLbl' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_nomultilvllbl = ls_prop-val.
CALL METHOD lo_barchart->create_ax
@ -600,36 +607,36 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
ip_lbloffset = lv_lbloffset
ip_nomultilvllbl = lv_nomultilvllbl.
ELSEIF sy-index EQ 2. "valAx
node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ).
node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'valAx' uri = namespace-c ).
node3 ?= node2->find_from_name_ns( name = 'orientation' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_orientation = ls_prop-val.
node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'delete' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_delete = ls_prop-val.
node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'axPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_axpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'numFmt' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_formatcode = ls_prop-formatcode.
lv_sourcelinked = ls_prop-sourcelinked.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_majortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_minortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'tickLblPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_ticklblpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crossAx' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crossax = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crosses' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crosses = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crossBetween' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crossbetween = ls_prop-val.
CALL METHOD lo_barchart->create_ax
@ -655,16 +662,16 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
ENDWHILE.
WHEN c_graph_pie.
node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'varyColors' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_varycolorsval = ls_prop-val.
"Load series
CALL METHOD node->get_elements_by_tag_name
CALL METHOD node->get_elements_by_tag_name_ns
EXPORTING
* depth = 0
name = 'ser'
* namespace = ''
uri = namespace-c
RECEIVING
rval = lo_collection.
CALL METHOD lo_collection->create_iterator
@ -675,24 +682,24 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
node2 ?= lo_node->query_interface( ixml_iid_element ).
ENDIF.
WHILE lo_node IS BOUND.
node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'idx' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_idx = ls_prop-val.
node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'order' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_order = ls_prop-val.
node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'v' uri = namespace-c ).
IF node3 IS BOUND.
lv_sername = node3->get_value( ).
ENDIF.
node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'strRef' uri = namespace-c ).
IF node3 IS BOUND.
node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ).
node4 ?= node3->find_from_name_ns( name = 'f' uri = namespace-c ).
lv_label = node4->get_value( ).
ENDIF.
node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'numRef' uri = namespace-c ).
IF node3 IS BOUND.
node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ).
node4 ?= node3->find_from_name_ns( name = 'f' uri = namespace-c ).
lv_value = node4->get_value( ).
ENDIF.
CALL METHOD lo_piechart->create_serie
@ -709,44 +716,44 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
ENDWHILE.
"note: numCache avoided
node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showLegendKey' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_showlegendkeyval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showVal' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_showvalval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showCatName' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_showcatnameval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showSerName' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_showsernameval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showPercent' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_showpercentval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showBubbleSize' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_showbubblesizeval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showLeaderLines' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showLeaderLines' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_showleaderlinesval = ls_prop-val.
node2 ?= node->find_from_name( name = 'firstSliceAng' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'firstSliceAng' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_firstsliceangval = ls_prop-val.
WHEN c_graph_line.
node2 ?= node->find_from_name( name = 'grouping' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'grouping' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_groupingval = ls_prop-val.
node2 ?= node->find_from_name( name = 'varyColors' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'varyColors' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_varycolorsval = ls_prop-val.
"Load series
CALL METHOD node->get_elements_by_tag_name
CALL METHOD node->get_elements_by_tag_name_ns
EXPORTING
* depth = 0
name = 'ser'
* namespace = ''
uri = namespace-c
RECEIVING
rval = lo_collection.
CALL METHOD lo_collection->create_iterator
@ -757,30 +764,30 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
node2 ?= lo_node->query_interface( ixml_iid_element ).
ENDIF.
WHILE lo_node IS BOUND.
node3 ?= node2->find_from_name( name = 'idx' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'idx' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_idx = ls_prop-val.
node3 ?= node2->find_from_name( name = 'order' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'order' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_order = ls_prop-val.
node3 ?= node2->find_from_name( name = 'symbol' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'symbol' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_symbol = ls_prop-val.
node3 ?= node2->find_from_name( name = 'smooth' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'smooth' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_smooth = ls_prop-val.
node3 ?= node2->find_from_name( name = 'v' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'v' uri = namespace-c ).
IF node3 IS BOUND.
lv_sername = node3->get_value( ).
ENDIF.
node3 ?= node2->find_from_name( name = 'strRef' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'strRef' uri = namespace-c ).
IF node3 IS BOUND.
node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ).
node4 ?= node3->find_from_name_ns( name = 'f' uri = namespace-c ).
lv_label = node4->get_value( ).
ENDIF.
node3 ?= node2->find_from_name( name = 'numRef' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'numRef' uri = namespace-c ).
IF node3 IS BOUND.
node4 ?= node3->find_from_name( name = 'f' namespace = 'c' ).
node4 ?= node3->find_from_name_ns( name = 'f' uri = namespace-c ).
lv_value = node4->get_value( ).
ENDIF.
CALL METHOD lo_linechart->create_serie
@ -798,44 +805,44 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
ENDIF.
ENDWHILE.
"note: numCache avoided
node2 ?= node->find_from_name( name = 'showLegendKey' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showLegendKey' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_showlegendkeyval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showVal' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showVal' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_showvalval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showCatName' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showCatName' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_showcatnameval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showSerName' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showSerName' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_showsernameval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showPercent' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showPercent' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_showpercentval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showBubbleSize' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showBubbleSize' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_showbubblesizeval = ls_prop-val.
node ?= node->find_from_name( name = 'lineChart' namespace = 'c' ).
node2 ?= node->find_from_name( name = 'marker' namespace = 'c' depth = '1' ).
node ?= node->find_from_name_ns( name = 'lineChart' uri = namespace-c ).
node2 ?= node->find_from_name_ns( name = 'marker' uri = namespace-c depth = '1' ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_markerval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'smooth' namespace = 'c' depth = '1' ).
node2 ?= node->find_from_name_ns( name = 'smooth' uri = namespace-c depth = '1' ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_smoothval = ls_prop-val.
node ?= ip_chart->if_ixml_node~get_first_child( ).
CHECK node IS NOT INITIAL.
"Load axes
node2 ?= node->find_from_name( name = 'lineChart' namespace = 'c' ).
CALL METHOD node2->get_elements_by_tag_name
node2 ?= node->find_from_name_ns( name = 'lineChart' uri = namespace-c ).
CALL METHOD node2->get_elements_by_tag_name_ns
EXPORTING
* depth = 0
name = 'axId'
* namespace = ''
uri = namespace-c
RECEIVING
rval = lo_collection.
CALL METHOD lo_collection->create_iterator
@ -849,41 +856,41 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lv_axid = ls_prop-val.
IF sy-index EQ 1. "catAx
node2 ?= node->find_from_name( name = 'catAx' namespace = 'c' ).
node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'catAx' uri = namespace-c ).
node3 ?= node2->find_from_name_ns( name = 'orientation' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_orientation = ls_prop-val.
node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'delete' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_delete = ls_prop-val.
node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'axPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_axpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_majortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_minortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'tickLblPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_ticklblpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crossAx' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crossax = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crosses' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crosses = ls_prop-val.
node3 ?= node2->find_from_name( name = 'auto' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'auto' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_auto = ls_prop-val.
node3 ?= node2->find_from_name( name = 'lblAlgn' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'lblAlgn' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_lblalgn = ls_prop-val.
node3 ?= node2->find_from_name( name = 'lblOffset' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'lblOffset' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_lbloffset = ls_prop-val.
node3 ?= node2->find_from_name( name = 'noMultiLvlLbl' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'noMultiLvlLbl' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_nomultilvllbl = ls_prop-val.
CALL METHOD lo_linechart->create_ax
@ -905,36 +912,36 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
ip_lbloffset = lv_lbloffset
ip_nomultilvllbl = lv_nomultilvllbl.
ELSEIF sy-index EQ 2. "valAx
node2 ?= node->find_from_name( name = 'valAx' namespace = 'c' ).
node3 ?= node2->find_from_name( name = 'orientation' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'valAx' uri = namespace-c ).
node3 ?= node2->find_from_name_ns( name = 'orientation' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_orientation = ls_prop-val.
node3 ?= node2->find_from_name( name = 'delete' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'delete' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_delete = ls_prop-val.
node3 ?= node2->find_from_name( name = 'axPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'axPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_axpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'numFmt' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'numFmt' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_formatcode = ls_prop-formatcode.
lv_sourcelinked = ls_prop-sourcelinked.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_majortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'majorTickMark' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'majorTickMark' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_minortickmark = ls_prop-val.
node3 ?= node2->find_from_name( name = 'tickLblPos' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'tickLblPos' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_ticklblpos = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crossAx' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crossAx' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crossax = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crosses' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crosses' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crosses = ls_prop-val.
node3 ?= node2->find_from_name( name = 'crossBetween' namespace = 'c' ).
node3 ?= node2->find_from_name_ns( name = 'crossBetween' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = ls_prop ).
lv_crossbetween = ls_prop-val.
CALL METHOD lo_linechart->create_ax
@ -964,60 +971,60 @@ CLASS ZCL_EXCEL_DRAWING IMPLEMENTATION.
"legend
CASE me->graph_type.
WHEN c_graph_bars.
node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'legendPos' uri = namespace-c ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_legendposval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'overlay' uri = namespace-c ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_barchart->ns_overlayval = ls_prop-val.
ENDIF.
WHEN c_graph_line.
node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'legendPos' uri = namespace-c ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_legendposval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'overlay' uri = namespace-c ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_linechart->ns_overlayval = ls_prop-val.
ENDIF.
WHEN c_graph_pie.
node2 ?= node->find_from_name( name = 'legendPos' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'legendPos' uri = namespace-c ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_legendposval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'overlay' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'overlay' uri = namespace-c ).
IF node2 IS BOUND.
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_overlayval = ls_prop-val.
ENDIF.
node2 ?= node->find_from_name( name = 'pPr' namespace = 'a' ).
node2 ?= node->find_from_name_ns( name = 'pPr' uri = namespace-a ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_pprrtl = ls_prop-rtl.
node2 ?= node->find_from_name( name = 'endParaRPr' namespace = 'a' ).
node2 ?= node->find_from_name_ns( name = 'endParaRPr' uri = namespace-a ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
lo_piechart->ns_endpararprlang = ls_prop-lang.
WHEN OTHERS.
ENDCASE.
node2 ?= node->find_from_name( name = 'plotVisOnly' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'plotVisOnly' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_plotvisonlyval = ls_prop-val.
node2 ?= node->find_from_name( name = 'dispBlanksAs' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'dispBlanksAs' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_dispblanksasval = ls_prop-val.
node2 ?= node->find_from_name( name = 'showDLblsOverMax' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'showDLblsOverMax' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_prop ).
me->graph->ns_showdlblsovermaxval = ls_prop-val.
"---------------------
node2 ?= node->find_from_name( name = 'pageMargins' namespace = 'c' ).
node2 ?= node->find_from_name_ns( name = 'pageMargins' uri = namespace-c ).
zcl_excel_reader_2007=>fill_struct_from_attributes( EXPORTING ip_element = node2 CHANGING cp_structure = ls_pagemargins ).
me->graph->pagemargins = ls_pagemargins.

View File

@ -280,9 +280,34 @@ CLASS zcl_excel_reader_2007 DEFINITION
!ip_excel TYPE REF TO zcl_excel
RAISING
zcx_excel .
CONSTANTS: BEGIN OF namespace,
x14ac TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',
vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader
c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart',
a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main',
xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing',
mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006',
r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',
hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
printer_settings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings',
shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',
styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',
relationships TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships',
core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
main TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
END OF namespace.
PRIVATE SECTION.
DATA zip TYPE REF TO lcl_zip_archive .
DATA: gid TYPE i.
METHODS create_zip_archive
IMPORTING
@ -501,7 +526,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* italic
*--------------------------------------------------------------------*
lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'i' ).
lo_ixml_element = lo_ixml_dxf_child->find_from_name_ns( name = 'i' uri = namespace-main ).
IF lo_ixml_element IS BOUND.
CLEAR lv_val.
lv_val = lo_ixml_element->get_attribute_ns( 'val' ).
@ -514,7 +539,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* bold
*--------------------------------------------------------------------*
lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'b' ).
lo_ixml_element = lo_ixml_dxf_child->find_from_name_ns( name = 'b' uri = namespace-main ).
IF lo_ixml_element IS BOUND.
CLEAR lv_val.
lv_val = lo_ixml_element->get_attribute_ns( 'val' ).
@ -527,7 +552,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* strikethrough
*--------------------------------------------------------------------*
lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'strike' ).
lo_ixml_element = lo_ixml_dxf_child->find_from_name_ns( name = 'strike' uri = namespace-main ).
IF lo_ixml_element IS BOUND.
CLEAR lv_val.
lv_val = lo_ixml_element->get_attribute_ns( 'val' ).
@ -540,7 +565,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* color
*--------------------------------------------------------------------*
lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'color' ).
lo_ixml_element = lo_ixml_dxf_child->find_from_name_ns( name = 'color' uri = namespace-main ).
IF lo_ixml_element IS BOUND.
CLEAR lv_val.
lv_val = lo_ixml_element->get_attribute_ns( 'rgb' ).
@ -549,9 +574,9 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
WHEN 'fill'.
lo_ixml_element = lo_ixml_dxf_child->find_from_name( 'patternFill' ).
lo_ixml_element = lo_ixml_dxf_child->find_from_name_ns( name = 'patternFill' uri = namespace-main ).
IF lo_ixml_element IS BOUND.
lo_ixml_element2 = lo_ixml_element->find_from_name( 'bgColor' ).
lo_ixml_element2 = lo_ixml_dxf_child->find_from_name_ns( name = 'bgColor' uri = namespace-main ).
IF lo_ixml_element2 IS BOUND.
CLEAR lv_val.
lv_val = lo_ixml_element2->get_attribute_ns( 'rgb' ).
@ -669,18 +694,18 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
rel_drawing TYPE t_rel_drawing.
node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ).
node ?= io_anchor_element->find_from_name_ns( name = 'from' uri = namespace-xdr ).
CHECK node IS NOT INITIAL.
node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'col' uri = namespace-xdr ).
ls_upper-col = node2->get_value( ).
node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'row' uri = namespace-xdr ).
ls_upper-row = node2->get_value( ).
node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'colOff' uri = namespace-xdr ).
ls_upper-col_offset = node2->get_value( ).
node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'rowOff' uri = namespace-xdr ).
ls_upper-row_offset = node2->get_value( ).
node ?= io_anchor_element->find_from_name( name = 'ext' namespace = 'xdr' ).
node ?= io_anchor_element->find_from_name_ns( name = 'ext' uri = namespace-xdr ).
IF node IS INITIAL.
CLEAR ls_size.
ELSE.
@ -697,32 +722,32 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDTRY.
ENDIF.
node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ).
node ?= io_anchor_element->find_from_name_ns( name = 'to' uri = namespace-xdr ).
IF node IS INITIAL.
CLEAR ls_lower.
ELSE.
node2 ?= node->find_from_name( name = 'col' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'col' uri = namespace-xdr ).
ls_lower-col = node2->get_value( ).
node2 ?= node->find_from_name( name = 'row' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'row' uri = namespace-xdr ).
ls_lower-row = node2->get_value( ).
node2 ?= node->find_from_name( name = 'colOff' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'colOff' uri = namespace-xdr ).
ls_lower-col_offset = node2->get_value( ).
node2 ?= node->find_from_name( name = 'rowOff' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'rowOff' uri = namespace-xdr ).
ls_lower-row_offset = node2->get_value( ).
ENDIF.
node ?= io_anchor_element->find_from_name( name = 'pic' namespace = 'xdr' ).
node ?= io_anchor_element->find_from_name_ns( name = 'pic' uri = namespace-xdr ).
IF node IS NOT INITIAL.
node2 ?= node->find_from_name( name = 'nvPicPr' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'nvPicPr' uri = namespace-xdr ).
CHECK node2 IS NOT INITIAL.
node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ).
node3 ?= node2->find_from_name_ns( name = 'cNvPr' uri = namespace-xdr ).
CHECK node3 IS NOT INITIAL.
me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ).
lv_title = cnvpr-name.
node2 ?= node->find_from_name( name = 'blipFill' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'blipFill' uri = namespace-xdr ).
CHECK node2 IS NOT INITIAL.
node3 ?= node2->find_from_name( name = 'blip' namespace = 'a' ).
node3 ?= node2->find_from_name_ns( name = 'blip' uri = namespace-a ).
CHECK node3 IS NOT INITIAL.
me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = blip ).
lv_relation_id = blip-embed.
@ -730,20 +755,20 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
drawing_type = zcl_excel_drawing=>type_image.
ENDIF.
node ?= io_anchor_element->find_from_name( name = 'graphicFrame' namespace = 'xdr' ).
node ?= io_anchor_element->find_from_name_ns( name = 'graphicFrame' uri = namespace-xdr ).
IF node IS NOT INITIAL.
node2 ?= node->find_from_name( name = 'nvGraphicFramePr' namespace = 'xdr' ).
node2 ?= node->find_from_name_ns( name = 'nvGraphicFramePr' uri = namespace-xdr ).
CHECK node2 IS NOT INITIAL.
node3 ?= node2->find_from_name( name = 'cNvPr' namespace = 'xdr' ).
node3 ?= node2->find_from_name_ns( name = 'cNvPr' uri = namespace-xdr ).
CHECK node3 IS NOT INITIAL.
me->fill_struct_from_attributes( EXPORTING ip_element = node3 CHANGING cp_structure = cnvpr ).
lv_title = cnvpr-name.
node2 ?= node->find_from_name( name = 'graphic' namespace = 'a' ).
node2 ?= node->find_from_name_ns( name = 'graphic' uri = namespace-a ).
CHECK node2 IS NOT INITIAL.
node3 ?= node2->find_from_name( name = 'graphicData' namespace = 'a' ).
node3 ?= node2->find_from_name_ns( name = 'graphicData' uri = namespace-a ).
CHECK node3 IS NOT INITIAL.
node4 ?= node2->find_from_name( name = 'chart' namespace = 'c' ).
node4 ?= node2->find_from_name_ns( name = 'chart' uri = namespace-c ).
CHECK node4 IS NOT INITIAL.
me->fill_struct_from_attributes( EXPORTING ip_element = node4 CHANGING cp_structure = chart ).
lv_relation_id = chart-id.
@ -774,15 +799,15 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
IF drawing_type = zcl_excel_drawing=>type_chart.
* Begin fix for Issue #551
DATA: lo_tmp_node_2 TYPE REF TO if_ixml_element.
lo_tmp_node_2 ?= rel_drawing-content_xml->find_from_name( name = 'pieChart' namespace = 'c' ).
lo_tmp_node_2 ?= rel_drawing-content_xml->find_from_name_ns( name = 'pieChart' uri = namespace-c ).
IF lo_tmp_node_2 IS NOT INITIAL.
lo_drawing->graph_type = zcl_excel_drawing=>c_graph_pie.
ELSE.
lo_tmp_node_2 ?= rel_drawing-content_xml->find_from_name( name = 'barChart' namespace = 'c' ).
lo_tmp_node_2 ?= rel_drawing-content_xml->find_from_name_ns( name = 'barChart' uri = namespace-c ).
IF lo_tmp_node_2 IS NOT INITIAL.
lo_drawing->graph_type = zcl_excel_drawing=>c_graph_bars.
ELSE.
lo_tmp_node_2 ?= rel_drawing-content_xml->find_from_name( name = 'lineChart' namespace = 'c' ).
lo_tmp_node_2 ?= rel_drawing-content_xml->find_from_name_ns( name = 'lineChart' uri = namespace-c ).
IF lo_tmp_node_2 IS NOT INITIAL.
lo_drawing->graph_type = zcl_excel_drawing=>c_graph_line.
ENDIF.
@ -813,14 +838,14 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* Look for dxfs-node
*--------------------------------------------------------------------*
lo_styles_xml = me->get_ixml_from_zip_archive( iv_path ).
lo_node_dxfs = lo_styles_xml->find_from_name( 'dxfs' ).
lo_node_dxfs = lo_styles_xml->find_from_name_ns( name = 'dxfs' uri = namespace-main ).
CHECK lo_node_dxfs IS BOUND.
*--------------------------------------------------------------------*
* loop through all dxf-nodes and create style for each
*--------------------------------------------------------------------*
lo_nodes_dxf ?= lo_node_dxfs->get_elements_by_tag_name( 'dxf' ).
lo_nodes_dxf ?= lo_node_dxfs->get_elements_by_tag_name_ns( name = 'dxf' uri = namespace-main ).
lo_iterator_dxf = lo_nodes_dxf->create_iterator( ).
lo_node_dxf ?= lo_iterator_dxf->get_next( ).
WHILE lo_node_dxf IS BOUND.
@ -920,7 +945,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_shared_strings_xml = me->get_ixml_from_zip_archive( i_filename = ip_path
is_normalizing = space ). " NO!!! normalizing - otherwise leading blanks will be omitted and that is not really desired for the stringtable
lo_node_si ?= lo_shared_strings_xml->find_from_name( 'si' ).
lo_node_si ?= lo_shared_strings_xml->find_from_name_ns( name = 'si' uri = namespace-main ).
WHILE lo_node_si IS BOUND.
APPEND INITIAL LINE TO me->shared_strings ASSIGNING <ls_shared_string>. " Each <si>-entry in the xml-file must lead to an entry in our stringtable
@ -944,13 +969,15 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
WHILE lo_node_si_child IS BOUND. " actually these children of <si> are <r>-tags
CLEAR: ls_rtf.
lo_node_r_child_rpr ?= lo_node_si_child->find_from_name( 'rPr' ). " extracting rich text formating data
" extracting rich text formating data
lo_node_r_child_rpr ?= lo_node_si_child->find_from_name_ns( name = 'rPr' uri = namespace-main ).
IF lo_node_r_child_rpr IS BOUND.
lo_font = load_style_font( lo_node_r_child_rpr ).
ls_rtf-font = lo_font->get_structure( ).
ENDIF.
ls_rtf-offset = lv_current_offset.
lo_node_r_child_t ?= lo_node_si_child->find_from_name( 't' ). " extract the <t>...</t> part of each <r>-tag
" extract the <t>...</t> part of each <r>-tag
lo_node_r_child_t ?= lo_node_si_child->find_from_name_ns( name = 't' uri = namespace-main ).
IF lo_node_r_child_t IS BOUND.
lv_node_value = lo_node_r_child_t->get_value( ).
CONCATENATE <ls_shared_string>-value lv_node_value INTO <ls_shared_string>-value RESPECTING BLANKS.
@ -1086,9 +1113,9 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Now everything is prepared to build a "full" style
*--------------------------------------------------------------------*
lo_node_cellxfs = lo_styles_xml->find_from_name( name = 'cellXfs' ).
lo_node_cellxfs = lo_styles_xml->find_from_name_ns( name = 'cellXfs' uri = namespace-main ).
IF lo_node_cellxfs IS BOUND.
lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name( name = 'xf' ).
lo_nodes_xf = lo_node_cellxfs->get_elements_by_tag_name_ns( name = 'xf' uri = namespace-main ).
lo_iterator_cellxfs = lo_nodes_xf->create_iterator( ).
lo_node_cellxfs_xf ?= lo_iterator_cellxfs->get_next( ).
WHILE lo_node_cellxfs_xf IS BOUND.
@ -1144,7 +1171,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* §5 - Alignment
*--------------------------------------------------------------------*
lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name( 'alignment' ).
lo_node_cellxfs_xf_alignment ?= lo_node_cellxfs_xf->find_from_name_ns( name = 'alignment' uri = namespace-main ).
IF lo_node_cellxfs_xf_alignment IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node_cellxfs_xf_alignment
@ -1178,7 +1205,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* §6 - Protection
*--------------------------------------------------------------------*
lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name( 'protection' ).
lo_node_cellxfs_xf_protection ?= lo_node_cellxfs_xf->find_from_name_ns( name = 'protection' uri = namespace-main ).
IF lo_node_cellxfs_xf_protection IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node_cellxfs_xf_protection
@ -1251,7 +1278,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* </diagonal>
* </border>
*--------------------------------------------------------------------*
lo_node_border ?= ip_xml->find_from_name( 'border' ).
lo_node_border ?= ip_xml->find_from_name_ns( name = 'border' uri = namespace-main ).
WHILE lo_node_border IS BOUND.
CREATE OBJECT lo_cell_border.
@ -1304,7 +1331,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* §2 Read the border-formatting
*--------------------------------------------------------------------*
lo_border->border_style = lo_node_bordertype->get_attribute( 'style' ).
lo_node_bordercolor ?= lo_node_bordertype->find_from_name( 'color' ).
lo_node_bordercolor ?= lo_node_bordertype->find_from_name_ns( name = 'color' uri = namespace-main ).
IF lo_node_bordercolor IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node_bordercolor
@ -1376,7 +1403,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* </fill>
*--------------------------------------------------------------------*
lo_node_fill ?= ip_xml->find_from_name( 'fill' ).
lo_node_fill ?= ip_xml->find_from_name_ns( name = 'fill' uri = namespace-main ).
WHILE lo_node_fill IS BOUND.
CREATE OBJECT lo_fill.
@ -1392,7 +1419,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Patternfill - background color
*--------------------------------------------------------------------*
lo_node_bgcolor = lo_node_fill_child->find_from_name( 'bgColor' ).
lo_node_bgcolor = lo_node_fill_child->find_from_name_ns( name = 'bgColor' uri = namespace-main ).
IF lo_node_bgcolor IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node_bgcolor
@ -1413,7 +1440,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Patternfill - foreground color
*--------------------------------------------------------------------*
lo_node_fgcolor = lo_node_fill->find_from_name( 'fgColor' ).
lo_node_fgcolor = lo_node_fill->find_from_name_ns( name = 'fgColor' uri = namespace-main ).
IF lo_node_fgcolor IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node_fgcolor
@ -1443,11 +1470,11 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_fill->gradtype-bottom = lo_node_fill_child->get_attribute( 'bottom' ).
lo_fill->gradtype-degree = lo_node_fill_child->get_attribute( 'degree' ).
FREE lo_node_stop.
lo_node_stop ?= lo_node_fill_child->find_from_name( 'stop' ).
lo_node_stop ?= lo_node_fill_child->find_from_name_ns( name = 'stop' uri = namespace-main ).
WHILE lo_node_stop IS BOUND.
IF lo_fill->gradtype-position1 IS INITIAL.
lo_fill->gradtype-position1 = lo_node_stop->get_attribute( 'position' ).
lo_node_bgcolor = lo_node_stop->find_from_name( 'color' ).
lo_node_bgcolor = lo_node_stop->find_from_name_ns( name = 'color' uri = namespace-main ).
IF lo_node_bgcolor IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node_bgcolor
@ -1466,7 +1493,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
ELSEIF lo_fill->gradtype-position2 IS INITIAL.
lo_fill->gradtype-position2 = lo_node_stop->get_attribute( 'position' ).
lo_node_fgcolor = lo_node_stop->find_from_name( 'color' ).
lo_node_fgcolor = lo_node_stop->find_from_name_ns( name = 'color' uri = namespace-main ).
IF lo_node_fgcolor IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node_fgcolor
@ -1519,21 +1546,21 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Bold
*--------------------------------------------------------------------*
IF lo_node_font->find_from_name( 'b' ) IS BOUND.
IF lo_node_font->find_from_name_ns( name = 'b' uri = namespace-main ) IS BOUND.
lo_font->bold = abap_true.
ENDIF.
*--------------------------------------------------------------------*
* Italic
*--------------------------------------------------------------------*
IF lo_node_font->find_from_name( 'i' ) IS BOUND.
IF lo_node_font->find_from_name_ns( name = 'i' uri = namespace-main ) IS BOUND.
lo_font->italic = abap_true.
ENDIF.
*--------------------------------------------------------------------*
* Underline
*--------------------------------------------------------------------*
lo_node2 = lo_node_font->find_from_name( 'u' ).
lo_node2 = lo_node_font->find_from_name_ns( name = 'u' uri = namespace-main ).
IF lo_node2 IS BOUND.
lo_font->underline = abap_true.
lo_font->underline_mode = lo_node2->get_attribute( 'val' ).
@ -1542,14 +1569,14 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* StrikeThrough
*--------------------------------------------------------------------*
IF lo_node_font->find_from_name( 'strike' ) IS BOUND.
IF lo_node_font->find_from_name_ns( name = 'strike' uri = namespace-main ) IS BOUND.
lo_font->strikethrough = abap_true.
ENDIF.
*--------------------------------------------------------------------*
* Fontsize
*--------------------------------------------------------------------*
lo_node2 = lo_node_font->find_from_name( 'sz' ).
lo_node2 = lo_node_font->find_from_name_ns( name = 'sz' uri = namespace-main ).
IF lo_node2 IS BOUND.
lo_font->size = lo_node2->get_attribute( 'val' ).
ENDIF.
@ -1557,11 +1584,11 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Fontname
*--------------------------------------------------------------------*
lo_node2 = lo_node_font->find_from_name( 'name' ).
lo_node2 = lo_node_font->find_from_name_ns( name = 'name' uri = namespace-main ).
IF lo_node2 IS BOUND.
lo_font->name = lo_node2->get_attribute( 'val' ).
ELSE.
lo_node2 = lo_node_font->find_from_name( 'rFont' ).
lo_node2 = lo_node_font->find_from_name_ns( name = 'rFont' uri = namespace-main ).
IF lo_node2 IS BOUND.
lo_font->name = lo_node2->get_attribute( 'val' ).
ENDIF.
@ -1570,7 +1597,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Fontfamily
*--------------------------------------------------------------------*
lo_node2 = lo_node_font->find_from_name( 'family' ).
lo_node2 = lo_node_font->find_from_name_ns( name = 'family' uri = namespace-main ).
IF lo_node2 IS BOUND.
lo_font->family = lo_node2->get_attribute( 'val' ).
ENDIF.
@ -1578,7 +1605,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Fontscheme
*--------------------------------------------------------------------*
lo_node2 = lo_node_font->find_from_name( 'scheme' ).
lo_node2 = lo_node_font->find_from_name_ns( name = 'scheme' uri = namespace-main ).
IF lo_node2 IS BOUND.
lo_font->scheme = lo_node2->get_attribute( 'val' ).
ELSE.
@ -1588,7 +1615,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Fontcolor
*--------------------------------------------------------------------*
lo_node2 = lo_node_font->find_from_name( 'color' ).
lo_node2 = lo_node_font->find_from_name_ns( name = 'color' uri = namespace-main ).
IF lo_node2 IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_node2
@ -1636,7 +1663,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* <scheme val="minor"/>
* </font>
*--------------------------------------------------------------------*
lo_node_font ?= ip_xml->find_from_name( 'font' ).
lo_node_font ?= ip_xml->find_from_name_ns( name = 'font' uri = namespace-main ).
WHILE lo_node_font IS BOUND.
lo_font = load_style_font( lo_node_font ).
@ -1687,7 +1714,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* <numFmt formatCode="#,###,###,###,##0.00" numFmtId="164"/>
* </numFmts>
*--------------------------------------------------------------------*
lo_node_numfmt ?= ip_xml->find_from_name( 'numFmt' ).
lo_node_numfmt ?= ip_xml->find_from_name_ns( name = 'numFmt' uri = namespace-main ).
WHILE lo_node_numfmt IS BOUND.
CLEAR ls_num_format.
@ -1881,7 +1908,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
INTO lv_full_filename.
lo_rels_workbook = me->get_ixml_from_zip_archive( lv_full_filename ).
lo_node ?= lo_rels_workbook->find_from_name( 'Relationship' ). "#EC NOTEXT
lo_node ?= lo_rels_workbook->find_from_name_ns( name = 'Relationship' uri = namespace-relationships ). "#EC NOTEXT
WHILE lo_node IS BOUND.
me->fill_struct_from_attributes( EXPORTING ip_element = lo_node CHANGING cp_structure = ls_relationship ).
@ -1939,7 +1966,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* §3.1 Names and order of of worksheets
*--------------------------------------------------------------------*
lo_node ?= lo_workbook->find_from_name( 'sheet' ).
lo_node ?= lo_workbook->find_from_name_ns( name = 'sheet' uri = namespace-main ).
lv_workbook_index = 1.
WHILE lo_node IS BOUND.
@ -2004,7 +2031,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* §3.2 Active worksheet
*--------------------------------------------------------------------*
lv_zexcel_active_worksheet = 1. " First sheet = active sheet if nothing else specified.
lo_node ?= lo_workbook->find_from_name( 'workbookView' ).
lo_node ?= lo_workbook->find_from_name_ns( name = 'workbookView' uri = namespace-main ).
IF lo_node IS BOUND.
lv_active_sheet_string = lo_node->get_attribute( 'activeTab' ).
TRY.
@ -2027,7 +2054,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* - repeat rows/cols - sheetlocal ( special range )
*
*--------------------------------------------------------------------*
lo_node ?= lo_workbook->find_from_name( 'definedName' ).
lo_node ?= lo_workbook->find_from_name_ns( name = 'definedName' uri = namespace-main ).
WHILE lo_node IS BOUND.
CLEAR lo_range. "ins issue #235 - repeat rows/cols
@ -2397,7 +2424,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
INTO lv_rels_worksheet_path.
TRY. " +#222 _rels/xxx.rels might not be present. If not found there can be no drawings --> just ignore this section
lo_ixml_rels_worksheet = me->get_ixml_from_zip_archive( lv_rels_worksheet_path ).
lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name( 'Relationship' ).
lo_ixml_node ?= lo_ixml_rels_worksheet->find_from_name_ns( name = 'Relationship' uri = namespace-relationships ).
CATCH zcx_excel. "#EC NO_HANDLER +#222
" +#222 No errorhandling necessary - node will be unbound if error occurs
ENDTRY. " +#222
@ -2440,7 +2467,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_ixml_worksheet = me->get_ixml_from_zip_archive( ip_path ).
lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name( 'tabColor' ).
lo_ixml_tabcolor ?= lo_ixml_worksheet->find_from_name_ns( name = 'tabColor' uri = namespace-main ).
IF lo_ixml_tabcolor IS BOUND.
fill_struct_from_attributes( EXPORTING
ip_element = lo_ixml_tabcolor
@ -2453,7 +2480,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
ENDIF.
lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name( name = 'row' ).
lo_ixml_rows = lo_ixml_worksheet->get_elements_by_tag_name_ns( name = 'row' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_rows->create_iterator( ).
lo_ixml_row_elem ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml_row_elem IS BOUND.
@ -2494,7 +2521,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
ENDIF.
lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name( name = 'c' ).
lo_ixml_cells = lo_ixml_row_elem->get_elements_by_tag_name_ns( name = 'c' uri = namespace-main ).
lo_ixml_iterator2 = lo_ixml_cells->create_iterator( ).
lo_ixml_cell_elem ?= lo_ixml_iterator2->get_next( ).
WHILE lo_ixml_cell_elem IS BOUND.
@ -2504,7 +2531,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_cell_elem CHANGING cp_structure = ls_cell ).
lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'v' ).
lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name_ns( name = 'v' uri = namespace-main ).
CASE ls_cell-t.
WHEN 's'. " String values are stored as index in shared string table
@ -2517,7 +2544,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
ENDIF.
WHEN 'inlineStr'. " inlineStr values are kept in special node
lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name( name = 'is' ).
lo_ixml_value_elem = lo_ixml_cell_elem->find_from_name_ns( name = 'is' uri = namespace-main ).
IF lo_ixml_value_elem IS BOUND.
lv_cell_value = lo_ixml_value_elem->get_value( ).
ENDIF.
@ -2537,7 +2564,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
ENDIF.
lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name( name = 'f' ).
lo_ixml_formula_elem = lo_ixml_cell_elem->find_from_name_ns( name = 'f' uri = namespace-main ).
IF lo_ixml_formula_elem IS BOUND.
lv_cell_formula = lo_ixml_formula_elem->get_value( ).
*--------------------------------------------------------------------*
@ -2604,7 +2631,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* reason - libre office doesn't use SPAN in row - definitions
*--------------------------------------------------------------------*
IF lv_max_col = 0.
lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name( name = 'dimension' ).
lo_ixml_imension_elem = lo_ixml_worksheet->find_from_name_ns( name = 'dimension' uri = namespace-main ).
IF lo_ixml_imension_elem IS BOUND.
lv_dimension_range = lo_ixml_imension_elem->get_attribute( 'ref' ).
IF lv_dimension_range CS ':'.
@ -2620,7 +2647,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
"Get the customized column width
lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name( name = 'col' ).
lo_ixml_columns = lo_ixml_worksheet->get_elements_by_tag_name_ns( name = 'col' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_columns->create_iterator( ).
lo_ixml_column_elem ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml_column_elem IS BOUND.
@ -2704,7 +2731,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDWHILE.
"Now we need to get information from the sheetView node
lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name( name = 'sheetView' ).
lo_ixml_sheetview_elem = lo_ixml_worksheet->find_from_name_ns( name = 'sheetView' uri = namespace-main ).
fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetview_elem CHANGING cp_structure = ls_sheetview ).
IF ls_sheetview-showgridlines IS INITIAL OR
ls_sheetview-showgridlines = lc_xml_attr_true OR
@ -2722,7 +2749,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
"Add merge cell information
lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name( name = 'mergeCell' ).
lo_ixml_mergecells = lo_ixml_worksheet->get_elements_by_tag_name_ns( name = 'mergeCell' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_mergecells->create_iterator( ).
lo_ixml_mergecell_elem ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml_mergecell_elem IS BOUND.
@ -2746,7 +2773,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDWHILE.
" read sheet format properties
lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name( 'sheetFormatPr' ).
lo_ixml_sheetformatpr_elem = lo_ixml_worksheet->find_from_name_ns( name = 'sheetFormatPr' uri = namespace-main ).
IF lo_ixml_sheetformatpr_elem IS NOT INITIAL.
fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_sheetformatpr_elem CHANGING cp_structure = ls_sheetformatpr ).
IF ls_sheetformatpr-customheight = '1'.
@ -2764,7 +2791,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
io_worksheet = io_worksheet ).
* FitToPage
lo_ixml_sheetpr ?= lo_ixml_worksheet->find_from_name( 'pageSetUpPr' ).
lo_ixml_sheetpr ?= lo_ixml_worksheet->find_from_name_ns( name = 'pageSetUpPr' uri = namespace-main ).
IF lo_ixml_sheetpr IS BOUND.
lv_fit_to_page = lo_ixml_sheetpr->get_attribute_ns( 'fitToPage' ).
@ -2773,7 +2800,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF.
ENDIF.
" Read in page setup
lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name( 'pageSetup' ).
lo_ixml_pagesetup_elem = lo_ixml_worksheet->find_from_name_ns( name = 'pageSetup' uri = namespace-main ).
IF lo_ixml_pagesetup_elem IS NOT INITIAL.
fill_struct_from_attributes( EXPORTING
ip_element = lo_ixml_pagesetup_elem
@ -2799,12 +2826,12 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
" Read header footer
lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name( 'headerFooter' ).
lo_ixml_headerfooter_elem = lo_ixml_worksheet->find_from_name_ns( name = 'headerFooter' uri = namespace-main ).
IF lo_ixml_headerfooter_elem IS NOT INITIAL.
fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_headerfooter_elem CHANGING cp_structure = ls_headerfooter ).
io_worksheet->sheet_setup->diff_oddeven_headerfooter = ls_headerfooter-differentoddeven.
lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name( 'oddFooter' ).
lo_ixml_hf_value_elem = lo_ixml_headerfooter_elem->find_from_name_ns( name = 'oddFooter' uri = namespace-main ).
IF lo_ixml_hf_value_elem IS NOT INITIAL.
ls_odd_footer-left_value = lo_ixml_hf_value_elem->get_value( ).
ENDIF.
@ -2821,7 +2848,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
" Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007
" Read pane
lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name( name = 'pane' ).
lo_ixml_pane_elem = lo_ixml_sheetview_elem->find_from_name_ns( name = 'pane' uri = namespace-main ).
IF lo_ixml_pane_elem IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = lo_ixml_pane_elem CHANGING cp_structure = ls_excel_pane ).
" Issue #194
@ -2847,7 +2874,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
" End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007
" Start fix 276 Read data validations
lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name( name = 'dataValidation' ).
lo_ixml_datavalidations = lo_ixml_worksheet->get_elements_by_tag_name_ns( name = 'dataValidation' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_datavalidations->create_iterator( ).
lo_ixml_datavalidation_elem ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml_datavalidation_elem IS BOUND.
@ -2856,12 +2883,12 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
CHANGING
cp_structure = ls_datavalidation ).
CLEAR lo_ixml_formula_elem.
lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula1' ).
lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name_ns( name = 'formula1' uri = namespace-main ).
IF lo_ixml_formula_elem IS BOUND.
ls_datavalidation-formula1 = lo_ixml_formula_elem->get_value( ).
ENDIF.
CLEAR lo_ixml_formula_elem.
lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name( name = 'formula2' ).
lo_ixml_formula_elem = lo_ixml_datavalidation_elem->find_from_name_ns( name = 'formula2' uri = namespace-main ).
IF lo_ixml_formula_elem IS BOUND.
ls_datavalidation-formula2 = lo_ixml_formula_elem->get_value( ).
ENDIF.
@ -2976,23 +3003,23 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_autofilters = io_worksheet->excel->get_autofilters_reference( ).
lo_ixml_autofilter_elem = io_ixml_worksheet->find_from_name( 'autoFilter' ).
lo_ixml_autofilter_elem = io_ixml_worksheet->find_from_name_ns( name = 'autoFilter' uri = namespace-main ).
IF lo_ixml_autofilter_elem IS BOUND.
lv_ref = lo_ixml_autofilter_elem->get_attribute_ns( 'ref' ).
lo_ixml_filter_column_coll = lo_ixml_autofilter_elem->get_elements_by_tag_name( name = 'filterColumn' ).
lo_ixml_filter_column_coll = lo_ixml_autofilter_elem->get_elements_by_tag_name_ns( name = 'filterColumn' uri = namespace-main ).
lo_ixml_filter_column_iter = lo_ixml_filter_column_coll->create_iterator( ).
lo_ixml_filter_column ?= lo_ixml_filter_column_iter->get_next( ).
WHILE lo_ixml_filter_column IS BOUND.
lv_col_id = lo_ixml_filter_column->get_attribute_ns( 'colId' ).
lv_column = lv_col_id + 1.
lo_ixml_filters_coll = lo_ixml_filter_column->get_elements_by_tag_name( name = 'filters' ).
lo_ixml_filters_coll = lo_ixml_filter_column->get_elements_by_tag_name_ns( name = 'filters' uri = namespace-main ).
lo_ixml_filters_iter = lo_ixml_filters_coll->create_iterator( ).
lo_ixml_filters ?= lo_ixml_filters_iter->get_next( ).
WHILE lo_ixml_filters IS BOUND.
lo_ixml_filter_coll = lo_ixml_filter_column->get_elements_by_tag_name( name = 'filter' ).
lo_ixml_filter_coll = lo_ixml_filter_column->get_elements_by_tag_name_ns( name = 'filter' uri = namespace-main ).
lo_ixml_filter_iter = lo_ixml_filter_coll->create_iterator( ).
lo_ixml_filter ?= lo_ixml_filter_iter->get_next( ).
WHILE lo_ixml_filter IS BOUND.
@ -3040,7 +3067,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lv_rule TYPE zexcel_condition_rule.
lo_ixml_cond_formats = io_ixml_worksheet->get_elements_by_tag_name( name = 'conditionalFormatting' ).
lo_ixml_cond_formats = io_ixml_worksheet->get_elements_by_tag_name_ns( name = 'conditionalFormatting' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_cond_formats->create_iterator( ).
lo_ixml_cond_format ?= lo_ixml_iterator->get_next( ).
@ -3053,7 +3080,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* Get type of rule
*--------------------------------------------------------------------*
lo_ixml_rules = lo_ixml_cond_format->get_elements_by_tag_name( name = 'cfRule' ).
lo_ixml_rules = lo_ixml_cond_format->get_elements_by_tag_name_ns( name = 'cfRule' uri = namespace-main ).
lo_ixml_iterator2 = lo_ixml_rules->create_iterator( ).
lo_ixml_rule ?= lo_ixml_iterator2->get_next( ).
@ -3204,7 +3231,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
io_style_cond->mode_cellis-cell_style = <ls_dxf_style>-guid.
ENDIF.
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ).
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name_ns( name = 'formula' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_nodes->create_iterator( ).
lo_ixml ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml IS BOUND.
@ -3233,7 +3260,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_ixml TYPE REF TO if_ixml_element.
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ).
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name_ns( name = 'cfvo' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_nodes->create_iterator( ).
lo_ixml ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml IS BOUND.
@ -3258,7 +3285,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_ixml ?= lo_ixml_iterator->get_next( ).
ENDWHILE.
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'color' ).
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name_ns( name = 'color' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_nodes->create_iterator( ).
lo_ixml ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml IS BOUND.
@ -3288,12 +3315,12 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_ixml_iterator TYPE REF TO if_ixml_node_iterator,
lo_ixml TYPE REF TO if_ixml_element.
lo_ixml ?= io_ixml_rule->find_from_name( 'color' ).
lo_ixml ?= io_ixml_rule->find_from_name_ns( name = 'color' uri = namespace-main ).
IF lo_ixml IS BOUND.
io_style_cond->mode_databar-colorrgb = lo_ixml->get_attribute_ns( 'rgb' ).
ENDIF.
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'cfvo' ).
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name_ns( name = 'cfvo' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_nodes->create_iterator( ).
lo_ixml ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml IS BOUND.
@ -3333,7 +3360,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
io_style_cond->mode_expression-cell_style = <ls_dxf_style>-guid.
ENDIF.
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name( 'formula' ).
lo_ixml_nodes ?= io_ixml_rule->get_elements_by_tag_name_ns( name = 'formula' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_nodes->create_iterator( ).
lo_ixml ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml IS BOUND.
@ -3363,7 +3390,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
lo_ixml_rule_iconset ?= io_ixml_rule->get_first_child( ).
io_style_cond->mode_iconset-iconset = lo_ixml_rule_iconset->get_attribute_ns( 'iconSet' ).
io_style_cond->mode_iconset-showvalue = lo_ixml_rule_iconset->get_attribute_ns( 'showValue' ).
lo_ixml_nodes ?= lo_ixml_rule_iconset->get_elements_by_tag_name( 'cfvo' ).
lo_ixml_nodes ?= lo_ixml_rule_iconset->get_elements_by_tag_name_ns( name = 'cfvo' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_nodes->create_iterator( ).
lo_ixml ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml IS BOUND.
@ -3482,7 +3509,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
INTO rels_drawing_path.
rels_drawing_path = resolve_path( rels_drawing_path ).
rels_drawing = me->get_ixml_from_zip_archive( rels_drawing_path ).
node ?= rels_drawing->find_from_name( 'Relationship' ).
node ?= rels_drawing->find_from_name_ns( name = 'Relationship' uri = namespace-relationships ).
WHILE node IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ).
@ -3515,7 +3542,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
drawing = me->get_ixml_from_zip_archive( ip_path ).
* one-cell anchor **************
anchors = drawing->get_elements_by_tag_name( name = 'oneCellAnchor' namespace = 'xdr' ).
anchors = drawing->get_elements_by_tag_name_ns( name = 'oneCellAnchor' uri = namespace-xdr ).
coll_length = anchors->get_length( ).
iterator = anchors->create_iterator( ).
DO coll_length TIMES.
@ -3530,7 +3557,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDDO.
* two-cell anchor ******************
anchors = drawing->get_elements_by_tag_name( name = 'twoCellAnchor' namespace = 'xdr' ).
anchors = drawing->get_elements_by_tag_name_ns( name = 'twoCellAnchor' uri = namespace-xdr ).
coll_length = anchors->get_length( ).
iterator = anchors->create_iterator( ).
DO coll_length TIMES.
@ -3570,7 +3597,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
FIELD-SYMBOLS: <ls_external_hyperlink> LIKE LINE OF it_external_hyperlinks.
lo_ixml_hyperlinks = io_ixml_worksheet->get_elements_by_tag_name( name = 'hyperlink' ).
lo_ixml_hyperlinks = io_ixml_worksheet->get_elements_by_tag_name_ns( name = 'hyperlink' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_hyperlinks->create_iterator( ).
lo_ixml_hyperlink ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml_hyperlink IS BOUND.
@ -3582,8 +3609,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ls_hyperlink-display = lo_ixml_hyperlink->get_attribute_ns( 'display' ).
ls_hyperlink-location = lo_ixml_hyperlink->get_attribute_ns( 'location' ).
ls_hyperlink-tooltip = lo_ixml_hyperlink->get_attribute_ns( 'tooltip' ).
ls_hyperlink-r_id = lo_ixml_hyperlink->get_attribute( name = 'id'
namespace = 'r' ).
ls_hyperlink-r_id = lo_ixml_hyperlink->get_attribute_ns( name = 'id' uri = namespace-r ).
IF ls_hyperlink-r_id IS INITIAL. " Internal link
lv_is_internal = abap_true.
lv_url = ls_hyperlink-location.
@ -3648,7 +3674,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
CLEAR lt_ignored_errors.
lo_ixml_ignored_errors = io_ixml_worksheet->get_elements_by_tag_name( name = 'ignoredError' ).
lo_ixml_ignored_errors = io_ixml_worksheet->get_elements_by_tag_name_ns( name = 'ignoredError' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_ignored_errors->create_iterator( ).
lo_ixml_ignored_error ?= lo_ixml_iterator->get_next( ).
@ -3705,9 +3731,9 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* Since rows and columns are handled in separate nodes
* Build table to identify these cells
*--------------------------------------------------------------------*
lo_node ?= io_ixml_worksheet->find_from_name( 'rowBreaks' ).
lo_node ?= io_ixml_worksheet->find_from_name_ns( name = 'rowBreaks' uri = namespace-main ).
CHECK lo_node IS BOUND.
lo_ixml_rowbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ).
lo_ixml_rowbreaks = lo_node->get_elements_by_tag_name_ns( name = 'brk' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_rowbreaks->create_iterator( ).
lo_ixml_rowbreak ?= lo_ixml_iterator->get_next( ).
WHILE lo_ixml_rowbreak IS BOUND.
@ -3718,9 +3744,9 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDWHILE.
CHECK <ls_pagebreak_row> IS ASSIGNED.
lo_node ?= io_ixml_worksheet->find_from_name( 'colBreaks' ).
lo_node ?= io_ixml_worksheet->find_from_name_ns( name = 'colBreaks' uri = namespace-main ).
CHECK lo_node IS BOUND.
lo_ixml_colbreaks = lo_node->get_elements_by_tag_name( name = 'brk' ).
lo_ixml_colbreaks = lo_node->get_elements_by_tag_name_ns( name = 'brk' uri = namespace-main ).
lo_ixml_iterator = lo_ixml_colbreaks->create_iterator( ).
lo_ixml_colbreak ?= lo_ixml_iterator->get_next( ).
CLEAR lv_count.
@ -3763,7 +3789,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ls_pagemargins TYPE lty_page_margins.
lo_ixml_pagemargins_elem = io_ixml_worksheet->find_from_name( 'pageMargins' ).
lo_ixml_pagemargins_elem = io_ixml_worksheet->find_from_name_ns( name = 'pageMargins' uri = namespace-main ).
IF lo_ixml_pagemargins_elem IS NOT INITIAL.
fill_struct_from_attributes( EXPORTING
ip_element = lo_ixml_pagemargins_elem
@ -4076,7 +4102,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
*--------------------------------------------------------------------*
* §3 Cycle through the Relationship Tags and use the ones we need
*--------------------------------------------------------------------*
lo_node ?= lo_rels->find_from_name( 'Relationship' ). "#EC NOTEXT
lo_node ?= lo_rels->find_from_name_ns( name = 'Relationship' uri = namespace-relationships ). "#EC NOTEXT
WHILE lo_node IS BOUND.
fill_struct_from_attributes( EXPORTING

View File

@ -73,7 +73,7 @@ CLASS zcl_excel_reader_xlsm IMPLEMENTATION.
rels_workbook = me->get_ixml_from_zip_archive( rels_workbook_path ).
node ?= rels_workbook->find_from_name( 'Relationship' ).
node ?= rels_workbook->find_from_name_ns( name = 'Relationship' uri = namespace-relationships ).
WHILE node IS BOUND.
me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = relationship ).
@ -91,7 +91,7 @@ CLASS zcl_excel_reader_xlsm IMPLEMENTATION.
" Read Workbook codeName
workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ).
node ?= workbook->find_from_name( 'fileVersion' ).
node ?= workbook->find_from_name_ns( name = 'fileVersion' uri = namespace-main ).
IF node IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = node
@ -102,7 +102,7 @@ CLASS zcl_excel_reader_xlsm IMPLEMENTATION.
" Read Workbook codeName
workbook = me->get_ixml_from_zip_archive( iv_workbook_full_filename ).
node ?= workbook->find_from_name( 'workbookPr' ).
node ?= workbook->find_from_name_ns( name = 'workbookPr' uri = namespace-main ).
IF node IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = node
@ -125,7 +125,7 @@ CLASS zcl_excel_reader_xlsm IMPLEMENTATION.
" Read Workbook codeName
worksheet = me->get_ixml_from_zip_archive( ip_path ).
node ?= worksheet->find_from_name( 'sheetPr' ).
node ?= worksheet->find_from_name_ns( name = 'sheetPr' uri = namespace-main ).
IF node IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = node

View File

@ -41,7 +41,6 @@ CLASS zcl_excel_theme_eclrschemelst IMPLEMENTATION.
METHOD load.
"! so far copy only existing values
extracolor ?= io_extra_color.
extracolor = zcl_excel_common=>clone_ixml_with_namespaces( io_extra_color ).
ENDMETHOD. "load
ENDCLASS.

View File

@ -41,7 +41,6 @@ CLASS zcl_excel_theme_extlst IMPLEMENTATION.
METHOD load.
"! so far copy only existing values
extlst ?= io_extlst.
extlst = zcl_excel_common=>clone_ixml_with_namespaces( io_extlst ).
ENDMETHOD. "load
ENDCLASS.

View File

@ -189,7 +189,6 @@ CLASS zcl_excel_theme_fmt_scheme IMPLEMENTATION.
METHOD load.
"! so far copy only existing values
fmt_scheme ?= io_fmt_scheme.
fmt_scheme = zcl_excel_common=>clone_ixml_with_namespaces( io_fmt_scheme ).
ENDMETHOD. "load
ENDCLASS.

View File

@ -39,7 +39,6 @@ CLASS zcl_excel_theme_objectdefaults IMPLEMENTATION.
METHOD load.
"! so far copy only existing values
objectdefaults ?= io_object_def.
objectdefaults = zcl_excel_common=>clone_ixml_with_namespaces( io_object_def ).
ENDMETHOD. "load
ENDCLASS.