mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-04 15:16:21 +08:00
Corrected issue #355 ( writer not writing strings with leading blanks )
Added Marcus von Cube's addition that allows to write very large files by using a transformation instead of ixml-handling in the string
This commit is contained in:
parent
b2732ee2f7
commit
020637fa12
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CLAS CLSNAME="ZCL_EXCEL_WRITER_2007" VERSION="1" LANGU="E" DESCRIPT="Excel writer 2007" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 ">
|
||||
<CLAS CLSNAME="ZCL_EXCEL_WRITER_2007" VERSION="1" LANGU="E" DESCRIPT="Excel writer 2007" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " ZSAPLINK_PLUGIN_MAJOR_VERSION="0 " ZSAPLINK_PLUGIN_MINOR_VERSION="1 " ZSAPLINK_PLUGIN_BUILD_VERSION="0 " ZSAPLINK_PLUGIN_INFO1="ZSAPLINK_CLASS is part of the main ZSAPLINK project --> This plugin found there instead of ZSAPLINK_PLUGINS projects" ZSAPLINK_PLUGIN_INFO2="SAPLINK homepage: https://www.assembla.com/spaces/saplink/wiki" ZSAPLINK_PLUGIN_INFO3="Download from https://www.assembla.com/code/saplink/subversion/nodes" ZSAPLINK_PLUGIN_INFO4="and navigate to: trunk -> core -> ZSAPLINK -> CLAS -> ZSAPLINK_CLASS.slnk">
|
||||
<implementing CLSNAME="ZCL_EXCEL_WRITER_2007" REFCLSNAME="ZIF_EXCEL_WRITER" VERSION="1" EXPOSURE="2" STATE="1" RELTYPE="1" EDITORDER="1 "/>
|
||||
<localImplementation>*"* local class implementation for public class
|
||||
*"* use this source file for the implementation part of
|
||||
|
@ -27,7 +27,7 @@
|
|||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_THEME" VERSION="1" LANGU="E" DESCRIPT="xlTheme XML File Name" EXPOSURE="1" STATE="1" EDITORDER="16 " ATTDECLTYP="2" ATTVALUE="'xl/theme/theme1.xml'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="C_XL_WORKBOOK" VERSION="1" LANGU="E" DESCRIPT="xlWorkbook XML File Name" EXPOSURE="1" STATE="1" EDITORDER="17 " ATTDECLTYP="2" ATTVALUE="'xl/workbook.xml'" ATTEXPVIRT="0" TYPTYPE="1" TYPE="STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="EXCEL" VERSION="1" LANGU="E" DESCRIPT="Excel creator" EXPOSURE="1" STATE="1" EDITORDER="18 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="SHARED_STRINGS" VERSION="1" LANGU="E" DESCRIPT="Shared Strings" EXPOSURE="0" STATE="1" EDITORDER="19 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_SHARED_STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="SHARED_STRINGS" VERSION="1" LANGU="E" DESCRIPT="Shared Strings" EXPOSURE="1" STATE="1" EDITORDER="19 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_SHARED_STRING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="STYLES_COND_MAPPING" VERSION="1" LANGU="E" DESCRIPT="Styles mapping" EXPOSURE="1" STATE="1" EDITORDER="20 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_STYLES_COND_MAPPING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="STYLES_MAPPING" VERSION="1" LANGU="E" DESCRIPT="Styles mapping" EXPOSURE="1" STATE="1" EDITORDER="21 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="1" TYPE="ZEXCEL_T_STYLES_MAPPING" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<interfaceMethod CLSNAME="ZCL_EXCEL_WRITER_2007" CPDNAME="ZIF_EXCEL_WRITER~WRITE_FILE">
|
||||
|
@ -2522,39 +2522,39 @@ ENDMETHOD.</source>
|
|||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="CREATE_XL_SHAREDSTRINGS" VERSION="1" LANGU="E" DESCRIPT="Create 'xl/sharedStrings.xml'" EXPOSURE="1" STATE="1" EDITORDER="11 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="CREATE_XL_SHAREDSTRINGS" SCONAME="EP_CONTENT" VERSION="1" LANGU="E" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="3" PARPASSTYP="0" TYPTYPE="1" TYPE="XSTRING"/>
|
||||
<source>method CREATE_XL_SHAREDSTRINGS.
|
||||
<source>METHOD create_xl_sharedstrings.
|
||||
|
||||
|
||||
** Constant node name
|
||||
DATA: lc_xml_node_sst TYPE string VALUE 'sst',
|
||||
lc_xml_node_si TYPE string VALUE 'si',
|
||||
lc_xml_node_t TYPE string VALUE 't',
|
||||
DATA: lc_xml_node_sst TYPE string VALUE 'sst',
|
||||
lc_xml_node_si TYPE string VALUE 'si',
|
||||
lc_xml_node_t TYPE string VALUE 't',
|
||||
" Node attributes
|
||||
lc_xml_attr_count TYPE string VALUE 'count',
|
||||
lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount',
|
||||
lc_xml_attr_count TYPE string VALUE 'count',
|
||||
lc_xml_attr_uniquecount TYPE string VALUE 'uniqueCount',
|
||||
" Node namespace
|
||||
lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'.
|
||||
lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main'.
|
||||
|
||||
DATA: lo_ixml TYPE REF TO if_ixml,
|
||||
lo_document TYPE REF TO if_ixml_document,
|
||||
lo_element_root TYPE REF TO if_ixml_element,
|
||||
lo_element TYPE REF TO if_ixml_element,
|
||||
lo_sub_element TYPE REF TO if_ixml_element,
|
||||
lo_encoding TYPE REF TO if_ixml_encoding,
|
||||
lo_streamfactory TYPE REF TO if_ixml_stream_factory,
|
||||
lo_ostream TYPE REF TO if_ixml_ostream,
|
||||
lo_renderer TYPE REF TO if_ixml_renderer,
|
||||
lo_iterator TYPE REF TO cl_object_collection_iterator,
|
||||
lo_worksheet TYPE REF TO zcl_excel_worksheet.
|
||||
DATA: lo_ixml TYPE REF TO if_ixml,
|
||||
lo_document TYPE REF TO if_ixml_document,
|
||||
lo_element_root TYPE REF TO if_ixml_element,
|
||||
lo_element TYPE REF TO if_ixml_element,
|
||||
lo_sub_element TYPE REF TO if_ixml_element,
|
||||
lo_encoding TYPE REF TO if_ixml_encoding,
|
||||
lo_streamfactory TYPE REF TO if_ixml_stream_factory,
|
||||
lo_ostream TYPE REF TO if_ixml_ostream,
|
||||
lo_renderer TYPE REF TO if_ixml_renderer,
|
||||
lo_iterator TYPE REF TO cl_object_collection_iterator,
|
||||
lo_worksheet TYPE REF TO zcl_excel_worksheet.
|
||||
|
||||
DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted,
|
||||
ls_shared_string TYPE zexcel_s_shared_string,
|
||||
lv_value TYPE string,
|
||||
lv_count_str TYPE string,
|
||||
lv_uniquecount_str TYPE string,
|
||||
lv_sytabix TYPE sytabix,
|
||||
lv_count TYPE i,
|
||||
lv_uniquecount TYPE i.
|
||||
DATA: lt_cell_data TYPE zexcel_t_cell_data_unsorted,
|
||||
ls_shared_string TYPE zexcel_s_shared_string,
|
||||
lv_value TYPE string,
|
||||
lv_count_str TYPE string,
|
||||
lv_uniquecount_str TYPE string,
|
||||
lv_sytabix TYPE sytabix,
|
||||
lv_count TYPE i,
|
||||
lv_uniquecount TYPE i.
|
||||
|
||||
FIELD-SYMBOLS: <fs_sheet_content> TYPE zexcel_s_cell_data,
|
||||
<fs_sheet_string> TYPE zexcel_s_shared_string.
|
||||
|
@ -2624,9 +2624,10 @@ ENDMETHOD.</source>
|
|||
parent = lo_document ).
|
||||
lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t
|
||||
parent = lo_document ).
|
||||
if <fs_sheet_string>-string_type EQ 's_leading_blanks'.
|
||||
lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ).
|
||||
endif.
|
||||
* if <fs_sheet_string>-string_type EQ 's_leading_blanks'.
|
||||
IF <fs_sheet_string>-string_value IS NOT INITIAL AND <fs_sheet_string>-string_value(1) EQ ` `.
|
||||
lo_sub_element->set_attribute( name = 'space' namespace = 'xml' value = 'preserve' ).
|
||||
ENDIF.
|
||||
lo_sub_element->set_value( value = <fs_sheet_string>-string_value ).
|
||||
lo_element->append_child( new_child = lo_sub_element ).
|
||||
lo_element_root->append_child( new_child = lo_element ).
|
||||
|
@ -2639,7 +2640,7 @@ ENDMETHOD.</source>
|
|||
lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ).
|
||||
lo_renderer->render( ).
|
||||
|
||||
endmethod.</source>
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="CREATE_XL_SHEET" VERSION="1" LANGU="E" DESCRIPT="Create 'xl/sheet.xml'" EXPOSURE="1" STATE="1" EDITORDER="12 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" MTDNEWEXC="X" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="CREATE_XL_SHEET" 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"/>
|
||||
|
|
817
ZA2X/CLAS/ZCL_EXCEL_WRITER_HUGE_FILE.slnk
Normal file
817
ZA2X/CLAS/ZCL_EXCEL_WRITER_HUGE_FILE.slnk
Normal file
|
@ -0,0 +1,817 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<CLAS CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" VERSION="1" LANGU="D" DESCRIPT="Create huge XLSX file" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" CLSFINAL="X" CLSCCINCL="X" FIXPT="X" UNICODE="X" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " ZSAPLINK_PLUGIN_MAJOR_VERSION="0 " ZSAPLINK_PLUGIN_MINOR_VERSION="1 " ZSAPLINK_PLUGIN_BUILD_VERSION="0 " ZSAPLINK_PLUGIN_INFO1="ZSAPLINK_CLASS is part of the main ZSAPLINK project --> This plugin found there instead of ZSAPLINK_PLUGINS projects" ZSAPLINK_PLUGIN_INFO2="SAPLINK homepage: https://www.assembla.com/spaces/saplink/wiki" ZSAPLINK_PLUGIN_INFO3="Download from https://www.assembla.com/code/saplink/subversion/nodes" ZSAPLINK_PLUGIN_INFO4="and navigate to: trunk -> core -> ZSAPLINK -> CLAS -> ZSAPLINK_CLASS.slnk" REFCLSNAME="ZCL_EXCEL_WRITER_2007">
|
||||
<types CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" CMPNAME="TY_CELL" VERSION="1" LANGU="D" DESCRIPT="Cell data for callback from transformation" EXPOSURE="2" STATE="1" EDITORDER="1 " TYPTYPE="4" SRCROW1="10 " SRCCOLUMN1="4 " SRCROW2="16 " SRCCOLUMN2="19 " TYPESRC_LENG="0 " TYPESRC='BEGIN OF ty_cell,
|
||||
name TYPE c LENGTH 10, "AAA1234567"
|
||||
style TYPE i,
|
||||
type TYPE c LENGTH 9,
|
||||
formula TYPE string,
|
||||
value TYPE string,
|
||||
END OF ty_cell
|
||||
'/>
|
||||
<localImplementation>*"* use this source file for the definition and implementation of
|
||||
*"* local helper classes, interface definitions and type
|
||||
*"* declarations</localImplementation>
|
||||
<localTypes>*"* use this source file for any type of declarations (class
|
||||
*"* definitions, interfaces or type declarations) you need for
|
||||
*"* components in the private section</localTypes>
|
||||
<localMacros>*"* use this source file for any macro definitions you need
|
||||
*"* in the implementation part of the class</localMacros>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" CMPNAME="CELLS" VERSION="1" LANGU="D" DESCRIPT="Cell data for callback from transformation" EXPOSURE="2" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="4" SRCROW1="19 " SRCCOLUMN1="4 " SRCROW2="19 " SRCCOLUMN2="39 " TYPESRC_LENG="37 " TYPESRC="cells TYPE STANDARD TABLE OF ty_cell
|
||||
"/>
|
||||
<attribute CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" CMPNAME="WORKSHEET" VERSION="1" LANGU="D" DESCRIPT="Reference needed for GET_CELL" EXPOSURE="0" STATE="1" EDITORDER="1 " ATTDECLTYP="0" ATTEXPVIRT="0" TYPTYPE="3" TYPE="ZCL_EXCEL_WORKSHEET" SRCROW1="0 " SRCCOLUMN1="0 " SRCROW2="0 " SRCCOLUMN2="0 " TYPESRC_LENG="0 "/>
|
||||
<inheritance CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_WRITER_2007" VERSION="1" STATE="1">
|
||||
<redefinition CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_WRITER_2007" VERSION="1" MTDNAME="CREATE_XL_SHAREDSTRINGS" EXPOSURE="1"/>
|
||||
<redefinition CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" REFCLSNAME="ZCL_EXCEL_WRITER_2007" VERSION="1" MTDNAME="CREATE_XL_SHEET" EXPOSURE="1"/>
|
||||
</inheritance>
|
||||
<method CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="CREATE_XL_SHAREDSTRINGS" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<source>METHOD create_xl_sharedstrings.
|
||||
*
|
||||
* Redefinition using simple transformation instead of CL_IXML
|
||||
*
|
||||
** Constant node name
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ts_root,
|
||||
count TYPE string,
|
||||
unique_count TYPE string,
|
||||
END OF ts_root.
|
||||
|
||||
DATA:
|
||||
lv_last_allowed_char TYPE char1,
|
||||
lv_invalid TYPE string.
|
||||
|
||||
DATA:
|
||||
lo_iterator TYPE REF TO cl_object_collection_iterator,
|
||||
lo_worksheet TYPE REF TO zcl_excel_worksheet.
|
||||
|
||||
DATA:
|
||||
ls_root TYPE ts_root,
|
||||
lt_cell_data TYPE zexcel_t_cell_data_unsorted,
|
||||
ls_shared_string TYPE zexcel_s_shared_string,
|
||||
lv_sytabix TYPE sytabix.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<sheet_content> TYPE zexcel_s_cell_data.
|
||||
|
||||
**********************************************************************
|
||||
* STEP 0: Build Regex for invalid characters
|
||||
CASE cl_abap_char_utilities=>charsize.
|
||||
WHEN 1.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 255 ). " FF in non-Unicode
|
||||
WHEN 2.lv_last_allowed_char = cl_abap_conv_in_ce=>uccpi( 65533 )." FFFD in Unicode
|
||||
ENDCASE.
|
||||
CONCATENATE '[^\n\t\r -' lv_last_allowed_char ']' INTO lv_invalid.
|
||||
|
||||
**********************************************************************
|
||||
* STEP 1: Collect strings from each worksheet
|
||||
|
||||
lo_iterator = excel->get_worksheets_iterator( ).
|
||||
|
||||
WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true.
|
||||
lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ).
|
||||
APPEND LINES OF lo_worksheet->sheet_content TO lt_cell_data.
|
||||
ENDWHILE.
|
||||
|
||||
DELETE lt_cell_data WHERE cell_formula IS NOT INITIAL " delete formula content
|
||||
OR data_type NE 's'. " MvC: Only shared strings
|
||||
|
||||
ls_root-count = lines( lt_cell_data ).
|
||||
CONDENSE ls_root-count.
|
||||
|
||||
SORT lt_cell_data BY cell_value.
|
||||
DELETE ADJACENT DUPLICATES FROM lt_cell_data COMPARING cell_value.
|
||||
|
||||
ls_root-unique_count = lines( lt_cell_data ).
|
||||
CONDENSE ls_root-unique_count.
|
||||
|
||||
LOOP AT lt_cell_data ASSIGNING <sheet_content>.
|
||||
|
||||
lv_sytabix = sy-tabix - 1.
|
||||
MOVE lv_sytabix TO ls_shared_string-string_no.
|
||||
MOVE <sheet_content>-cell_value TO ls_shared_string-string_value.
|
||||
REPLACE ALL OCCURRENCES OF REGEX lv_invalid
|
||||
IN ls_shared_string-string_value WITH ` `.
|
||||
APPEND ls_shared_string TO shared_strings.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
**********************************************************************
|
||||
* STEP 2: Create XML
|
||||
|
||||
CALL TRANSFORMATION zexcel_tr_shared_strings
|
||||
SOURCE root = ls_root
|
||||
shared_strings = shared_strings
|
||||
OPTIONS xml_header = 'full'
|
||||
RESULT XML ep_content.
|
||||
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_WRITER_2007" CMPNAME="CREATE_XL_SHEET" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<source>METHOD create_xl_sheet.
|
||||
*
|
||||
* Build Sheet#.xml with Simple Transformation ZEXCEL_TR_SHEET
|
||||
*
|
||||
* This is an adaption of ZCL_EXCEL_WRITER_2007.
|
||||
* Not all features are supported, notably the autofilter settings,
|
||||
* conditional formatting and sheet protection.
|
||||
*
|
||||
* Bug reports to marcus.voncube AT deutschebahn.com
|
||||
*
|
||||
TYPES:
|
||||
lty_bool TYPE c LENGTH 5.
|
||||
|
||||
CONSTANTS:
|
||||
lc_false TYPE lty_bool VALUE 'false', "#EC NEEDED
|
||||
lc_true TYPE lty_bool VALUE 'true',
|
||||
lc_zero TYPE c LENGTH 1 VALUE '0',
|
||||
lc_one TYPE c LENGTH 1 VALUE '1',
|
||||
lc_default_col_width TYPE float VALUE '9.10'.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF lty_column,
|
||||
min TYPE i,
|
||||
max TYPE i,
|
||||
width TYPE float,
|
||||
hidden TYPE lty_bool,
|
||||
customwidth TYPE lty_bool,
|
||||
bestfit TYPE lty_bool,
|
||||
collapsed TYPE lty_bool,
|
||||
outlinelevel TYPE i,
|
||||
style TYPE i,
|
||||
END OF lty_column,
|
||||
|
||||
BEGIN OF lty_row,
|
||||
row TYPE i,
|
||||
index TYPE i,
|
||||
spans TYPE c LENGTH 11, "12345:12345"
|
||||
hidden TYPE lty_bool,
|
||||
customheight TYPE lty_bool,
|
||||
height TYPE float,
|
||||
collapsed TYPE lty_bool,
|
||||
outlinelevel TYPE i,
|
||||
customformat TYPE lty_bool,
|
||||
style TYPE i,
|
||||
END OF lty_row,
|
||||
|
||||
BEGIN OF lty_mergecell,
|
||||
ref TYPE c LENGTH 21, "AAA1234567:BBB1234567"
|
||||
END OF lty_mergecell,
|
||||
|
||||
BEGIN OF lty_hyperlink,
|
||||
ref TYPE string,
|
||||
location TYPE string,
|
||||
r_id TYPE string,
|
||||
END OF lty_hyperlink,
|
||||
|
||||
BEGIN OF lty_table,
|
||||
r_id TYPE string,
|
||||
END OF lty_table,
|
||||
|
||||
BEGIN OF lty_table_area,
|
||||
left TYPE i,
|
||||
right TYPE i,
|
||||
top TYPE i,
|
||||
bottom TYPE i,
|
||||
END OF lty_table_area,
|
||||
|
||||
BEGIN OF ty_missing_columns,
|
||||
first_column TYPE zexcel_cell_column,
|
||||
last_column TYPE zexcel_cell_column,
|
||||
END OF ty_missing_columns.
|
||||
|
||||
*
|
||||
* Root node for transformation
|
||||
*
|
||||
DATA:
|
||||
BEGIN OF l_worksheet,
|
||||
dimension TYPE string,
|
||||
tabcolor TYPE string,
|
||||
summarybelow TYPE c,
|
||||
summaryright TYPE c,
|
||||
fittopage TYPE c,
|
||||
showzeros TYPE c,
|
||||
tabselected TYPE c,
|
||||
zoomscale TYPE i,
|
||||
zoomscalenormal TYPE i,
|
||||
zoomscalepageview TYPE i,
|
||||
zoomscalesheetview TYPE i,
|
||||
workbookviewid TYPE c,
|
||||
showgridlines TYPE c,
|
||||
showrowcolheaders TYPE c,
|
||||
activepane TYPE string,
|
||||
state TYPE string,
|
||||
ysplit TYPE i,
|
||||
xsplit TYPE i,
|
||||
topleftcell TYPE c LENGTH 10,
|
||||
activecell TYPE c LENGTH 10,
|
||||
customheight TYPE lty_bool,
|
||||
defaultrowheight TYPE float,
|
||||
defaultcolwidth TYPE float,
|
||||
outlinelevelrow TYPE i,
|
||||
outlinelevelcol TYPE i,
|
||||
cols TYPE STANDARD TABLE OF lty_column,
|
||||
rows TYPE STANDARD TABLE OF lty_row,
|
||||
mergecells_count TYPE i,
|
||||
mergecells TYPE STANDARD TABLE OF lty_mergecell,
|
||||
hyperlinks_count TYPE i,
|
||||
hyperlinks TYPE STANDARD TABLE OF lty_hyperlink,
|
||||
BEGIN OF printoptions,
|
||||
gridlines TYPE lty_bool,
|
||||
horizontalcentered TYPE lty_bool,
|
||||
verticalcentered TYPE lty_bool,
|
||||
END OF printoptions,
|
||||
BEGIN OF pagemargins,
|
||||
left TYPE zexcel_dec_8_2,
|
||||
right TYPE zexcel_dec_8_2,
|
||||
top TYPE zexcel_dec_8_2,
|
||||
bottom TYPE zexcel_dec_8_2,
|
||||
header TYPE zexcel_dec_8_2,
|
||||
footer TYPE zexcel_dec_8_2,
|
||||
END OF pagemargins,
|
||||
BEGIN OF pagesetup,
|
||||
blackandwhite TYPE c,
|
||||
cellcomments TYPE string,
|
||||
copies TYPE i,
|
||||
draft TYPE c,
|
||||
errors TYPE string,
|
||||
firstpagenumber TYPE i,
|
||||
fittopage TYPE c,
|
||||
fittoheight TYPE i,
|
||||
fittowidth TYPE i,
|
||||
horizontaldpi TYPE i,
|
||||
orientation TYPE string,
|
||||
pageorder TYPE string,
|
||||
paperheight TYPE string,
|
||||
papersize TYPE i,
|
||||
paperwidth TYPE string,
|
||||
scale TYPE i,
|
||||
usefirstpagenumber TYPE c,
|
||||
useprinterdefaults TYPE c,
|
||||
verticaldpi TYPE i,
|
||||
END OF pagesetup,
|
||||
BEGIN OF headerfooter,
|
||||
differentoddeven TYPE c,
|
||||
oddheader TYPE string,
|
||||
oddfooter TYPE string,
|
||||
evenheader TYPE string,
|
||||
evenfooter TYPE string,
|
||||
END OF headerfooter,
|
||||
drawings TYPE string,
|
||||
tables_count TYPE i,
|
||||
tables TYPE STANDARD TABLE OF lty_table,
|
||||
END OF l_worksheet.
|
||||
|
||||
*
|
||||
* Local data
|
||||
*
|
||||
DATA:
|
||||
lo_iterator TYPE REF TO cl_object_collection_iterator,
|
||||
lo_table TYPE REF TO zcl_excel_table,
|
||||
row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi,
|
||||
default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime,
|
||||
default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi,
|
||||
lv_value TYPE string,
|
||||
lv_index TYPE i,
|
||||
lv_spans TYPE string,
|
||||
lt_range_merge TYPE string_table,
|
||||
lv_column TYPE zexcel_cell_column,
|
||||
lv_style_guid TYPE zexcel_cell_style,
|
||||
ls_last_row TYPE zexcel_s_cell_data,
|
||||
lv_freeze_cell_row TYPE zexcel_cell_row,
|
||||
lv_freeze_cell_column TYPE zexcel_cell_column,
|
||||
lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha,
|
||||
column_dimensions TYPE zexcel_t_worksheet_columndime,
|
||||
row_dimensions TYPE zexcel_t_worksheet_rowdimensio,
|
||||
lv_relation_id TYPE i VALUE 0,
|
||||
outline_level_row TYPE i VALUE 0,
|
||||
outline_level_col TYPE i VALUE 0,
|
||||
col_count TYPE int4,
|
||||
lt_table_areas TYPE SORTED TABLE OF lty_table_area
|
||||
WITH NON-UNIQUE KEY left right top bottom,
|
||||
ls_table_area LIKE LINE OF lt_table_areas,
|
||||
lts_sorted_columns TYPE SORTED TABLE OF zexcel_cell_column
|
||||
WITH UNIQUE KEY table_line,
|
||||
t_missing_columns TYPE STANDARD TABLE OF ty_missing_columns
|
||||
WITH NON-UNIQUE DEFAULT KEY,
|
||||
missing_column LIKE LINE OF t_missing_columns,
|
||||
lo_link TYPE REF TO zcl_excel_hyperlink,
|
||||
lo_drawings TYPE REF TO zcl_excel_drawings.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<sheet_content> TYPE zexcel_s_cell_data,
|
||||
<range_merge> LIKE LINE OF lt_range_merge,
|
||||
<column_dimension> TYPE zexcel_s_worksheet_columndime,
|
||||
<row_dimension> TYPE zexcel_s_worksheet_rowdimensio,
|
||||
<col> TYPE lty_column,
|
||||
<row> TYPE lty_row,
|
||||
<hyperlink> TYPE lty_hyperlink,
|
||||
<mergecell> TYPE lty_mergecell,
|
||||
<table> TYPE lty_table.
|
||||
|
||||
**********************************************************************
|
||||
* STEP 1: Fill root node
|
||||
*
|
||||
l_worksheet-tabcolor = io_worksheet->tabcolor-rgb.
|
||||
l_worksheet-summarybelow = io_worksheet->zif_excel_sheet_properties~summarybelow.
|
||||
l_worksheet-summaryright = io_worksheet->zif_excel_sheet_properties~summaryright.
|
||||
|
||||
IF io_worksheet->sheet_setup->fit_to_page IS NOT INITIAL.
|
||||
l_worksheet-fittopage = lc_one.
|
||||
ENDIF.
|
||||
|
||||
l_worksheet-dimension = io_worksheet->get_dimension_range( ).
|
||||
|
||||
IF io_worksheet->zif_excel_sheet_properties~show_zeros EQ abap_true.
|
||||
l_worksheet-showzeros = lc_one.
|
||||
ELSE.
|
||||
l_worksheet-showzeros = lc_zero.
|
||||
ENDIF.
|
||||
|
||||
IF iv_active = abap_true
|
||||
OR io_worksheet->zif_excel_sheet_properties~selected EQ abap_true.
|
||||
l_worksheet-tabselected = lc_one.
|
||||
ELSE.
|
||||
l_worksheet-tabselected = lc_zero.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->zif_excel_sheet_properties~zoomscale GT 400.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale = 400.
|
||||
ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale LT 10.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale = 10.
|
||||
ENDIF.
|
||||
l_worksheet-zoomscale = io_worksheet->zif_excel_sheet_properties~zoomscale.
|
||||
|
||||
IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal NE 0.
|
||||
IF io_worksheet->zif_excel_sheet_properties~zoomscale_normal GT 400.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 400.
|
||||
ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_normal LT 10.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale_normal = 10.
|
||||
ENDIF.
|
||||
l_worksheet-zoomscalenormal = io_worksheet->zif_excel_sheet_properties~zoomscale_normal.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview NE 0.
|
||||
IF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview GT 400.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 400.
|
||||
ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview LT 10.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview = 10.
|
||||
ENDIF.
|
||||
l_worksheet-zoomscalepageview = io_worksheet->zif_excel_sheet_properties~zoomscale_pagelayoutview.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview NE 0.
|
||||
IF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview GT 400.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 400.
|
||||
ELSEIF io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview LT 10.
|
||||
io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview = 10.
|
||||
ENDIF.
|
||||
l_worksheet-zoomscalesheetview = io_worksheet->zif_excel_sheet_properties~zoomscale_sheetlayoutview.
|
||||
ENDIF.
|
||||
|
||||
l_worksheet-workbookviewid = lc_zero.
|
||||
|
||||
IF io_worksheet->show_gridlines = abap_true.
|
||||
l_worksheet-showgridlines = lc_one.
|
||||
ELSE.
|
||||
l_worksheet-showgridlines = lc_zero.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->show_rowcolheaders = abap_true.
|
||||
l_worksheet-showrowcolheaders = lc_one.
|
||||
ELSE.
|
||||
l_worksheet-showrowcolheaders = lc_zero.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Freeze
|
||||
*
|
||||
io_worksheet->get_freeze_cell(
|
||||
IMPORTING ep_row = lv_freeze_cell_row
|
||||
ep_column = lv_freeze_cell_column ).
|
||||
|
||||
IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL.
|
||||
IF lv_freeze_cell_row > 1.
|
||||
l_worksheet-ysplit = lv_freeze_cell_row - 1.
|
||||
ENDIF.
|
||||
|
||||
IF lv_freeze_cell_column > 1.
|
||||
lv_value = lv_freeze_cell_column - 1.
|
||||
l_worksheet-xsplit = lv_freeze_cell_row - 1.
|
||||
ENDIF.
|
||||
|
||||
lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ).
|
||||
lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ).
|
||||
CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value.
|
||||
l_worksheet-topleftcell = lv_value.
|
||||
|
||||
l_worksheet-activepane = 'bottomRight'.
|
||||
l_worksheet-state = 'frozen'.
|
||||
ENDIF.
|
||||
|
||||
l_worksheet-activecell = io_worksheet->get_active_cell( ).
|
||||
|
||||
*
|
||||
* Row and column info
|
||||
*
|
||||
column_dimensions[] = io_worksheet->get_column_dimensions( ).
|
||||
row_dimensions[] = io_worksheet->get_row_dimensions( ).
|
||||
|
||||
IF NOT column_dimensions IS INITIAL.
|
||||
io_worksheet->calculate_column_widths( ).
|
||||
column_dimensions[] = io_worksheet->get_column_dimensions( ).
|
||||
ENDIF.
|
||||
|
||||
default_row_dimension = io_worksheet->get_default_row_dimension( ).
|
||||
IF default_row_dimension IS BOUND.
|
||||
IF default_row_dimension->get_row_height( ) >= 0.
|
||||
l_worksheet-customheight = lc_true.
|
||||
lv_value = default_row_dimension->get_row_height( ).
|
||||
ELSE.
|
||||
lv_value = '12.75'.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
lv_value = '12.75'.
|
||||
ENDIF.
|
||||
CONDENSE lv_value.
|
||||
l_worksheet-defaultrowheight = lv_value.
|
||||
|
||||
default_col_dimension = io_worksheet->get_default_column_dimension( ).
|
||||
IF default_col_dimension IS BOUND.
|
||||
IF default_col_dimension->get_width( ) >= 0.
|
||||
l_worksheet-defaultcolwidth = default_col_dimension->get_width( ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
LOOP AT row_dimensions ASSIGNING <row_dimension>.
|
||||
IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row.
|
||||
l_worksheet-outlinelevelrow = <row_dimension>-row_dimension->get_outline_level( ).
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT column_dimensions ASSIGNING <column_dimension>.
|
||||
IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col.
|
||||
l_worksheet-outlinelevelcol = <column_dimension>-column_dimension->get_outline_level( ).
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
*
|
||||
* Set column information (width, style, ...)
|
||||
*
|
||||
LOOP AT column_dimensions ASSIGNING <column_dimension>.
|
||||
APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING <col>.
|
||||
<col>-min = <col>-max = <column_dimension>-column_dimension->get_column_index( ).
|
||||
<col>-width = <column_dimension>-column_dimension->get_width( ).
|
||||
IF <col>-width < 0.
|
||||
<col>-width = lc_default_col_width.
|
||||
ENDIF.
|
||||
IF <column_dimension>-column_dimension->get_visible( ) = abap_false.
|
||||
<col>-hidden = lc_true.
|
||||
ENDIF.
|
||||
IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true.
|
||||
<col>-bestfit = lc_true.
|
||||
ENDIF.
|
||||
IF default_col_dimension IS BOUND.
|
||||
IF <column_dimension>-column_dimension->get_width( )
|
||||
<> default_col_dimension->get_width( ).
|
||||
<col>-customwidth = lc_true.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
<col>-customwidth = lc_true.
|
||||
ENDIF.
|
||||
IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true.
|
||||
<col>-collapsed = lc_true.
|
||||
ENDIF.
|
||||
<col>-outlinelevel = <column_dimension>-column_dimension->get_outline_level( ).
|
||||
lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ).
|
||||
<col>-style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1.
|
||||
ENDLOOP.
|
||||
|
||||
*
|
||||
* Missing columns
|
||||
*
|
||||
* First collect columns that were already handled before.
|
||||
* The rest has to be inserted now.
|
||||
*
|
||||
LOOP AT column_dimensions ASSIGNING <column_dimension>.
|
||||
lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-column ).
|
||||
INSERT lv_column INTO TABLE lts_sorted_columns.
|
||||
ENDLOOP.
|
||||
|
||||
*
|
||||
* Now find all columns that were missing so far
|
||||
*
|
||||
missing_column-first_column = 1.
|
||||
|
||||
LOOP AT lts_sorted_columns INTO lv_column.
|
||||
IF lv_column > missing_column-first_column.
|
||||
missing_column-last_column = lv_column - 1.
|
||||
APPEND missing_column TO t_missing_columns.
|
||||
ENDIF.
|
||||
missing_column-first_column = lv_column + 1.
|
||||
ENDLOOP.
|
||||
|
||||
missing_column-last_column = zcl_excel_common=>c_excel_sheet_max_col.
|
||||
APPEND missing_column TO t_missing_columns.
|
||||
|
||||
*
|
||||
* Now apply stylesetting and other defaults
|
||||
*
|
||||
LOOP AT t_missing_columns INTO missing_column.
|
||||
APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING <col>.
|
||||
<col>-min = missing_column-first_column.
|
||||
<col>-max = missing_column-last_column.
|
||||
IF default_col_dimension IS BOUND AND default_col_dimension->get_width( ) >= 0.
|
||||
<col>-width = default_col_dimension->get_width( ).
|
||||
ELSE.
|
||||
<col>-width = lc_default_col_width.
|
||||
ENDIF.
|
||||
lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ).
|
||||
<col>-style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1.
|
||||
ENDLOOP.
|
||||
|
||||
*
|
||||
* Build table to hold all table-areas attached to this sheet
|
||||
*
|
||||
lo_iterator = io_worksheet->get_tables_iterator( ).
|
||||
WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true.
|
||||
lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ).
|
||||
ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ).
|
||||
ls_table_area-right = lo_table->get_right_column_integer( ).
|
||||
ls_table_area-top = lo_table->settings-top_left_row.
|
||||
ls_table_area-bottom = lo_table->get_bottom_row_integer( ).
|
||||
INSERT ls_table_area INTO TABLE lt_table_areas.
|
||||
ENDWHILE.
|
||||
|
||||
*
|
||||
* Build sheet data node
|
||||
*
|
||||
* Spans is constant amongst all rows
|
||||
*
|
||||
col_count = io_worksheet->get_highest_column( ).
|
||||
lv_spans = col_count.
|
||||
CONCATENATE '1:' lv_spans INTO lv_spans.
|
||||
CONDENSE lv_spans.
|
||||
|
||||
LOOP AT io_worksheet->sheet_content ASSIGNING <sheet_content>.
|
||||
|
||||
IF ls_last_row-cell_row NE <sheet_content>-cell_row.
|
||||
*
|
||||
* Fill row information.
|
||||
* Cell data is filled in by callback GET_CELLS called from transformation
|
||||
*
|
||||
lv_index = sy-tabix.
|
||||
APPEND INITIAL LINE TO l_worksheet-rows ASSIGNING <row>.
|
||||
<row>-row = <sheet_content>-cell_row.
|
||||
<row>-index = lv_index.
|
||||
<row>-spans = lv_spans.
|
||||
|
||||
*
|
||||
* Row dimension attributes
|
||||
*
|
||||
row_dimension = io_worksheet->get_row_dimension( <sheet_content>-cell_row ).
|
||||
IF row_dimension->get_visible( ) = abap_false.
|
||||
<row>-hidden = lc_true.
|
||||
ENDIF.
|
||||
|
||||
IF row_dimension->get_row_height( ) >= 0.
|
||||
<row>-customheight = lc_one.
|
||||
<row>-height = row_dimension->get_row_height( ).
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Collapsed
|
||||
*
|
||||
IF row_dimension->get_collapsed( ) = abap_true.
|
||||
<row>-collapsed = lc_true.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Outline level
|
||||
*
|
||||
<row>-outlinelevel = row_dimension->get_outline_level( ).
|
||||
|
||||
*
|
||||
* Style
|
||||
*
|
||||
<row>-style = row_dimension->get_xf_index( ).
|
||||
IF <row>-style <> 0.
|
||||
<row>-customformat = lc_one.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ls_last_row = <sheet_content>.
|
||||
ENDLOOP.
|
||||
|
||||
*
|
||||
* Merged cells
|
||||
*
|
||||
lt_range_merge = io_worksheet->get_merge( ).
|
||||
IF lt_range_merge IS NOT INITIAL.
|
||||
l_worksheet-mergecells_count = lines( lt_range_merge ).
|
||||
|
||||
LOOP AT lt_range_merge ASSIGNING <range_merge>.
|
||||
APPEND INITIAL LINE TO l_worksheet-mergecells ASSIGNING <mergecell>.
|
||||
<mergecell>-ref = <range_merge>.
|
||||
io_worksheet->delete_merge( ).
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Hyperlinks
|
||||
*
|
||||
l_worksheet-hyperlinks_count = io_worksheet->get_hyperlinks_size( ).
|
||||
IF l_worksheet-hyperlinks_count > 0.
|
||||
lo_iterator = io_worksheet->get_hyperlinks_iterator( ).
|
||||
WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true.
|
||||
lo_link ?= lo_iterator->if_object_collection_iterator~get_next( ).
|
||||
|
||||
APPEND INITIAL LINE TO l_worksheet-hyperlinks ASSIGNING <hyperlink>.
|
||||
<hyperlink>-ref = lo_link->get_ref( ).
|
||||
IF lo_link->is_internal( ) = abap_true.
|
||||
<hyperlink>-location = lo_link->get_url( ).
|
||||
ELSE.
|
||||
ADD 1 TO lv_relation_id.
|
||||
lv_value = lv_relation_id.
|
||||
CONDENSE lv_value.
|
||||
CONCATENATE 'rId' lv_value INTO lv_value.
|
||||
<hyperlink>-r_id = lv_value.
|
||||
ENDIF.
|
||||
ENDWHILE.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Print options
|
||||
*
|
||||
IF io_worksheet->print_gridlines = abap_true.
|
||||
l_worksheet-printoptions-gridlines = lc_true.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->sheet_setup->horizontal_centered = abap_true.
|
||||
l_worksheet-printoptions-horizontalcentered = lc_true.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->sheet_setup->vertical_centered = abap_true.
|
||||
l_worksheet-printoptions-verticalcentered = lc_true.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Page margins
|
||||
*
|
||||
l_worksheet-pagemargins-left = io_worksheet->sheet_setup->margin_left.
|
||||
l_worksheet-pagemargins-right = io_worksheet->sheet_setup->margin_right.
|
||||
l_worksheet-pagemargins-top = io_worksheet->sheet_setup->margin_top.
|
||||
l_worksheet-pagemargins-bottom = io_worksheet->sheet_setup->margin_bottom.
|
||||
l_worksheet-pagemargins-header = io_worksheet->sheet_setup->margin_header.
|
||||
l_worksheet-pagemargins-footer = io_worksheet->sheet_setup->margin_footer.
|
||||
|
||||
*
|
||||
* Page setup
|
||||
*
|
||||
l_worksheet-pagesetup-cellcomments = io_worksheet->sheet_setup->cell_comments.
|
||||
l_worksheet-pagesetup-copies = io_worksheet->sheet_setup->copies.
|
||||
l_worksheet-pagesetup-firstpagenumber = io_worksheet->sheet_setup->first_page_number.
|
||||
l_worksheet-pagesetup-fittopage = io_worksheet->sheet_setup->fit_to_page.
|
||||
l_worksheet-pagesetup-fittoheight = io_worksheet->sheet_setup->fit_to_height.
|
||||
l_worksheet-pagesetup-fittowidth = io_worksheet->sheet_setup->fit_to_width.
|
||||
l_worksheet-pagesetup-horizontaldpi = io_worksheet->sheet_setup->horizontal_dpi.
|
||||
l_worksheet-pagesetup-orientation = io_worksheet->sheet_setup->orientation.
|
||||
l_worksheet-pagesetup-pageorder = io_worksheet->sheet_setup->page_order.
|
||||
l_worksheet-pagesetup-paperheight = io_worksheet->sheet_setup->paper_height.
|
||||
l_worksheet-pagesetup-papersize = io_worksheet->sheet_setup->paper_size.
|
||||
l_worksheet-pagesetup-paperwidth = io_worksheet->sheet_setup->paper_width.
|
||||
l_worksheet-pagesetup-scale = io_worksheet->sheet_setup->scale.
|
||||
l_worksheet-pagesetup-usefirstpagenumber = io_worksheet->sheet_setup->use_first_page_num.
|
||||
l_worksheet-pagesetup-verticaldpi = io_worksheet->sheet_setup->vertical_dpi.
|
||||
|
||||
IF io_worksheet->sheet_setup->black_and_white IS NOT INITIAL.
|
||||
l_worksheet-pagesetup-blackandwhite = lc_one.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->sheet_setup->draft IS NOT INITIAL.
|
||||
l_worksheet-pagesetup-draft = lc_one.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->sheet_setup->errors IS NOT INITIAL.
|
||||
l_worksheet-pagesetup-errors = io_worksheet->sheet_setup->errors.
|
||||
ENDIF.
|
||||
|
||||
IF io_worksheet->sheet_setup->use_printer_defaults IS NOT INITIAL.
|
||||
l_worksheet-pagesetup-useprinterdefaults = lc_one.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Header and footer
|
||||
*
|
||||
IF io_worksheet->sheet_setup->diff_oddeven_headerfooter = abap_true.
|
||||
l_worksheet-headerfooter-differentoddeven = lc_one.
|
||||
ENDIF.
|
||||
|
||||
io_worksheet->sheet_setup->get_header_footer_string(
|
||||
IMPORTING
|
||||
ep_odd_header = l_worksheet-headerfooter-oddheader
|
||||
ep_odd_footer = l_worksheet-headerfooter-oddfooter
|
||||
ep_even_header = l_worksheet-headerfooter-evenheader
|
||||
ep_even_footer = l_worksheet-headerfooter-evenfooter ).
|
||||
|
||||
*
|
||||
* Drawings
|
||||
*
|
||||
lo_drawings = io_worksheet->get_drawings( ).
|
||||
IF lo_drawings->is_empty( ) = abap_false.
|
||||
ADD 1 TO lv_relation_id.
|
||||
lv_value = lv_relation_id.
|
||||
CONDENSE lv_value.
|
||||
CONCATENATE 'rId' lv_value INTO l_worksheet-drawings.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Tables
|
||||
*
|
||||
l_worksheet-tables_count = io_worksheet->get_tables_size( ).
|
||||
IF l_worksheet-tables_count > 0.
|
||||
lo_iterator = io_worksheet->get_tables_iterator( ).
|
||||
WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true.
|
||||
lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ).
|
||||
APPEND INITIAL LINE TO l_worksheet-tables ASSIGNING <table>.
|
||||
ADD 1 TO lv_relation_id.
|
||||
lv_value = lv_relation_id.
|
||||
CONDENSE lv_value.
|
||||
CONCATENATE 'rId' lv_value INTO <table>-r_id.
|
||||
ENDWHILE.
|
||||
ENDIF.
|
||||
|
||||
**********************************************************************
|
||||
* STEP 2: Create XML
|
||||
|
||||
me->worksheet = io_worksheet. "Neccessary for callback GET_CELL
|
||||
|
||||
CALL TRANSFORMATION zexcel_tr_sheet
|
||||
SOURCE worksheet = l_worksheet
|
||||
cells = me->cells
|
||||
writer = me
|
||||
OPTIONS xml_header = 'full'
|
||||
RESULT XML ep_content.
|
||||
|
||||
ENDMETHOD. "CREATE_XL_SHEET</source>
|
||||
</method>
|
||||
<method CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" CMPNAME="GET_CELLS" VERSION="1" LANGU="D" DESCRIPT="Read the cell data for a single row, called from transform." EXPOSURE="2" STATE="1" EDITORDER="1 " DISPID="0 " MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
|
||||
<parameter CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" CMPNAME="GET_CELLS" SCONAME="I_ROW" VERSION="1" LANGU="D" DESCRIPT="Current row" CMPTYPE="1" MTDTYPE="0" EDITORDER="1 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I"/>
|
||||
<parameter CLSNAME="ZCL_EXCEL_WRITER_HUGE_FILE" CMPNAME="GET_CELLS" SCONAME="I_INDEX" VERSION="1" LANGU="D" DESCRIPT="index into sheet content" CMPTYPE="1" MTDTYPE="0" EDITORDER="2 " DISPID="0 " PARDECLTYP="0" PARPASSTYP="1" TYPTYPE="1" TYPE="I"/>
|
||||
<source>METHOD get_cells.
|
||||
*
|
||||
* Callback method from transformation ZEXCEL_TR_SHEET
|
||||
*
|
||||
* The method fills the data cells for each row.
|
||||
* This saves memory if there are many rows.
|
||||
*
|
||||
DATA:
|
||||
lv_cell_style TYPE zexcel_cell_style.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<cell> TYPE ty_cell,
|
||||
<content> TYPE zexcel_s_cell_data,
|
||||
<style> TYPE zexcel_s_styles_mapping.
|
||||
|
||||
CLEAR cells.
|
||||
|
||||
LOOP AT worksheet->sheet_content FROM i_index ASSIGNING <content>.
|
||||
IF <content>-cell_row <> i_row.
|
||||
*
|
||||
* End of row
|
||||
*
|
||||
EXIT.
|
||||
ENDIF.
|
||||
|
||||
*
|
||||
* Determine style index
|
||||
*
|
||||
IF lv_cell_style <> <content>-cell_style.
|
||||
lv_cell_style = <content>-cell_style.
|
||||
UNASSIGN <style>.
|
||||
IF lv_cell_style IS NOT INITIAL.
|
||||
READ TABLE styles_mapping ASSIGNING <style> WITH KEY guid = lv_cell_style.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
*
|
||||
* Add a new cell
|
||||
*
|
||||
APPEND INITIAL LINE TO cells ASSIGNING <cell>.
|
||||
<cell>-name = <content>-cell_coords.
|
||||
<cell>-formula = <content>-cell_formula.
|
||||
<cell>-type = <content>-data_type.
|
||||
IF <cell>-type = 's'.
|
||||
<cell>-value = me->get_shared_string_index( <content>-cell_value ).
|
||||
ELSE.
|
||||
<cell>-value = <content>-cell_value.
|
||||
ENDIF.
|
||||
IF <style> IS ASSIGNED.
|
||||
<cell>-style = <style>-style.
|
||||
ELSE.
|
||||
<cell>-style = -1.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.</source>
|
||||
</method>
|
||||
</CLAS>
|
24
ZA2X/XSLT/ZEXCEL_TR_SHARED_STRINGS.slnk
Normal file
24
ZA2X/XSLT/ZEXCEL_TR_SHARED_STRINGS.slnk
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<XSLT XSLTDESC="ZEXCEL_TR_SHARED_STRINGS" DEVCLASS="$TMP" LANGU="E" DESCRIPT="ZEXECL Simple transformation for SharedStrings.xml">
|
||||
<source><?sap.transform simple?>
|
||||
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
|
||||
|
||||
<tt:root name="ROOT"/>
|
||||
<tt:root name="SHARED_STRINGS"/>
|
||||
|
||||
<tt:template>
|
||||
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
|
||||
<tt:attribute name="count" value-ref="ROOT.COUNT"/>
|
||||
<tt:attribute name="uniqueCount" value-ref="ROOT.UNIQUE_COUNT"/>
|
||||
<tt:loop ref="SHARED_STRINGS">
|
||||
<si>
|
||||
<t>
|
||||
<tt:value ref="STRING_VALUE"/>
|
||||
</t>
|
||||
</si>
|
||||
</tt:loop>
|
||||
</sst>
|
||||
</tt:template>
|
||||
|
||||
</tt:transform></source>
|
||||
</XSLT>
|
309
ZA2X/XSLT/ZEXCEL_TR_SHEET.slnk
Normal file
309
ZA2X/XSLT/ZEXCEL_TR_SHEET.slnk
Normal file
|
@ -0,0 +1,309 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<XSLT XSLTDESC="ZEXCEL_TR_SHEET" DEVCLASS="$TMP" LANGU="E" DESCRIPT="ZEXCEL Simple transformation for Sheet#.xml">
|
||||
<source><?sap.transform simple?>
|
||||
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates"
|
||||
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
|
||||
|
||||
<tt:root name="WORKSHEET"/>
|
||||
<tt:root name="CELLS"/>
|
||||
<tt:root name="WRITER"/>
|
||||
<tt:variable name="owriter" ref-type="ZCL_EXCEL_WRITER_HUGE_FILE"/>
|
||||
|
||||
<tt:template>
|
||||
<tt:assign ref="WRITER" to-var="owriter"/>
|
||||
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
|
||||
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac"
|
||||
mc:Ignorable="x14ac">
|
||||
<tt:namespace name="r" />
|
||||
<tt:namespace name="mc" />
|
||||
<tt:namespace name="x14ac" />
|
||||
<sheetPr>
|
||||
<tt:cond check="not-initial(WORKSHEET.TABCOLOR)">
|
||||
<tabColor>
|
||||
<tt:attribute name="rgb" value-ref="WORKSHEET.TABCOLOR" />
|
||||
</tabColor>
|
||||
</tt:cond>
|
||||
<outlinePr>
|
||||
<tt:attribute name="summaryRight" value-ref="WORKSHEET.SUMMARYRIGHT" />
|
||||
<tt:attribute name="summaryBelow" value-ref="WORKSHEET.SUMMARYBELOW" />
|
||||
</outlinePr>
|
||||
</sheetPr>
|
||||
<tt:cond check="not-initial(WORKSHEET.FITTOPAGE)">
|
||||
<pageSetupPr>
|
||||
<tt:attribute name="fitToPage" value-ref="WORKSHEET.FITTOPAGE" />
|
||||
</pageSetupPr>
|
||||
</tt:cond>
|
||||
<dimension>
|
||||
<tt:attribute name="ref" value-ref="WORKSHEET.DIMENSION" />
|
||||
</dimension>
|
||||
<sheetViews>
|
||||
<sheetView>
|
||||
<tt:attribute name="showZeros" value-ref="WORKSHEET.SHOWZEROS" />
|
||||
<tt:attribute name="tabSelected" value-ref="WORKSHEET.TABSELECTED" />
|
||||
<tt:attribute name="zoomScale" value-ref="WORKSHEET.ZOOMSCALE" />
|
||||
<tt:cond check="WORKSHEET.ZOOMSCALENORMAL != 0">
|
||||
<tt:attribute name="zoomScaleNormal" value-ref="WORKSHEET.ZOOMSCALENORMAL" />
|
||||
</tt:cond>
|
||||
<tt:cond check="WORKSHEET.ZOOMSCALEPAGEVIEW != 0">
|
||||
<tt:attribute name="zoomScalePageLayoutView" value-ref="WORKSHEET.ZOOMSCALEPAGEVIEW" />
|
||||
</tt:cond>
|
||||
<tt:attribute name="zoomScaleSheetLayoutView" value-ref="WORKSHEET.ZOOMSCALESHEETVIEW" />
|
||||
<tt:attribute name="workbookViewId" value-ref="WORKSHEET.WORKBOOKVIEWID" />
|
||||
<tt:attribute name="showGridLines" value-ref="WORKSHEET.SHOWGRIDLINES" />
|
||||
<tt:attribute name="showRowColHeaders" value-ref="WORKSHEET.SHOWROWCOLHEADERS" />
|
||||
<tt:cond check="WORKSHEET.YSPLIT != 0 or WORKSHEET.XSPLIT != 0">
|
||||
<pane activePane="bottomRight" state="frozen">
|
||||
<tt:cond check="WORKSHEET.YSPLIT != 0">
|
||||
<tt:attribute name="ySplit" value-ref="WORKSHEET.YSPLIT" />
|
||||
</tt:cond>
|
||||
<tt:cond check="WORKSHEET.XSPLIT != 0">
|
||||
<tt:attribute name="xSplit" value-ref="WORKSHEET.XSPLIT" />
|
||||
</tt:cond>
|
||||
<tt:attribute name="topLeftCell" value-ref="WORKSHEET.TOPLEFTCELL" />
|
||||
</pane>
|
||||
</tt:cond>
|
||||
<selection>
|
||||
<tt:attribute name="activeCell" value-ref="WORKSHEET.ACTIVECELL" />
|
||||
<tt:attribute name="sqref" value-ref="WORKSHEET.ACTIVECELL" />
|
||||
</selection>
|
||||
</sheetView>
|
||||
</sheetViews>
|
||||
<sheetFormatPr>
|
||||
<tt:attribute name="defaultRowHeight" value-ref="WORKSHEET.DEFAULTROWHEIGHT" />
|
||||
<tt:cond check="WORKSHEET.DEFAULTCOLWIDTH != 0">
|
||||
<tt:attribute name="defaultColWidth" value-ref="WORKSHEET.DEFAULTCOLWIDTH" />
|
||||
</tt:cond>
|
||||
<tt:attribute name="x14ac:outlineLevelRow" value-ref="WORKSHEET.OUTLINELEVELROW" />
|
||||
<tt:attribute name="x14ac:outlineLevelCol" value-ref="WORKSHEET.OUTLINELEVELCOL" />
|
||||
</sheetFormatPr>
|
||||
<cols>
|
||||
<tt:loop ref="WORKSHEET.COLS">
|
||||
<col>
|
||||
<tt:attribute name="min" value-ref="MIN" />
|
||||
<tt:attribute name="max" value-ref="MAX" />
|
||||
<tt:attribute name="width" value-ref="WIDTH" />
|
||||
<tt:cond check="not-initial(HIDDEN)">
|
||||
<tt:attribute name="hidden" value-ref="HIDDEN" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(CUSTOMWIDTH)">
|
||||
<tt:attribute name="customWidth" value-ref="CUSTOMWIDTH" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(BESTFIT)">
|
||||
<tt:attribute name="bestFit" value-ref="BESTFIT" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(COLLAPSED)">
|
||||
<tt:attribute name="collapsed" value-ref="COLLAPSED" />
|
||||
</tt:cond>
|
||||
<tt:cond check="OUTLINELEVEL != 0">
|
||||
<tt:attribute name="outlineLevel" value-ref="OUTLINELEVEL" />
|
||||
</tt:cond>
|
||||
<tt:cond check="STYLE >= 0">
|
||||
<tt:attribute name="style" value-ref="STYLE" />
|
||||
</tt:cond>
|
||||
</col>
|
||||
</tt:loop>
|
||||
</cols>
|
||||
<sheetData>
|
||||
<tt:loop ref="WORKSHEET.ROWS">
|
||||
<row>
|
||||
<tt:attribute name="r" value-ref="ROW" />
|
||||
<tt:attribute name="spans" value-ref="SPANS" />
|
||||
<tt:cond check="not-initial(HIDDEN)">
|
||||
<tt:attribute name="hidden" value-ref="HIDDEN" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(CUSTOMHEIGHT)">
|
||||
<tt:attribute name="customHeight" value-ref="CUSTOMHIGHT" />
|
||||
<tt:attribute name="ht" value-ref="HIGHT" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(COLLAPSED)">
|
||||
<tt:attribute name="collapsed" value-ref="COLLAPSED" />
|
||||
</tt:cond>
|
||||
<tt:cond check="OUTLINELEVEL != 0">
|
||||
<tt:attribute name="outlineLevel" value-ref="OUTLINELEVEL" />
|
||||
</tt:cond>
|
||||
<tt:cond check="STYLE != 0">
|
||||
<tt:attribute name="customFormat" value-ref="CUSTOMFORMAT" />
|
||||
<tt:attribute name="s" value-ref="STYLE" />
|
||||
</tt:cond>
|
||||
<!-- Aufruf get_cells -->
|
||||
<tt:call-method s-name="GET_CELLS" var="owriter">
|
||||
<tt:with-parameter name="I_ROW" ref="ROW" />
|
||||
<tt:with-parameter name="I_INDEX" ref="INDEX" />
|
||||
</tt:call-method>
|
||||
<tt:loop ref=".CELLS">
|
||||
<c>
|
||||
<tt:attribute name="r" value-ref="NAME" />
|
||||
<tt:cond check="STYLE >= 0">
|
||||
<tt:attribute name="s" value-ref="STYLE" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(FORMULA)">
|
||||
<tt:attribute name="f" value-ref="FORMULA" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(VALUE) and initial(FORMULA)">
|
||||
<tt:attribute name="t" value-ref="TYPE" />
|
||||
<tt:cond check="TYPE = 'inlineStr'">
|
||||
<is>
|
||||
<t>
|
||||
<tt:value ref="VALUE" />
|
||||
</t>
|
||||
</is>
|
||||
</tt:cond>
|
||||
<tt:cond check="TYPE != 'inlineStr'">
|
||||
<v>
|
||||
<tt:value ref="VALUE" />
|
||||
</v>
|
||||
</tt:cond>
|
||||
</tt:cond>
|
||||
</c>
|
||||
</tt:loop>
|
||||
</row>
|
||||
</tt:loop>
|
||||
</sheetData>
|
||||
<tt:cond check="WORKSHEET.MERGECELLS_COUNT != 0">
|
||||
<mergeCells>
|
||||
<tt:attribute name="count" value-ref="WORKSHEET.MERGECELLS_COUNT" />
|
||||
<tt:loop ref="WORKSHEET.MERGECELLS">
|
||||
<mergeCell>
|
||||
<tt:attribute name="ref" value-ref="REF" />
|
||||
</mergeCell>
|
||||
</tt:loop>
|
||||
</mergeCells>
|
||||
</tt:cond>
|
||||
<tt:cond check="WORKSHEET.HYPERLINKS_COUNT != 0">
|
||||
<hyperlinks>
|
||||
<tt:loop ref="WORKSHEET.HYPERLINKS">
|
||||
<hyperlink>
|
||||
<tt:attribute name="ref" value-ref="REF" />
|
||||
<tt:cond check="not-initial(LOCATION)">
|
||||
<tt:attribute name="location" value-ref="LOCATION" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(R_ID)">
|
||||
<tt:attribute name="r:id" value-ref="R_ID" />
|
||||
</tt:cond>
|
||||
</hyperlink>
|
||||
</tt:loop>
|
||||
</hyperlinks>
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(WORKSHEET.PRINTOPTIONS)">
|
||||
<printOptions>
|
||||
<tt:ref name="WORKSHEET.PRINTOPTIONS">
|
||||
<tt:cond check="not-initial(GRIDLINES)">
|
||||
<tt:attribute name="gridLines" value-ref="GRIDLINES" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(HORIZONTALCENTERED)">
|
||||
<tt:attribute name="horizontalCentered" value-ref="HORIZONTALCENTERED" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(VERTICALCENTERED)">
|
||||
<tt:attribute name="verticalCentered" value-ref="VERTICALCENTERED" />
|
||||
</tt:cond>
|
||||
</tt:ref>
|
||||
</printOptions>
|
||||
</tt:cond>
|
||||
<pageMargins>
|
||||
<tt:ref name="WORKSHEET.PAGEMARGINS">
|
||||
<tt:attribute name="left" value-ref="LEFT" />
|
||||
<tt:attribute name="right" value-ref="RIGHT" />
|
||||
<tt:attribute name="top" value-ref="TOP" />
|
||||
<tt:attribute name="bottom" value-ref="BOTTOM" />
|
||||
<tt:attribute name="header" value-ref="HEADER" />
|
||||
<tt:attribute name="footer" value-ref="FOOTER" />
|
||||
</tt:ref>
|
||||
</pageMargins>
|
||||
<pageSetup>
|
||||
<tt:ref name="WORKSHEET.PAGESETUP">
|
||||
<tt:cond check="not-initial(BLACKANDWHITE)">
|
||||
<tt:attribute name="blackAndWhite" value-ref="BLACKANDWHITE" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(CELLCOMMENTS)">
|
||||
<tt:attribute name="cellComments" value-ref="CELLCOMMENTS" />
|
||||
</tt:cond>
|
||||
<tt:cond check="COPIES != 0">
|
||||
<tt:attribute name="copies" value-ref="COPIES" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(DRAFT)">
|
||||
<tt:attribute name="draft" value-ref="DRAFT" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(ERRORS)">
|
||||
<tt:attribute name="errors" value-ref="ERRORS" />
|
||||
</tt:cond>
|
||||
<tt:cond check="FIRSTPAGENUMBER != 0">
|
||||
<tt:attribute name="firstPageNumber" value-ref="FIRSTPAGENUMBER" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(FITTOPAGE)">
|
||||
<tt:attribute name="fitToHeight" value-ref="FITTOHIGHT" />
|
||||
<tt:attribute name="fitToWidth" value-ref="FITTOWIDTH" />
|
||||
</tt:cond>
|
||||
<tt:cond check="HORIZONTALDPI != 0">
|
||||
<tt:attribute name="horizontalDpi" value-ref="HORIZONTALDPI" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(ORIENTATION)">
|
||||
<tt:attribute name="orientation" value-ref="ORIENTATION" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(PAGEORDER)">
|
||||
<tt:attribute name="pageOrder" value-ref="PAGEORDER" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(PAPERHEIGHT)">
|
||||
<tt:attribute name="paperHeight" value-ref="PAPERHEIGHT" />
|
||||
</tt:cond>
|
||||
<tt:cond check="PAPERSIZE != 0">
|
||||
<tt:attribute name="paperSize" value-ref="PAPERSIZE" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(PAPERWIDTH)">
|
||||
<tt:attribute name="paperWidth" value-ref="PAPERWIDTH" />
|
||||
</tt:cond>
|
||||
<tt:cond check="SCALE != 0">
|
||||
<tt:attribute name="scale" value-ref="SCALE" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(USEFIRSTPAGENUMBER)">
|
||||
<tt:attribute name="useFirstPageNumber" value-ref="USEFIRSTPAGENUMBER" />
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(USEPRINTERDEFAULTS)">
|
||||
<tt:attribute name="usePrinterDefaults" value-ref="USEPRINTERDEFAULTS" />
|
||||
</tt:cond>
|
||||
<tt:cond check="VERTICALDPI != 0">
|
||||
<tt:attribute name="verticalDpi" value-ref="VERTICALDPI" />
|
||||
</tt:cond>
|
||||
</tt:ref>
|
||||
</pageSetup>
|
||||
<tt:cond check="not-initial(WORKSHEET.HEADERFOOTER)">
|
||||
<headerFooter>
|
||||
<tt:ref name="WORKSHEET.HEADERFOOTER">
|
||||
<tt:cond check="not-initial(WORKSHEET.HEADERFOOTER)">
|
||||
<tt:attribute name="differentOddEven" value-ref="DIFFERENTODDEVEN" />
|
||||
</tt:cond>
|
||||
<oddHeader>
|
||||
<tt:value ref="ODDHEADER" />
|
||||
</oddHeader>
|
||||
<oddFooter>
|
||||
<tt:value ref="ODDFOOTER" />
|
||||
</oddFooter>
|
||||
<evenHeader>
|
||||
<tt:value ref="EVENHEADER" />
|
||||
</evenHeader>
|
||||
<evenFooter>
|
||||
<tt:value ref="EVENFOOTER" />
|
||||
</evenFooter>
|
||||
</tt:ref>
|
||||
</headerFooter>
|
||||
</tt:cond>
|
||||
<tt:cond check="not-initial(WORKSHEET.DRAWINGS)">
|
||||
<drawing>
|
||||
<tt:attribute name="r:id" value-ref="WORKSHEET.DRAWINGS" />
|
||||
</drawing>
|
||||
</tt:cond>
|
||||
<tt:cond check="WORKSHEET.TABLES_COUNT != 0">
|
||||
<mergeCells>
|
||||
<tt:attribute name="count" value-ref="WORKSHEET.TABLES_COUNT" />
|
||||
<tt:loop ref="WORKSHEET.TABLES">
|
||||
<tablePart>
|
||||
<tt:attribute name="r:id" value-ref="R_ID" />
|
||||
</tablePart>
|
||||
</tt:loop>
|
||||
</mergeCells>
|
||||
</tt:cond>
|
||||
</worksheet>
|
||||
</tt:template>
|
||||
</tt:transform></source>
|
||||
</XSLT>
|
Loading…
Reference in New Issue
Block a user