mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 16:46:11 +08:00
* Fix issue #819 read/write autofilter values Fix issue #819 * Code cleanup Co-authored-by: sandraros <sandra.rossi@gmail.com> Co-authored-by: Abo <andrea@borgia.bo.it>
This commit is contained in:
parent
90992efb50
commit
b9a248dcb4
|
@ -20,8 +20,7 @@ CLASS zcl_excel_autofilters DEFINITION
|
||||||
METHODS clear .
|
METHODS clear .
|
||||||
METHODS get
|
METHODS get
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_worksheet TYPE REF TO zcl_excel_worksheet OPTIONAL
|
!io_worksheet TYPE REF TO zcl_excel_worksheet
|
||||||
!i_sheet_guid TYPE sysuuid_x16 OPTIONAL
|
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ro_autofilter) TYPE REF TO zcl_excel_autofilter .
|
VALUE(ro_autofilter) TYPE REF TO zcl_excel_autofilter .
|
||||||
METHODS is_empty
|
METHODS is_empty
|
||||||
|
|
|
@ -232,6 +232,10 @@ CLASS zcl_excel_reader_2007 DEFINITION
|
||||||
!io_worksheet TYPE REF TO zcl_excel_worksheet
|
!io_worksheet TYPE REF TO zcl_excel_worksheet
|
||||||
RAISING
|
RAISING
|
||||||
zcx_excel .
|
zcx_excel .
|
||||||
|
METHODS load_worksheet_autofilter
|
||||||
|
IMPORTING
|
||||||
|
io_ixml_worksheet TYPE REF TO if_ixml_document
|
||||||
|
io_worksheet TYPE REF TO zcl_excel_worksheet.
|
||||||
METHODS load_worksheet_pagemargins
|
METHODS load_worksheet_pagemargins
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_ixml_worksheet TYPE REF TO if_ixml_document
|
!io_ixml_worksheet TYPE REF TO if_ixml_document
|
||||||
|
@ -2872,6 +2876,11 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
|
||||||
CATCH zcx_excel. " Ignore pagebreak reading errors - pass everything we were able to identify
|
CATCH zcx_excel. " Ignore pagebreak reading errors - pass everything we were able to identify
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
me->load_worksheet_autofilter( io_ixml_worksheet = lo_ixml_worksheet
|
||||||
|
io_worksheet = io_worksheet ).
|
||||||
|
CATCH zcx_excel. " Ignore autofilter reading errors - pass everything we were able to identify
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -3550,6 +3559,74 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD load_worksheet_autofilter.
|
||||||
|
|
||||||
|
TYPES: BEGIN OF lty_autofilter,
|
||||||
|
ref TYPE string,
|
||||||
|
END OF lty_autofilter.
|
||||||
|
|
||||||
|
DATA: lo_ixml_autofilter_elem TYPE REF TO if_ixml_element,
|
||||||
|
lv_ref TYPE string,
|
||||||
|
lo_ixml_filter_column_coll TYPE REF TO if_ixml_node_collection,
|
||||||
|
lo_ixml_filter_column_iter TYPE REF TO if_ixml_node_iterator,
|
||||||
|
lo_ixml_filter_column TYPE REF TO if_ixml_element,
|
||||||
|
lv_col_id TYPE i,
|
||||||
|
lv_column TYPE zexcel_cell_column,
|
||||||
|
lo_ixml_filters_coll TYPE REF TO if_ixml_node_collection,
|
||||||
|
lo_ixml_filters_iter TYPE REF TO if_ixml_node_iterator,
|
||||||
|
lo_ixml_filters TYPE REF TO if_ixml_element,
|
||||||
|
lo_ixml_filter_coll TYPE REF TO if_ixml_node_collection,
|
||||||
|
lo_ixml_filter_iter TYPE REF TO if_ixml_node_iterator,
|
||||||
|
lo_ixml_filter TYPE REF TO if_ixml_element,
|
||||||
|
lv_val TYPE string,
|
||||||
|
lo_autofilters TYPE REF TO zcl_excel_autofilters,
|
||||||
|
lo_autofilter TYPE REF TO zcl_excel_autofilter.
|
||||||
|
|
||||||
|
lo_autofilters = io_worksheet->excel->get_autofilters_reference( ).
|
||||||
|
|
||||||
|
lo_ixml_autofilter_elem = io_ixml_worksheet->find_from_name( 'autoFilter' ).
|
||||||
|
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_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_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_iter = lo_ixml_filter_coll->create_iterator( ).
|
||||||
|
lo_ixml_filter ?= lo_ixml_filter_iter->get_next( ).
|
||||||
|
WHILE lo_ixml_filter IS BOUND.
|
||||||
|
lv_val = lo_ixml_filter->get_attribute_ns( 'val' ).
|
||||||
|
|
||||||
|
lo_autofilter = lo_autofilters->get( io_worksheet = io_worksheet ).
|
||||||
|
IF lo_autofilter IS NOT BOUND.
|
||||||
|
lo_autofilter = lo_autofilters->add( io_sheet = io_worksheet ).
|
||||||
|
ENDIF.
|
||||||
|
lo_autofilter->set_value(
|
||||||
|
i_column = lv_column
|
||||||
|
i_value = lv_val ).
|
||||||
|
|
||||||
|
lo_ixml_filter ?= lo_ixml_filter_iter->get_next( ).
|
||||||
|
ENDWHILE.
|
||||||
|
|
||||||
|
lo_ixml_filters ?= lo_ixml_filters_iter->get_next( ).
|
||||||
|
ENDWHILE.
|
||||||
|
|
||||||
|
lo_ixml_filter_column ?= lo_ixml_filter_column_iter->get_next( ).
|
||||||
|
ENDWHILE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD load_worksheet_pagemargins.
|
METHOD load_worksheet_pagemargins.
|
||||||
|
|
||||||
TYPES: BEGIN OF lty_page_margins,
|
TYPES: BEGIN OF lty_page_margins,
|
||||||
|
|
|
@ -7284,7 +7284,6 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION.
|
||||||
DATA: lv_xml_node_ridx_id TYPE string,
|
DATA: lv_xml_node_ridx_id TYPE string,
|
||||||
lv_value TYPE string,
|
lv_value TYPE string,
|
||||||
lv_syindex TYPE string,
|
lv_syindex TYPE string,
|
||||||
l_guid TYPE sysuuid_x16,
|
|
||||||
lv_active_sheet TYPE zexcel_active_worksheet.
|
lv_active_sheet TYPE zexcel_active_worksheet.
|
||||||
|
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
|
@ -7485,8 +7484,7 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION.
|
||||||
|
|
||||||
lo_worksheet ?= lo_iterator->get_next( ).
|
lo_worksheet ?= lo_iterator->get_next( ).
|
||||||
lv_syindex = sy-index - 1 .
|
lv_syindex = sy-index - 1 .
|
||||||
l_guid = lo_worksheet->get_guid( ).
|
lo_autofilter = lo_autofilters->get( io_worksheet = lo_worksheet ).
|
||||||
lo_autofilter = lo_autofilters->get( i_sheet_guid = l_guid ) .
|
|
||||||
IF lo_autofilter IS BOUND.
|
IF lo_autofilter IS BOUND.
|
||||||
lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname
|
lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname
|
||||||
parent = lo_document ).
|
parent = lo_document ).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user