diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
index 6f943d8..3d9cf7e 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk
@@ -1242,7 +1242,7 @@ endmethod.
- method LOAD_WORKSHEET.
+ METHOD load_worksheet.
TYPES: BEGIN OF t_cell,
r TYPE string,
t TYPE string,
@@ -1255,7 +1255,10 @@ endmethod.
width TYPE float,
customwidth TYPE string,
style TYPE string,
+ bestfit TYPE string,
+ collapsed TYPE string,
hidden TYPE string,
+ outlinelevel TYPE string,
END OF t_column.
TYPES: BEGIN OF t_sheetview,
@@ -1278,6 +1281,9 @@ endmethod.
thickbot TYPE string,
customformat TYPE string,
thicktop TYPE string,
+ collapsed TYPE string,
+ hidden TYPE string,
+ outlinelevel TYPE string,
END OF t_row.
TYPES: BEGIN OF t_page_setup,
@@ -1332,6 +1338,12 @@ endmethod.
sheetview_elem TYPE REF TO if_ixml_element,
sheetview TYPE t_sheetview,
+ pane_elem TYPE REF TO if_ixml_element,
+ pane TYPE zexcel_pane,
+ pane_cell_row_a TYPE string,
+ pane_cell_row TYPE zexcel_cell_row,
+ pane_cell_col_a TYPE zexcel_cell_column_alpha,
+ pane_cell_col TYPE zexcel_cell_column,
mergecells TYPE REF TO if_ixml_node_collection,
mergecell_elem TYPE REF TO if_ixml_element,
@@ -1364,9 +1376,14 @@ endmethod.
column TYPE t_column,
column_alpha TYPE zexcel_cell_column_alpha,
column_dimension TYPE REF TO zcl_excel_worksheet_columndime,
+ outline_level TYPE int4,
rows TYPE REF TO if_ixml_node_collection,
row TYPE t_row,
+ max_col TYPE i, "for use with SPANS element
+ min_col TYPE i, "for use with SPANS element
+ max_col_s TYPE char10, "for use with SPANS element
+ min_col_s TYPE char10, "for use with SPANS element
row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi,
path TYPE string,
@@ -1418,10 +1435,35 @@ endmethod.
WHILE row_elem IS BOUND.
fill_struct_from_attributes( EXPORTING ip_element = row_elem CHANGING cp_structure = row ).
+ SPLIT row-spans AT ':' INTO min_col_s max_col_s.
+ index = max_col_s.
+ IF index > max_col.
+ max_col = index.
+ ENDIF.
cell_row = row-r.
- IF row-customheight = '1'.
+ IF row-customheight = '1' OR row-collapsed = lc_xml_attr_true OR row-collapsed = lc_xml_attr_true_int OR
+ row-hidden = lc_xml_attr_true OR row-hidden = lc_xml_attr_true_int OR row-outlineLevel > '0'.
row_dimension = io_worksheet->get_row_dimension( cell_row ).
- row_dimension->set_row_height( row-ht ).
+ IF row-customheight = '1'.
+ row_dimension->set_row_height( row-ht ).
+ ENDIF.
+
+ IF row-collapsed = lc_xml_attr_true OR row-collapsed = lc_xml_attr_true_int.
+ row_dimension->set_collapsed( abap_true ).
+ ENDIF.
+
+ IF row-hidden = lc_xml_attr_true OR row-hidden = lc_xml_attr_true_int.
+ row_dimension->set_visible( abap_false ).
+ ENDIF.
+
+ IF row-outlineLevel > ''.
+* outline_level = condense( row-outlineLevel ). "For basis 7.02 and higher
+ CONDENSE row-outlineLevel.
+ outline_level = row-outlineLevel.
+ IF outline_level > 0.
+ row_dimension->set_outline_level( outline_level ).
+ ENDIF.
+ ENDIF.
ENDIF.
cells = row_elem->get_elements_by_tag_name( name = 'c' ).
@@ -1493,27 +1535,64 @@ endmethod.
fill_struct_from_attributes( EXPORTING ip_element = column_elem CHANGING cp_structure = column ).
column_elem ?= iterator->get_next( ).
IF column-customwidth = lc_xml_attr_true OR
- column-customwidth = lc_xml_attr_true_int.
+ column-customwidth = lc_xml_attr_true_int OR
+ column-bestfit = lc_xml_attr_true OR
+ column-bestfit = lc_xml_attr_true_int OR
+ column-collapsed = lc_xml_attr_true OR
+ column-collapsed = lc_xml_attr_true_int OR
+ column-hidden = lc_xml_attr_true OR
+ column-hidden = lc_xml_attr_true_int OR
+ column-outlineLevel > '' OR
+ column-style > ''.
index = column-min.
- WHILE index <= column-max.
+WHILE index <= column-max AND index <= max_col.
column_alpha = zcl_excel_common=>convert_column2alpha( index ).
column_dimension = io_worksheet->get_column_dimension( column_alpha ).
- column_dimension->set_width( column-width ).
- ADD 1 TO index.
- ENDWHILE.
- ENDIF.
- IF column-hidden = lc_xml_attr_true OR
- column-hidden = lc_xml_attr_true_int.
- index = column-min.
- WHILE index <= column-max.
- column_alpha = zcl_excel_common=>convert_column2alpha( index ).
- column_dimension = io_worksheet->get_column_dimension( column_alpha ).
- column_dimension->set_visible( abap_false ).
+ IF column-customwidth = lc_xml_attr_true OR column-customwidth = lc_xml_attr_true_int.
+ column_dimension->set_width( column-width ).
+ ENDIF.
+
+ IF column-bestfit = lc_xml_attr_true OR column-bestfit = lc_xml_attr_true_int.
+ column_dimension->set_auto_size( abap_true ).
+ ENDIF.
+
+ IF column-collapsed = lc_xml_attr_true OR column-collapsed = lc_xml_attr_true_int.
+ column_dimension->set_collapsed( abap_true ).
+ ENDIF.
+
+ IF column-hidden = lc_xml_attr_true OR column-hidden = lc_xml_attr_true_int.
+ column_dimension->set_visible( abap_false ).
+ ENDIF.
+
+ IF column-outlineLevel > ''.
+ outline_level = condense( column-outlineLevel ).
+ IF outline_level > 0.
+ column_dimension->set_outline_level( outline_level ).
+ ENDIF.
+ ENDIF.
+
+ IF column-style > ''.
+ sy-index = column-style + 1.
+ READ TABLE styles INTO style INDEX sy-index.
+ column_dimension->set_column_style_by_guid( style->get_guid( ) ).
+ ENDIF.
+
ADD 1 TO index.
ENDWHILE.
ENDIF.
+* Fix 207 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007
+* IF column-hidden = lc_xml_attr_true OR
+* column-hidden = lc_xml_attr_true_int.
+* index = column-min.
+* WHILE index <= column-max.
+* column_alpha = zcl_excel_common=>convert_column2alpha( index ).
+* column_dimension = io_worksheet->get_column_dimension( column_alpha ).
+* column_dimension->set_visible( abap_false ).
+* ADD 1 TO index.
+* ENDWHILE.
+* ENDIF.
ENDWHILE.
"Now we need to get information from the sheetView node
@@ -1609,7 +1688,28 @@ endmethod.
ENDIF.
-endmethod.
+ " Start fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007
+ " Read pane
+ pane_elem = sheetview_elem->find_from_name( name = 'pane' ).
+ IF pane_elem IS BOUND.
+ fill_struct_from_attributes( EXPORTING ip_element = pane_elem CHANGING cp_structure = pane ).
+ FIND REGEX '^(\w+)(\d+)$' IN pane-topleftcell SUBMATCHES pane_cell_col_a
+ pane_cell_row_a.
+ pane_cell_row = pane_cell_row_a.
+ pane_cell_col = zcl_excel_common=>convert_column2int( pane_cell_col_a ).
+ SUBTRACT 1 FROM: pane_cell_col, pane_cell_row.
+ IF pane_cell_col > 0 AND pane_cell_row > 0.
+ io_worksheet->freeze_panes( ip_num_rows = pane_cell_row
+ ip_num_columns = pane_cell_col ).
+ ELSEIF pane_cell_row > 0.
+ io_worksheet->freeze_panes( ip_num_rows = pane_cell_row ).
+ ELSE.
+ io_worksheet->freeze_panes( ip_num_columns = pane_cell_col ).
+ ENDIF.
+ ENDIF.
+ " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007
+
+ENDMETHOD.
diff --git a/ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk b/ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk
new file mode 100644
index 0000000..c06feae
--- /dev/null
+++ b/ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk b/ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk
new file mode 100644
index 0000000..e3bd68d
--- /dev/null
+++ b/ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/ZA2X/TABL/ZEXCEL_PANE.slnk b/ZA2X/TABL/ZEXCEL_PANE.slnk
new file mode 100644
index 0000000..d616ea9
--- /dev/null
+++ b/ZA2X/TABL/ZEXCEL_PANE.slnk
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+