mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 11:06:15 +08:00
Thanks to Vladimir Scheglov git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@340 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
This commit is contained in:
parent
b29a666585
commit
2d1d7d3bef
|
@ -1242,7 +1242,7 @@ endmethod.</source>
|
|||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET" SCONAME="IP_PATH" 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_2007" CMPNAME="LOAD_WORKSHEET" SCONAME="IO_WORKSHEET" VERSION="1" LANGU="E" DESCRIPT="Excel creator" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET"/>
|
||||
<exception CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET" SCONAME="ZCX_EXCEL" VERSION="1" LANGU="E" DESCRIPT="Exceptions for ABAP2XLSX" MTDTYPE="0" EDITORDER="1 "/>
|
||||
<source>method LOAD_WORKSHEET.
|
||||
<source>METHOD load_worksheet.
|
||||
TYPES: BEGIN OF t_cell,
|
||||
r TYPE string,
|
||||
t TYPE string,
|
||||
|
@ -1255,7 +1255,10 @@ endmethod.</source>
|
|||
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.</source>
|
|||
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.</source>
|
|||
|
||||
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.</source>
|
|||
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.</source>
|
|||
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.</source>
|
|||
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.</source>
|
|||
|
||||
ENDIF.
|
||||
|
||||
endmethod.</source>
|
||||
" 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.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET_DRAWING" VERSION="1" LANGU="E" DESCRIPT="Loads worksheet drawings" EXPOSURE="1" STATE="1" EDITORDER="8 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_READER_2007" CMPNAME="LOAD_WORKSHEET_DRAWING" SCONAME="IP_PATH" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="STRING"/>
|
||||
|
|
4
ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk
Normal file
4
ZA2X/DTEL/ZEXCEL_PANE_STATE.slnk
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-16"?>
|
||||
<DTEL ROLLNAME="ZEXCEL_PANE_STATE" DDLANGUAGE="R" DOMNAME="STRING" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DDTEXT="Pane state" AUTHCLASS="00" AS4USER="_SCHEGLOV" AS4DATE="20120731" AS4TIME="192613" DTELMASTER="R" DATATYPE="STRG" LENG="000000" DECIMALS="000000" OUTPUTLEN="000000" REFKIND="D">
|
||||
<tpara/>
|
||||
</DTEL>
|
4
ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk
Normal file
4
ZA2X/DTEL/ZEXCEL_PANE_TYPE.slnk
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-16"?>
|
||||
<DTEL ROLLNAME="ZEXCEL_PANE_TYPE" DDLANGUAGE="R" DOMNAME="STRING" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DDTEXT="Pane type" AUTHCLASS="00" AS4USER="_SCHEGLOV" AS4DATE="20120731" AS4TIME="192513" DTELMASTER="R" DATATYPE="STRG" LENG="000000" DECIMALS="000000" OUTPUTLEN="000000" REFKIND="D">
|
||||
<tpara/>
|
||||
</DTEL>
|
9
ZA2X/TABL/ZEXCEL_PANE.slnk
Normal file
9
ZA2X/TABL/ZEXCEL_PANE.slnk
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-16"?>
|
||||
<TABL TABNAME="ZEXCEL_PANE" DDLANGUAGE="R" TABCLASS="INTTAB" DATMIN="0000000000" DATMAX="0000000000" DATAVG="0000000000" DDTEXT="PANE data" AUTHCLASS="00" AS4USER="_SCHEGLOV" AS4DATE="20120731" AS4TIME="203544" PROZPUFF="000" EXCLASS="1">
|
||||
<dd09l AS4VERS="0000" SCHFELDANZ="000" AS4DATE="00000000" AS4TIME="000000"/>
|
||||
<dd03p TABNAME="ZEXCEL_PANE" FIELDNAME="YSPLIT" POSITION="0001" ROLLNAME="ZEXCEL_CELL_ROW" ADMINFIELD="0" INTTYPE="X" INTLEN="000004" DOMNAME="INT4" ROUTPUTLEN="000000" HEADLEN="08" SCRLEN1="08" SCRLEN2="08" SCRLEN3="08" DTELMASTER="E" DATATYPE="INT4" LENG="000010" OUTPUTLEN="000010" DECIMALS="000000" SIGNFLAG="X" MASK=" INT4E" MASKLEN="0000" DOMNAME3L="INT4" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
|
||||
<dd03p TABNAME="ZEXCEL_PANE" FIELDNAME="XSPLIT" POSITION="0002" ROLLNAME="ZEXCEL_CELL_ROW" ADMINFIELD="0" INTTYPE="X" INTLEN="000004" DOMNAME="INT4" ROUTPUTLEN="000000" HEADLEN="08" SCRLEN1="08" SCRLEN2="08" SCRLEN3="08" DTELMASTER="E" DATATYPE="INT4" LENG="000010" OUTPUTLEN="000010" DECIMALS="000000" SIGNFLAG="X" MASK=" INT4E" MASKLEN="0000" DOMNAME3L="INT4" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
|
||||
<dd03p TABNAME="ZEXCEL_PANE" FIELDNAME="TOPLEFTCELL" POSITION="0003" ROLLNAME="ZEXCEL_CELL_COORDS" ADMINFIELD="0" INTTYPE="g" INTLEN="000008" ROUTPUTLEN="000000" HEADLEN="25" SCRLEN1="10" SCRLEN2="16" SCRLEN3="25" DTELMASTER="E" DATATYPE="STRG" LENG="000000" OUTPUTLEN="000000" DECIMALS="000000" MASK=" STRGE" MASKLEN="0000" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
|
||||
<dd03p TABNAME="ZEXCEL_PANE" FIELDNAME="ACTIVEPANE" DDLANGUAGE="R" POSITION="0004" ROLLNAME="ZEXCEL_PANE_TYPE" ADMINFIELD="0" INTTYPE="g" INTLEN="000008" DOMNAME="STRING" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DTELMASTER="R" DATATYPE="STRG" LENG="000000" OUTPUTLEN="000000" DECIMALS="000000" MASK=" STRGE" MASKLEN="0000" DDTEXT="Pane type" DOMNAME3L="STRING" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
|
||||
<dd03p TABNAME="ZEXCEL_PANE" FIELDNAME="STATE" DDLANGUAGE="R" POSITION="0005" ROLLNAME="ZEXCEL_PANE_STATE" ADMINFIELD="0" INTTYPE="g" INTLEN="000008" DOMNAME="STRING" ROUTPUTLEN="000000" HEADLEN="00" SCRLEN1="00" SCRLEN2="00" SCRLEN3="00" DTELMASTER="R" DATATYPE="STRG" LENG="000000" OUTPUTLEN="000000" DECIMALS="000000" MASK=" STRGE" MASKLEN="0000" DDTEXT="Pane state" DOMNAME3L="STRING" DEPTH="00" COMPTYPE="E" EXCLASS="0" DBPOSITION="0000" OUTPUTSTYLE="00" STRORLOCPOS="00"/>
|
||||
</TABL>
|
Loading…
Reference in New Issue
Block a user