Merge pull request #319 from rplantiko/master

Fixed a bug in shared string table reading
This commit is contained in:
Ivan 2014-05-02 15:32:47 -05:00
commit d244c06108

View File

@ -1,21 +1,35 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<CLAS CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" VERSION="1" LANGU="E" DESCRIPT="Can read large .xlsx files" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" WITH_UNIT_TESTS="X" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="ZCL_EXCEL_READER_2007"> <CLAS CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" VERSION="1" LANGU="D" DESCRIPT="Can read large .xlsx files" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" WITH_UNIT_TESTS="X" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="ZCL_EXCEL_READER_2007">
<types CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="T_CELL_CONTENT" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="4 " SRCCOLUMN1="4 " SRCROW2="9 " SRCCOLUMN2="24 " TYPESRC_LENG="219 " TYPESRC="begin of t_cell_content, <types CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="T_CELL_CONTENT" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="4 " SRCCOLUMN1="4 " SRCROW2="9 " SRCCOLUMN2="24 " TYPESRC_LENG="219 " TYPESRC="begin of t_cell_content,
datatype type zexcel_cell_data_type, datatype type zexcel_cell_data_type,
value type zexcel_cell_value, value type zexcel_cell_value,
formula type zexcel_cell_formula, formula type zexcel_cell_formula,
style type zexcel_cell_style, style type zexcel_cell_style,
end of t_cell_content end of t_cell_content
"/> "/>
<types CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="T_CELL_COORD" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="11 " SRCCOLUMN1="4 " SRCROW2="14 " SRCCOLUMN2="22 " TYPESRC_LENG="134 " TYPESRC="begin of t_cell_coord, <types CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="T_CELL_COORD" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="2 " TYPTYPE="4" SRCROW1="11 " SRCCOLUMN1="4 " SRCROW2="14 " SRCCOLUMN2="22 " TYPESRC_LENG="134 " TYPESRC="begin of t_cell_coord,
row type zexcel_cell_row, row type zexcel_cell_row,
column type zexcel_cell_column_alpha, column type zexcel_cell_column_alpha,
end of t_cell_coord end of t_cell_coord
"/> "/>
<types CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="T_CELL" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="3 " TYPTYPE="4" SRCROW1="16 " SRCCOLUMN1="4 " SRCROW2="19 " SRCCOLUMN2="21 " TYPESRC_LENG="140 " TYPESRC="begin of t_cell. <types CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="T_CELL" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="3 " TYPTYPE="4" SRCROW1="16 " SRCCOLUMN1="4 " SRCROW2="19 " SRCCOLUMN2="21 " TYPESRC_LENG="140 " TYPESRC="begin of t_cell.
include type t_cell_coord as coord. include type t_cell_coord as coord.
include type t_cell_content as content. include type t_cell_content as content.
types: end of t_cell types: end of t_cell
"/> "/>
<localImplementation>*&quot;* use this source file for the definition and implementation of <localImplementation>*&quot;* use this source file for the definition and implementation of
*&quot;* local helper classes, interface definitions and type *&quot;* local helper classes, interface definitions and type
@ -26,11 +40,11 @@ class lcx_not_found implementation.
method constructor. method constructor.
super-&gt;constructor( textid = textid previous = previous ). super-&gt;constructor( textid = textid previous = previous ).
me-&gt;error = error. me-&gt;error = error.
endmethod. endmethod. &quot;constructor
method if_message~get_text. method if_message~get_text.
result = error. result = error.
endmethod. endmethod. &quot;if_message~get_text
endclass.</localImplementation> endclass. &quot;lcx_not_found IMPLEMENTATION</localImplementation>
<localTypes>*&quot;* use this source file for any type of declarations (class <localTypes>*&quot;* use this source file for any type of declarations (class
*&quot;* definitions, interfaces or type declarations) you need for *&quot;* definitions, interfaces or type declarations) you need for
*&quot;* components in the private section *&quot;* components in the private section
@ -48,123 +62,150 @@ endclass.</localTypes>
<localMacros>*&quot;* use this source file for any macro definitions you need <localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros> *&quot;* in the implementation part of the class</localMacros>
<localTestClasses>*&quot;* use this source file for your ABAP unit test classes <localTestClasses>*&quot;* use this source file for your ABAP unit test classes
CLASS lcl_test DEFINITION DEFERRED. class lcl_test definition deferred.
CLASS zcl_excel_reader_huge_file DEFINITION LOCAL FRIENDS lcl_test. class zcl_excel_reader_huge_file definition local friends lcl_test.
* *
CLASS lcl_test DEFINITION FOR TESTING &quot; #AU Risk_Level Harmless class lcl_test definition for testing &quot; #AU Risk_Level Harmless
INHERITING FROM cl_aunit_assert. &quot; #AU Duration Short inheriting from cl_aunit_assert. &quot; #AU Duration Short
PRIVATE SECTION. private section.
DATA: data:
out TYPE REF TO zcl_excel_reader_huge_file, &quot; object under test out type ref to zcl_excel_reader_huge_file, &quot; object under test
excel TYPE REF TO zcl_excel, excel type ref to zcl_excel,
worksheet TYPE REF TO zcl_excel_worksheet. worksheet type ref to zcl_excel_worksheet.
METHODS: methods:
setup, setup,
test_number FOR TESTING, test_number for testing,
test_shared_string FOR TESTING, test_shared_string for testing,
test_shared_string_missing FOR TESTING, test_shared_string_missing for testing,
test_inline_string FOR TESTING, test_inline_string for testing,
test_boolean FOR TESTING, test_empty_cells for testing,
test_style FOR TESTING, test_boolean for testing,
test_style_missing FOR TESTING, test_style for testing,
test_formula FOR TESTING, test_style_missing for testing,
test_read_shared_strings FOR TESTING, test_formula for testing,
test_skip_to_inexistent FOR TESTING, test_read_shared_strings for testing,
get_reader IMPORTING iv_xml TYPE string RETURNING VALUE(eo_reader) TYPE REF TO if_sxml_reader, test_skip_to_inexistent for testing,
assert_value_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_value TYPE string, get_reader importing iv_xml type string returning value(eo_reader) type ref to if_sxml_reader,
assert_formula_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_formula TYPE string, assert_value_equals importing iv_row type i default 1 iv_col type i default 1 iv_value type string,
assert_style_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_style TYPE zexcel_cell_style, assert_formula_equals importing iv_row type i default 1 iv_col type i default 1 iv_formula type string,
assert_datatype_equals IMPORTING iv_row TYPE i DEFAULT 1 iv_col TYPE i DEFAULT 1 iv_datatype TYPE string. assert_style_equals importing iv_row type i default 1 iv_col type i default 1 iv_style type ZEXCEL_CELL_STYLE,
assert_datatype_equals importing iv_row type i default 1 iv_col type i default 1 iv_datatype type string.
ENDCLASS. &quot;lcl_test DEFINITION endclass. &quot;lcl_test DEFINITION
* *
CLASS lcl_test IMPLEMENTATION. class lcl_test implementation.
* *
METHOD test_number. method test_number.
DATA lo_reader TYPE REF TO if_sxml_reader. data lo_reader type ref to if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; t=&quot;n&quot;&gt;&lt;v&gt;17&lt;/v&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; t=&quot;n&quot;&gt;&lt;v&gt;17&lt;/v&gt;&lt;/c&gt;`
). ).
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `17` ). assert_value_equals( `17` ).
assert_datatype_equals( `n` ). assert_datatype_equals( `n` ).
ENDMETHOD. &quot;test_shared_string endmethod. &quot;test_shared_string
* *
METHOD test_shared_string. method test_shared_string.
DATA lo_reader TYPE REF TO if_sxml_reader. data lo_reader type ref to if_sxml_reader.
APPEND `Test` TO out-&gt;shared_strings. append `Test1` to out-&gt;shared_strings.
append `Test2` to out-&gt;shared_strings.
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; t=&quot;s&quot;&gt;&lt;v&gt;0&lt;/v&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; t=&quot;s&quot;&gt;&lt;v&gt;1&lt;/v&gt;&lt;/c&gt;`
). ).
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `Test` ). assert_value_equals( `Test2` ).
assert_datatype_equals( `s` ). assert_datatype_equals( `s` ).
ENDMETHOD. &quot;test_shared_string endmethod. &quot;test_shared_string
* *
METHOD test_shared_string_missing. method test_shared_string_missing.
DATA: lo_reader TYPE REF TO if_sxml_reader, data: lo_reader type ref to if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found, lo_ex type ref to lcx_not_found,
lv_text TYPE string. lv_text type string.
append `Test` to out-&gt;shared_strings.
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; t=&quot;s&quot;&gt;&lt;v&gt;0&lt;/v&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; t=&quot;s&quot;&gt;&lt;v&gt;1&lt;/v&gt;&lt;/c&gt;`
). ).
TRY. try.
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
fail(`Index to non-existent shared string should give an error`). fail(`Index to non-existent shared string should give an error`).
CATCH lcx_not_found INTO lo_ex. catch lcx_not_found into lo_ex.
lv_text = lo_ex-&gt;get_text( ). &quot; &gt;&gt;&gt; May inspect the message in the debugger lv_text = lo_ex-&gt;get_text( ). &quot; &gt;&gt;&gt; May inspect the message in the debugger
ENDTRY. endtry.
ENDMETHOD. endmethod.
* *
METHOD test_inline_string. method test_inline_string.
DATA lo_reader TYPE REF TO if_sxml_reader. data lo_reader type ref to if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; t=&quot;inlineStr&quot;&gt;&lt;is&gt;&lt;t&gt;Alpha&lt;/t&gt;&lt;/is&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; t=&quot;inlineStr&quot;&gt;&lt;is&gt;&lt;t&gt;Alpha&lt;/t&gt;&lt;/is&gt;&lt;/c&gt;`
). ).
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `Alpha` ). assert_value_equals( `Alpha` ).
assert_datatype_equals( `inlineStr` ). assert_datatype_equals( `inlineStr` ).
ENDMETHOD. &quot;test_inline_string endmethod. &quot;test_inline_string
* *
METHOD test_boolean. method test_boolean.
DATA lo_reader TYPE REF TO if_sxml_reader. data lo_reader type ref to if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; t=&quot;b&quot;&gt;&lt;v&gt;1&lt;/v&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; t=&quot;b&quot;&gt;&lt;v&gt;1&lt;/v&gt;&lt;/c&gt;`
). ).
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `1` ). assert_value_equals( `1` ).
assert_datatype_equals( `b` ). assert_datatype_equals( `b` ).
ENDMETHOD. &quot;test_boolean endmethod. &quot;test_boolean
* *
METHOD test_formula. method test_formula.
DATA lo_reader TYPE REF TO if_sxml_reader. data lo_reader type ref to if_sxml_reader.
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; t=&quot;n&quot;&gt;&lt;f&gt;A2*A2&lt;/f&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; t=&quot;n&quot;&gt;&lt;f&gt;A2*A2&lt;/f&gt;&lt;/c&gt;`
). ).
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_formula_equals( `A2*A2` ). assert_formula_equals( `A2*A2` ).
assert_datatype_equals( `n` ). assert_datatype_equals( `n` ).
ENDMETHOD. &quot;test_formula endmethod. &quot;test_formula
* *
METHOD test_style. method test_empty_cells.
DATA:
lo_reader TYPE REF TO if_sxml_reader, * There is no need to store an empty cell in the ABAP worksheet structure
lo_style TYPE REF TO zcl_excel_style,
lv_guid TYPE zexcel_cell_style. data: lo_reader type ref to if_sxml_reader,
CREATE OBJECT lo_style. lo_ex type ref to lcx_not_found,
APPEND lo_style TO out-&gt;styles. lv_text type string.
lv_guid = lo_style-&gt;get_guid( ). append `` to out-&gt;shared_strings.
append `t` to out-&gt;shared_strings.
lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; t=&quot;s&quot;&gt;&lt;v&gt;0&lt;/v&gt;&lt;/c&gt;` &amp;&amp;
`&lt;c r=&quot;A2&quot; t=&quot;inlineStr&quot;&gt;&lt;is&gt;&lt;t&gt;&lt;/t&gt;&lt;/is&gt;&lt;/c&gt;` &amp;&amp;
`&lt;c r=&quot;A3&quot; t=&quot;s&quot;&gt;&lt;v&gt;1&lt;/v&gt;&lt;/c&gt;`
).
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ).
assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ).
assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ).
endmethod.
*
method test_style.
data:
lo_reader type ref to if_sxml_reader,
lo_style type ref to zcl_excel_style,
lv_guid type ZEXCEL_CELL_STYLE.
create object lo_style.
append lo_style to out-&gt;styles.
lv_guid = lo_style-&gt;get_guid( ).
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; s=&quot;0&quot;&gt;&lt;v&gt;18&lt;/v&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; s=&quot;0&quot;&gt;&lt;v&gt;18&lt;/v&gt;&lt;/c&gt;`
@ -173,150 +214,162 @@ CLASS lcl_test IMPLEMENTATION.
assert_style_equals( lv_guid ). assert_style_equals( lv_guid ).
ENDMETHOD. &quot;test_style endmethod. &quot;test_style
* *
METHOD test_style_missing. method test_style_missing.
DATA: data:
lo_reader TYPE REF TO if_sxml_reader, lo_reader type ref to if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found, lo_ex type ref to lcx_not_found,
lv_text TYPE string. lv_text type string.
lo_reader = get_reader( lo_reader = get_reader(
`&lt;c r=&quot;A1&quot; s=&quot;0&quot;&gt;&lt;v&gt;18&lt;/v&gt;&lt;/c&gt;` `&lt;c r=&quot;A1&quot; s=&quot;0&quot;&gt;&lt;v&gt;18&lt;/v&gt;&lt;/c&gt;`
). ).
TRY. try.
out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out-&gt;read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
fail(`Reference to non-existent style should throw an lcx_not_found exception`). fail(`Reference to non-existent style should throw an lcx_not_found exception`).
CATCH lcx_not_found INTO lo_ex. catch lcx_not_found into lo_ex.
lv_text = lo_ex-&gt;get_text( ). &quot; &gt;&gt;&gt; May inspect the message in the debugger lv_text = lo_ex-&gt;get_text( ). &quot; &gt;&gt;&gt; May inspect the message in the debugger
ENDTRY. endtry.
ENDMETHOD. &quot;test_style endmethod. &quot;test_style
* *
METHOD test_read_shared_strings. method test_read_shared_strings.
DATA: lo_reader TYPE REF TO if_sxml_reader, data: lo_reader type ref to if_sxml_reader,
lt_act TYPE stringtab, lt_act type stringtab,
lt_exp TYPE stringtab. lt_exp type stringtab.
lo_reader = cl_sxml_string_reader=&gt;create( cl_abap_codepage=&gt;convert_to( lo_reader = cl_sxml_string_reader=&gt;create( cl_abap_codepage=&gt;convert_to(
`&lt;sst&gt;&lt;si&gt;&lt;t/&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Alpha&lt;/t&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Bravo&lt;/t&gt;&lt;/si&gt;&lt;/sst&gt;` `&lt;sst&gt;&lt;si&gt;&lt;t/&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Alpha&lt;/t&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Bravo&lt;/t&gt;&lt;/si&gt;&lt;/sst&gt;`
) ). ) ).
APPEND : append :
`` TO lt_exp, `` to lt_exp,
`Alpha` TO lt_exp, `Alpha` to lt_exp,
`Bravo` TO lt_exp. `Bravo` to lt_exp.
lt_act = out-&gt;read_shared_strings( lo_reader ). lt_act = out-&gt;read_shared_strings( lo_reader ).
assert_equals( act = lt_act assert_equals( act = lt_act
exp = lt_exp ). exp = lt_exp ).
ENDMETHOD. endmethod.
* *
METHOD test_skip_to_inexistent. method test_skip_to_inexistent.
DATA: lo_reader TYPE REF TO if_sxml_reader, data: lo_reader type ref to if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found, lo_ex type ref to lcx_not_found,
lv_text TYPE string. lv_text type string.
lo_reader = cl_sxml_string_reader=&gt;create( cl_abap_codepage=&gt;convert_to( lo_reader = cl_sxml_string_reader=&gt;create( cl_abap_codepage=&gt;convert_to(
`&lt;sst&gt;&lt;si&gt;&lt;t/&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Alpha&lt;/t&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Bravo&lt;/t&gt;&lt;/si&gt;&lt;/sst&gt;` `&lt;sst&gt;&lt;si&gt;&lt;t/&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Alpha&lt;/t&gt;&lt;/si&gt;&lt;si&gt;&lt;t&gt;Bravo&lt;/t&gt;&lt;/si&gt;&lt;/sst&gt;`
) ). ) ).
TRY. try.
out-&gt;skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ). out-&gt;skip_to( iv_element_name = `nonExistingElement` io_reader = lo_reader ).
fail(`Skipping to non-existing element must raise lcx_not_found exception`). fail(`Skipping to non-existing element must raise lcx_not_found exception`).
CATCH lcx_not_found INTO lo_ex. catch lcx_not_found into lo_ex.
lv_text = lo_ex-&gt;get_text( ). &quot; May inspect exception text in debugger lv_text = lo_ex-&gt;get_text( ). &quot; May inspect exception text in debugger
ENDTRY. endtry.
ENDMETHOD. endmethod.
* *
METHOD get_reader. method get_reader.
DATA: lv_full TYPE string. data: lv_full type string.
CONCATENATE `&lt;root&gt;&lt;sheetData&gt;&lt;row&gt;` iv_xml `&lt;/row&gt;&lt;/sheetData&gt;&lt;/root&gt;` INTO lv_full. concatenate `&lt;root&gt;&lt;sheetData&gt;&lt;row&gt;` iv_xml `&lt;/row&gt;&lt;/sheetData&gt;&lt;/root&gt;` into lv_full.
eo_reader = cl_sxml_string_reader=&gt;create( cl_abap_codepage=&gt;convert_to( lv_full ) ). eo_reader = cl_sxml_string_reader=&gt;create( cl_abap_codepage=&gt;convert_to( lv_full ) ).
ENDMETHOD. &quot;get_reader endmethod. &quot;get_reader
* *
METHOD assert_value_equals. method assert_value_equals.
FIELD-SYMBOLS: &lt;ls_cell_data&gt; TYPE zexcel_s_cell_data. constants: lc_empty_string type string value is initial.
READ TABLE worksheet-&gt;sheet_content ASSIGNING &lt;ls_cell_data&gt; field-symbols: &lt;ls_cell_data&gt; type zexcel_s_cell_data,
WITH TABLE KEY cell_row = iv_row cell_column = iv_col. &lt;lv_value&gt; type string.
assert_subrc( sy-subrc ).
assert_equals( act = &lt;ls_cell_data&gt;-cell_value read table worksheet-&gt;sheet_content assigning &lt;ls_cell_data&gt;
with table key cell_row = iv_row cell_column = iv_col.
if sy-subrc eq 0.
assign &lt;ls_cell_data&gt;-cell_value to &lt;lv_value&gt;.
else.
assign lc_empty_string to &lt;lv_value&gt;.
endif.
assert_equals( act = &lt;lv_value&gt;
exp = iv_value ). exp = iv_value ).
ENDMETHOD. &quot;assert_value_equals endmethod. &quot;assert_value_equals
** **
METHOD assert_formula_equals. method assert_formula_equals.
FIELD-SYMBOLS: &lt;ls_cell_data&gt; TYPE zexcel_s_cell_data. field-symbols: &lt;ls_cell_data&gt; type zexcel_s_cell_data.
READ TABLE worksheet-&gt;sheet_content ASSIGNING &lt;ls_cell_data&gt; read table worksheet-&gt;sheet_content assigning &lt;ls_cell_data&gt;
WITH TABLE KEY cell_row = iv_row cell_column = iv_col. with table key cell_row = iv_row cell_column = iv_col.
assert_subrc( sy-subrc ). assert_subrc( sy-subrc ).
assert_equals( act = &lt;ls_cell_data&gt;-cell_formula assert_equals( act = &lt;ls_cell_data&gt;-cell_formula
exp = iv_formula ). exp = iv_formula ).
ENDMETHOD. &quot;assert_formula_equals endmethod. &quot;assert_formula_equals
* *
METHOD assert_style_equals. method assert_style_equals.
FIELD-SYMBOLS: &lt;ls_cell_data&gt; TYPE zexcel_s_cell_data. field-symbols: &lt;ls_cell_data&gt; type zexcel_s_cell_data.
READ TABLE worksheet-&gt;sheet_content ASSIGNING &lt;ls_cell_data&gt; read table worksheet-&gt;sheet_content assigning &lt;ls_cell_data&gt;
WITH TABLE KEY cell_row = iv_row cell_column = iv_col. with table key cell_row = iv_row cell_column = iv_col.
assert_subrc( sy-subrc ). assert_subrc( sy-subrc ).
assert_equals( act = &lt;ls_cell_data&gt;-cell_style assert_equals( act = &lt;ls_cell_data&gt;-cell_style
exp = iv_style ). exp = iv_style ).
ENDMETHOD. endmethod.
* *
METHOD assert_datatype_equals. method assert_datatype_equals.
FIELD-SYMBOLS: &lt;ls_cell_data&gt; TYPE zexcel_s_cell_data. field-symbols: &lt;ls_cell_data&gt; type zexcel_s_cell_data.
READ TABLE worksheet-&gt;sheet_content ASSIGNING &lt;ls_cell_data&gt; read table worksheet-&gt;sheet_content assigning &lt;ls_cell_data&gt;
WITH TABLE KEY cell_row = iv_row cell_column = iv_col. with table key cell_row = iv_row cell_column = iv_col.
assert_subrc( sy-subrc ). assert_subrc( sy-subrc ).
assert_equals( act = &lt;ls_cell_data&gt;-data_type assert_equals( act = &lt;ls_cell_data&gt;-data_type
exp = iv_datatype ). exp = iv_datatype ).
ENDMETHOD. &quot;assert_datatype_equals endmethod. &quot;assert_datatype_equals
METHOD setup. method setup.
CREATE OBJECT out. create object out.
CREATE OBJECT excel. create object excel.
CREATE OBJECT worksheet create object worksheet
EXPORTING exporting
ip_excel = excel. ip_excel = excel.
ENDMETHOD. &quot;setup endmethod. &quot;setup
ENDCLASS. &quot;lcl_test IMPLEMENTATION</localTestClasses> endclass. &quot;lcl_test IMPLEMENTATION</localTestClasses>
<typeIntfDef CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" TYPEGROUP="IF_SXML_NODE" VERSION="1" TPUTYPE="2" IMPLICIT="X"/> <typeIntfDef CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" TYPEGROUP="IF_SXML_NODE" VERSION="1" TPUTYPE="2" IMPLICIT="X"/>
<attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_ATTRIBUTE" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="5 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_ATTRIBUTE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/> <attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_ATTRIBUTE" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="5 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_ATTRIBUTE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_ELEMENT_CLOSE" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_ELEMENT_CLOSE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/> <attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_ELEMENT_CLOSE" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="3 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_ELEMENT_CLOSE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_ELEMENT_OPEN" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_ELEMENT_OPEN" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/> <attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_ELEMENT_OPEN" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="2 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_ELEMENT_OPEN" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_END_OF_STREAM" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_FINAL" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/> <attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_END_OF_STREAM" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_FINAL" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GS_BUFFER_STYLE" VERSION="1" LANGU="E" EXPOSURE="0" STATE="1" EDITORDER="4 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="4" SRCROW1="26 " SRCCOLUMN1="4 " SRCROW2="29 " SRCCOLUMN2="25 " TYPESRC_LENG="117 " TYPESRC="begin of gs_buffer_style, <attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="C_NODE_VALUE" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="6 " ATTDECLTYP="2" ATTVALUE="IF_SXML_NODE=&gt;CO_NT_VALUE" ATTEXPVIRT="0" TYPTYPE="1" TYPE="IF_SXML_NODE=&gt;NODE_TYPE" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
<attribute CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GS_BUFFER_STYLE" VERSION="1" LANGU="D" EXPOSURE="0" STATE="1" EDITORDER="4 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="4" SRCROW1="26 " SRCCOLUMN1="4 " SRCROW2="29 " SRCCOLUMN2="25 " TYPESRC_LENG="117 " TYPESRC="begin of gs_buffer_style,
index type i value -1, index type i value -1,
guid type zexcel_cell_style, guid type zexcel_cell_style,
end of gs_buffer_style end of gs_buffer_style
"/> "/>
<inheritance CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" STATE="1"> <inheritance CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" STATE="1">
<redefinition CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" MTDNAME="LOAD_SHARED_STRINGS" EXPOSURE="1"/> <redefinition CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" MTDNAME="LOAD_SHARED_STRINGS" EXPOSURE="1"/>
<redefinition CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" MTDNAME="LOAD_WORKSHEET" EXPOSURE="1"/> <redefinition CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_READER_2007" VERSION="1" MTDNAME="LOAD_WORKSHEET" EXPOSURE="1"/>
</inheritance> </inheritance>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" VERSION="1" LANGU="E" DESCRIPT="Fill some cell properties from &lt;c&gt; element attributes" EXPOSURE="0" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" VERSION="1" LANGU="D" DESCRIPT="Fill some cell properties from &lt;c&gt; element attributes" EXPOSURE="0" STATE="1" EDITORDER="2 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" SCONAME="IO_READER" VERSION="1" LANGU="E" DESCRIPT="SXML Reader Interface" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" SCONAME="IO_READER" VERSION="1" LANGU="D" DESCRIPT="SXML Reader Interface" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" SCONAME="ES_CELL" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_CELL"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" SCONAME="ES_CELL" VERSION="1" LANGU="D" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_CELL"/>
<exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/> <exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="FILL_CELL_FROM_ATTRIBUTES" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="D" MTDTYPE="0" EDITORDER="1 "/>
<source>method FILL_CELL_FROM_ATTRIBUTES. <source>method FILL_CELL_FROM_ATTRIBUTES.
while io_reader-&gt;node_type ne c_end_of_stream. while io_reader-&gt;node_type ne c_end_of_stream.
@ -336,13 +389,11 @@ ENDCLASS. &quot;lcl_test IMPLEMENTATION</localTestClasses>
endcase. endcase.
endwhile. endwhile.
io_reader-&gt;current_node( ).
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_CELL_COORD" VERSION="1" LANGU="E" DESCRIPT='Cell coordinates from expression (like &quot;B2&quot;)' EXPOSURE="0" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_CELL_COORD" VERSION="1" LANGU="D" DESCRIPT='Cell coordinates from expression (like &quot;B2&quot;)' EXPOSURE="0" STATE="1" EDITORDER="4 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_CELL_COORD" SCONAME="IV_COORD" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_CELL_COORD" SCONAME="IV_COORD" VERSION="1" LANGU="D" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_CELL_COORD" SCONAME="ES_COORD" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_CELL_COORD"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_CELL_COORD" SCONAME="ES_COORD" VERSION="1" LANGU="D" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="T_CELL_COORD"/>
<source>method GET_CELL_COORD. <source>method GET_CELL_COORD.
zcl_excel_common=&gt;convert_columnrow2column_a_row( zcl_excel_common=&gt;convert_columnrow2column_a_row(
@ -355,10 +406,10 @@ endmethod.</source>
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" VERSION="1" LANGU="E" DESCRIPT="Read from shared string table" EXPOSURE="0" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" VERSION="1" LANGU="D" DESCRIPT="Read from shared string table" EXPOSURE="0" STATE="1" EDITORDER="6 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" SCONAME="IV_INDEX" VERSION="1" LANGU="E" DESCRIPT="Zero-based Index" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ANY"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" SCONAME="IV_INDEX" VERSION="1" LANGU="D" DESCRIPT="Zero-based Index" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ANY"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" SCONAME="EV_VALUE" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" SCONAME="EV_VALUE" VERSION="1" LANGU="D" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRING"/>
<exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/> <exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SHARED_STRING" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="D" MTDTYPE="0" EDITORDER="1 "/>
<source>method GET_SHARED_STRING. <source>method GET_SHARED_STRING.
data: lv_tabix type i. data: lv_tabix type i.
lv_tabix = iv_index + 1. lv_tabix = iv_index + 1.
@ -370,10 +421,10 @@ endmethod.</source>
endif. endif.
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" VERSION="1" LANGU="E" DESCRIPT="Read from style table" EXPOSURE="0" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" VERSION="1" LANGU="D" DESCRIPT="Read from style table" EXPOSURE="0" STATE="1" EDITORDER="7 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" SCONAME="IV_INDEX" VERSION="1" LANGU="E" DESCRIPT="Zero-based Index" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ANY"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" SCONAME="IV_INDEX" VERSION="1" LANGU="D" DESCRIPT="Zero-based Index" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="ANY"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" SCONAME="EV_STYLE_GUID" VERSION="1" LANGU="E" DESCRIPT="Style ID" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" SCONAME="EV_STYLE_GUID" VERSION="1" LANGU="D" DESCRIPT="Style ID" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="ZEXCEL_CELL_STYLE"/>
<exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/> <exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_STYLE" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="D" MTDTYPE="0" EDITORDER="1 "/>
<source>method GET_STYLE. <source>method GET_STYLE.
data: lv_tabix type i, data: lv_tabix type i,
@ -396,10 +447,10 @@ endmethod.</source>
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" VERSION="1" LANGU="E" DESCRIPT="Create an sXML reader for an XML file in the zip archive" EXPOSURE="0" STATE="1" EDITORDER="9 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" VERSION="1" LANGU="D" DESCRIPT="Create an sXML reader for an XML file in the zip archive" EXPOSURE="0" STATE="1" EDITORDER="9 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" SCONAME="IV_PATH" VERSION="1" LANGU="E" DESCRIPT="Path of the file in the archive" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" SCONAME="IV_PATH" VERSION="1" LANGU="D" DESCRIPT="Path of the file in the archive" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" SCONAME="EO_READER" VERSION="1" LANGU="E" DESCRIPT="sXML reader" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="IF_SXML_READER"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" SCONAME="EO_READER" VERSION="1" LANGU="D" DESCRIPT="sXML reader" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="3" TYPE="IF_SXML_READER"/>
<exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/> <exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="GET_SXML_READER" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="D" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
<source>method GET_SXML_READER. <source>method GET_SXML_READER.
data: lv_xml type xstring. data: lv_xml type xstring.
@ -432,10 +483,13 @@ endmethod.</source>
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="PUT_CELL_TO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Put cell data to worksheet" EXPOSURE="0" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="PUT_CELL_TO_WORKSHEET" VERSION="1" LANGU="D" DESCRIPT="Put cell data to worksheet" EXPOSURE="0" STATE="1" EDITORDER="5 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="PUT_CELL_TO_WORKSHEET" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Worksheet" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="PUT_CELL_TO_WORKSHEET" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="D" DESCRIPT="Worksheet" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="PUT_CELL_TO_WORKSHEET" SCONAME="IS_CELL" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="T_CELL"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="PUT_CELL_TO_WORKSHEET" SCONAME="IS_CELL" VERSION="1" LANGU="D" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="T_CELL"/>
<source>method PUT_CELL_TO_WORKSHEET. <source>method PUT_CELL_TO_WORKSHEET.
check is_cell-value is not initial
or is_cell-formula is not initial
or is_cell-style is not initial.
call method io_worksheet-&gt;set_cell call method io_worksheet-&gt;set_cell
exporting exporting
ip_column = is_cell-column ip_column = is_cell-column
@ -446,9 +500,9 @@ endmethod.</source>
ip_style = is_cell-style. ip_style = is_cell-style.
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_SHARED_STRINGS" VERSION="1" LANGU="E" DESCRIPT="Reads the XML file containing the shared strings" EXPOSURE="0" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_SHARED_STRINGS" VERSION="1" LANGU="D" DESCRIPT="Reads the XML file containing the shared strings" EXPOSURE="0" STATE="1" EDITORDER="3 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_SHARED_STRINGS" SCONAME="IO_READER" VERSION="1" LANGU="E" DESCRIPT="sXML reader" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_SHARED_STRINGS" SCONAME="IO_READER" VERSION="1" LANGU="D" DESCRIPT="sXML reader" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_SHARED_STRINGS" SCONAME="ET_SHARED_STRINGS" VERSION="1" LANGU="E" DESCRIPT="Table with Strings" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRINGTAB"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_SHARED_STRINGS" SCONAME="ET_SHARED_STRINGS" VERSION="1" LANGU="D" DESCRIPT="Table with Strings" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="STRINGTAB"/>
<source>method READ_SHARED_STRINGS. <source>method READ_SHARED_STRINGS.
while io_reader-&gt;node_type ne c_end_of_stream. while io_reader-&gt;node_type ne c_end_of_stream.
@ -461,10 +515,10 @@ endmethod.</source>
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" VERSION="1" LANGU="E" DESCRIPT="Reads the data, formula and styles of the worksheet&apos;s cells" EXPOSURE="0" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" VERSION="1" LANGU="D" DESCRIPT="Reads the data, formula and styles of the worksheet&apos;s cells" EXPOSURE="0" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" SCONAME="IO_READER" VERSION="1" LANGU="E" DESCRIPT="Worksheet reader" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" SCONAME="IO_READER" VERSION="1" LANGU="D" DESCRIPT="Worksheet reader" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Worksheet" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="D" DESCRIPT="Worksheet" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/>
<exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/> <exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="READ_WORKSHEET_DATA" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="D" MTDTYPE="0" EDITORDER="1 "/>
<source>method READ_WORKSHEET_DATA. <source>method READ_WORKSHEET_DATA.
data: ls_cell type t_cell. data: ls_cell type t_cell.
@ -480,20 +534,23 @@ endmethod.</source>
if io_reader-&gt;name eq `c`. if io_reader-&gt;name eq `c`.
ls_cell = fill_cell_from_attributes( io_reader ). ls_cell = fill_cell_from_attributes( io_reader ).
endif. endif.
when c_element_close. when c_node_value.
case io_reader-&gt;name. case io_reader-&gt;name.
when `c`.
put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ).
when `f`. when `f`.
ls_cell-formula = io_reader-&gt;value. ls_cell-formula = io_reader-&gt;value.
when `v`. when `v`.
if ls_cell-datatype eq `s`. if ls_cell-datatype eq `s`.
ls_cell-value = get_shared_string( ls_cell-value ). ls_cell-value = get_shared_string( io_reader-&gt;value ).
else. else.
ls_cell-value = io_reader-&gt;value. ls_cell-value = io_reader-&gt;value.
endif. endif.
when `is`. when `t` or `is`.
ls_cell-value = io_reader-&gt;value. ls_cell-value = io_reader-&gt;value.
endcase.
when c_element_close.
case io_reader-&gt;name.
when `c`.
put_cell_to_worksheet( is_cell = ls_cell io_worksheet = io_worksheet ).
when `sheetData`. when `sheetData`.
exit. exit.
endcase. endcase.
@ -502,10 +559,10 @@ endmethod.</source>
endmethod.</source> endmethod.</source>
</method> </method>
<method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" VERSION="1" LANGU="E" DESCRIPT="Go ahead till element with given name is found" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0"> <method CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" VERSION="1" LANGU="D" DESCRIPT="Go ahead till element with given name is found" EXPOSURE="0" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" SCONAME="IV_ELEMENT_NAME" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" SCONAME="IV_ELEMENT_NAME" VERSION="1" LANGU="D" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
<parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" SCONAME="IO_READER" VERSION="1" LANGU="E" DESCRIPT="SXML Reader Interface" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/> <parameter CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" SCONAME="IO_READER" VERSION="1" LANGU="D" DESCRIPT="SXML Reader Interface" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="IF_SXML_READER"/>
<exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="E" MTDTYPE="0" EDITORDER="1 "/> <exception CLSNAME="ZCL_EXCEL_READER_HUGE_FILE" CMPNAME="SKIP_TO" SCONAME="LCX_NOT_FOUND" VERSION="1" LANGU="D" MTDTYPE="0" EDITORDER="1 "/>
<source>method SKIP_TO. <source>method SKIP_TO.
* Skip forward to given element * Skip forward to given element