diff --git a/src/zcl_excel_reader_huge_file.clas.abap b/src/zcl_excel_reader_huge_file.clas.abap index 99aa7b0..714402e 100644 --- a/src/zcl_excel_reader_huge_file.clas.abap +++ b/src/zcl_excel_reader_huge_file.clas.abap @@ -249,16 +249,20 @@ CLASS zcl_excel_reader_huge_file IMPLEMENTATION. WHILE io_reader->node_type NE c_end_of_stream. io_reader->next_node( ). - IF io_reader->name EQ `t`. - CASE io_reader->node_type . - WHEN c_element_open . - CLEAR lv_value . - WHEN c_node_value . - lv_value = lv_value && io_reader->value . - WHEN c_element_close . - APPEND lv_value TO et_shared_strings. - ENDCASE . - ENDIF. + CASE io_reader->name. + WHEN 'si'. + CASE io_reader->node_type . + WHEN c_element_open . + CLEAR lv_value . + WHEN c_element_close . + APPEND lv_value TO et_shared_strings. + ENDCASE . + WHEN 't'. + CASE io_reader->node_type . + WHEN c_node_value . + lv_value = lv_value && io_reader->value . + ENDCASE . + ENDCASE . ENDWHILE. ENDMETHOD. diff --git a/src/zcl_excel_reader_huge_file.clas.testclasses.abap b/src/zcl_excel_reader_huge_file.clas.testclasses.abap index f7e98c2..d06f54a 100644 --- a/src/zcl_excel_reader_huge_file.clas.testclasses.abap +++ b/src/zcl_excel_reader_huge_file.clas.testclasses.abap @@ -25,6 +25,7 @@ CLASS lcl_test DEFINITION FOR TESTING test_formula FOR TESTING RAISING cx_static_check, test_read_shared_strings FOR TESTING RAISING cx_static_check, test_shared_string_some_empty FOR TESTING RAISING cx_static_check, + test_shared_string_multi_style FOR TESTING RAISING cx_static_check, test_skip_to_inexistent FOR TESTING RAISING cx_static_check, get_reader IMPORTING iv_xml TYPE string RETURNING VALUE(eo_reader) TYPE REF TO if_sxml_reader, assert_value_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_value TYPE string, @@ -230,6 +231,29 @@ CLASS lcl_test IMPLEMENTATION. ENDMETHOD. +* + METHOD test_shared_string_multi_style. + DATA: lo_reader TYPE REF TO if_sxml_reader, + lt_act TYPE stringtab, + lt_exp TYPE stringtab. + lo_reader = cl_sxml_string_reader=>create( cl_abap_codepage=>convert_to( + `` && + `Cell A2` && + `the following coloured part will be preserved` && + `Cell A3` && + `` ) ). + APPEND : + `Cell A2` TO lt_exp, + `the following coloured part will be preserved` TO lt_exp, + `Cell A3` TO lt_exp. + + lt_act = out->read_shared_strings( lo_reader ). + + cl_abap_unit_assert=>assert_equals( act = lt_act + exp = lt_exp ). + + ENDMETHOD. + * METHOD test_skip_to_inexistent.