diff --git a/ZA2X/CLAS/CLAS_ZCL_EXCEL_AUTOFILTERS.slnk b/ZA2X/CLAS/CLAS_ZCL_EXCEL_AUTOFILTERS.slnk
new file mode 100644
index 0000000..2038e10
--- /dev/null
+++ b/ZA2X/CLAS/CLAS_ZCL_EXCEL_AUTOFILTERS.slnk
@@ -0,0 +1,100 @@
+
+
+
+
+ *"* local class implementation for public class
+*"* use this source file for the implementation part of
+*"* local helper classes
+ *"* use this source file for any type declarations (class
+*"* definitions, interfaces or data types) you need for method
+*"* implementation or private method's signature
+ *"* use this source file for any macro definitions you need
+*"* in the implementation part of the class
+
+ ABAP
+
+
+
+
+
+
+ METHOD add.
+
+ DATA: ls_autofilter LIKE LINE OF me->mt_autofilters.
+
+ FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters.
+
+ READ TABLE me->mt_autofilters ASSIGNING <ls_autofilter> WITH TABLE KEY worksheet = io_sheet.
+ IF sy-subrc = 0.
+ RAISE EXCEPTION TYPE zcx_excel. " adding another autofilter to sheet is not allowed
+ ENDIF.
+
+ CREATE OBJECT ro_autofilter
+ EXPORTING
+ io_sheet = io_sheet.
+
+ ls_autofilter-worksheet = io_sheet.
+ ls_autofilter-autofilter = ro_autofilter.
+ INSERT ls_autofilter INTO TABLE me->mt_autofilters.
+
+
+ENDMETHOD.
+
+
+ METHOD clear.
+
+ CLEAR me->mt_autofilters.
+
+ENDMETHOD.
+
+
+
+
+
+ METHOD get.
+
+ DATA: ls_autofilter LIKE LINE OF me->mt_autofilters.
+
+ FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters.
+
+ READ TABLE me->mt_autofilters ASSIGNING <ls_autofilter> WITH TABLE KEY worksheet = io_worksheet.
+ IF sy-subrc = 0.
+ ro_autofilter = <ls_autofilter>-autofilter.
+ ELSE.
+ CLEAR ro_autofilter.
+ ENDIF.
+
+ENDMETHOD.
+
+
+
+ METHOD is_empty.
+ IF me->mt_autofilters IS INITIAL.
+ r_empty = abap_true.
+ ENDIF.
+ENDMETHOD.
+
+
+
+ METHOD remove.
+
+ DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet.
+
+ FIELD-SYMBOLS: <ls_autofilter> LIKE LINE OF me->mt_autofilters.
+
+ DELETE TABLE me->mt_autofilters WITH TABLE KEY worksheet = lo_worksheet.
+
+ENDMETHOD.
+
+
+
+ METHOD size.
+ DESCRIBE TABLE me->mt_autofilters LINES r_size.
+ENDMETHOD.
+
+
diff --git a/ZA2X/CLAS/ZCL_EXCEL.slnk b/ZA2X/CLAS/ZCL_EXCEL.slnk
index ced9521..db60250 100644
--- a/ZA2X/CLAS/ZCL_EXCEL.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL.slnk
@@ -181,7 +181,7 @@ ENDMETHOD.
-
+
method ADD_NEW_DRAWING.
DATA: lv_guid TYPE guid_16.
@@ -443,10 +443,10 @@ ENDMETHOD.
IF sy-subrc <> 0.
style-complete_style = ip_cstyle_complete.
style-complete_stylex = ip_cstylex_complete.
-* CALL FUNCTION 'GUID_CREATE'
+* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases
* IMPORTING
* ev_guid_16 = style-guid.
- style-guid = zcl_excel_obsolete_func_wrap=>guid_create( ).
+ style-guid = zcl_excel_obsolete_func_wrap=>guid_create( ). " ins issue #379 - replacement for outdated function call
INSERT style INTO TABLE me->t_stylemapping1.
INSERT style INTO TABLE me->t_stylemapping2.
diff --git a/ZA2X/CLAS/ZCL_EXCEL_DRAWING.slnk b/ZA2X/CLAS/ZCL_EXCEL_DRAWING.slnk
index 8e292bf..4922614 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_DRAWING.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_DRAWING.slnk
@@ -44,7 +44,7 @@
-
+
METHOD constructor.
* CALL FUNCTION 'GUID_CREATE' " del issue #379 - function is outdated in newer releases
@@ -78,6 +78,22 @@ ENDMETHOD.
CONDENSE media_name NO-GAPS.
endmethod.
+
+
+
+
+ METHOD emu2pixel.
+* suppose 96 DPI
+ IF ip_dpi IS SUPPLIED.
+* r_emu = ip_pixel * 914400 / ip_dpi.
+ r_pixel = ip_emu * ip_dpi / 914400.
+ ELSE.
+* suppose 96 DPI
+* r_emu = ip_pixel * 914400 / 96.
+ r_pixel = ip_emu * 96 / 914400.
+ ENDIF.
+ENDMETHOD.
+
method GET_FROM_COL.
@@ -105,7 +121,7 @@ ENDMETHOD.
CONDENSE r_height NO-GAPS.
endmethod.
-
+
method GET_INDEX.
rp_index = me->index.
@@ -193,7 +209,7 @@ ENDMETHOD.
r_name = title.
endmethod.
-
+
method GET_POSITION.
rp_position-anchor = anchor.
@@ -214,7 +230,7 @@ ENDMETHOD.
r_to_row = me->to_loc-row.
endmethod.
-
+
method GET_TYPE.
rp_type = me->type.
@@ -227,7 +243,7 @@ ENDMETHOD.
CONDENSE r_width NO-GAPS.
endmethod.
-
+
method LOAD_CHART_ATTRIBUTES.
DATA: node TYPE REF TO if_ixml_element.
@@ -927,7 +943,7 @@ ENDMETHOD.
ENDIF.
endmethod.
-
+
@@ -946,7 +962,7 @@ ENDMETHOD.
ENDIF.
endmethod.
-
+
@@ -972,7 +988,7 @@ ENDMETHOD.
ENDMETHOD.
-
+
@@ -996,7 +1012,7 @@ ENDMETHOD.
size-height = ip_height.
endmethod.
-
+
@@ -1013,7 +1029,7 @@ ENDMETHOD.
anchor = anchor_one_cell.
endmethod.
-
+
diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
index 43568bd..ee55120 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
@@ -1,6 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -736,52 +736,52 @@ ENDMETHOD.
- method LOAD_DRAWING_ANCHOR.
+ METHOD load_drawing_anchor.
TYPES: BEGIN OF t_c_nv_pr,
- name TYPE string,
- id TYPE string,
- END OF t_c_nv_pr.
+ name TYPE string,
+ id TYPE string,
+ END OF t_c_nv_pr.
TYPES: BEGIN OF t_blip,
- cstate TYPE string,
- embed TYPE string,
- END OF t_blip.
+ cstate TYPE string,
+ embed TYPE string,
+ END OF t_blip.
TYPES: BEGIN OF t_chart,
- id TYPE string,
- END OF t_chart.
+ id TYPE string,
+ END OF t_chart.
TYPES: BEGIN OF t_ext,
- cx TYPE string,
- cy TYPE string,
- END OF t_ext.
+ cx TYPE string,
+ cy TYPE string,
+ END OF t_ext.
- CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true',
- lc_xml_attr_true_int TYPE string VALUE '1'.
- CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
- lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'.
+ CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true',
+ lc_xml_attr_true_int TYPE string VALUE '1'.
+ CONSTANTS: lc_rel_chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
+ lc_rel_image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image'.
- DATA: lo_drawing TYPE REF TO zcl_excel_drawing,
- node TYPE REF TO if_ixml_element,
- node2 TYPE REF TO if_ixml_element,
- node3 TYPE REF TO if_ixml_element,
- node4 TYPE REF TO if_ixml_element,
+ DATA: lo_drawing TYPE REF TO zcl_excel_drawing,
+ node TYPE REF TO if_ixml_element,
+ node2 TYPE REF TO if_ixml_element,
+ node3 TYPE REF TO if_ixml_element,
+ node4 TYPE REF TO if_ixml_element,
- ls_upper TYPE zexcel_drawing_location,
- ls_lower TYPE zexcel_drawing_location,
- ls_size TYPE zexcel_drawing_size,
- ext TYPE t_ext,
- lv_content TYPE xstring,
- lv_relation_id TYPE string,
- lv_title TYPE zexcel_sheet_title,
+ ls_upper TYPE zexcel_drawing_location,
+ ls_lower TYPE zexcel_drawing_location,
+ ls_size TYPE zexcel_drawing_size,
+ ext TYPE t_ext,
+ lv_content TYPE xstring,
+ lv_relation_id TYPE string,
+ lv_title TYPE string,
- cnvpr TYPE t_c_nv_pr,
- blip TYPE t_blip,
- chart TYPE t_chart,
- drawing_type TYPE zexcel_drawing_type,
+ cnvpr TYPE t_c_nv_pr,
+ blip TYPE t_blip,
+ chart TYPE t_chart,
+ drawing_type TYPE zexcel_drawing_type,
- rel_drawing TYPE t_rel_drawing.
+ rel_drawing TYPE t_rel_drawing.
node ?= io_anchor_element->find_from_name( name = 'from' namespace = 'xdr' ).
CHECK node IS NOT INITIAL.
@@ -801,6 +801,14 @@ ENDMETHOD.
me->fill_struct_from_attributes( EXPORTING ip_element = node CHANGING cp_structure = ext ).
ls_size-width = ext-cx.
ls_size-height = ext-cy.
+ TRY.
+ ls_size-width = zcl_excel_drawing=>emu2pixel( ls_size-width ).
+ CATCH cx_root.
+ ENDTRY.
+ TRY.
+ ls_size-height = zcl_excel_drawing=>emu2pixel( ls_size-height ).
+ CATCH cx_root.
+ ENDTRY.
ENDIF.
node ?= io_anchor_element->find_from_name( name = 'to' namespace = 'xdr' ).
@@ -877,12 +885,12 @@ ENDMETHOD.
ip_width = ls_size-width
ip_height = ls_size-height ).
- if drawing_type = zcl_excel_drawing=>type_chart.
+ IF drawing_type = zcl_excel_drawing=>type_chart.
"-------------Added by Alessandro Iannacci - Should load chart attributes
lo_drawing->load_chart_attributes( rel_drawing-content_xml ).
- endif.
+ ENDIF.
- endmethod.
+ENDMETHOD.