From 8938dba50f604a0cb961b033a9c9be8880acee5e Mon Sep 17 00:00:00 2001 From: AtomKrieg Date: Sun, 29 Sep 2019 18:40:48 +0300 Subject: [PATCH] remove boilerplate: create/render ixml_document (#605) also clear "dead code" --- src/zcl_excel_writer_2007.clas.abap | 534 ++++++---------------------- src/zcl_excel_writer_2007.clas.xml | 18 - 2 files changed, 101 insertions(+), 451 deletions(-) diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index dc8460d..60e7d39 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -7,10 +7,10 @@ public section. *"* public components of class ZCL_EXCEL_WRITER_2007 *"* do not include other source files here!!! interfaces ZIF_EXCEL_WRITER . + METHODS constructor. + protected section. - data MV_SHEET_DATA_XSTRING type XSTRING . - data MV_SHEET_DATA_XSTRING_DUMMY type XSTRING . *"* protected components of class ZCL_EXCEL_WRITER_2007 *"* do not include other source files here!!! constants C_CONTENT_TYPES type STRING value '[Content_Types].xml'. "#EC NOTEXT @@ -34,6 +34,7 @@ protected section. constants C_XL_COMMENTS type STRING value 'xl/comments#.xml'. "#EC NOTEXT constants CL_XL_DRAWING_FOR_COMMENTS type STRING value 'xl/drawings/vmlDrawing#.vml'. "#EC NOTEXT constants C_XL_DRAWINGS_VML_RELS type STRING value 'xl/drawings/_rels/vmlDrawing#.vml.rels'. "#EC NOTEXT + data ixml type ref to if_ixml. methods CREATE_XL_SHEET_SHEET_DATA importing @@ -154,11 +155,6 @@ protected section. !IP_CELL_VALUE type ZEXCEL_CELL_VALUE returning value(EP_INDEX) type INT4 . - methods RENDER_IXML_ELEMENT_NO_HEADER - importing - !IV_IXML_ELEMENT type ref to IF_IXML_ELEMENT - returning - value(RV_XSTRING) type XSTRING . methods CREATE_XL_DRAWINGS_VML returning value(EP_CONTENT) type XSTRING . @@ -188,6 +184,14 @@ protected section. !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET returning value(EP_CONTENT) type XSTRING . + methods create_xml_document + returning + value(ro_document) type ref to if_ixml_document. + methods render_xml_document + importing + io_document type ref to if_ixml_document + returning + value(ep_content) type xstring. private section. *"* private components of class ZCL_EXCEL_WRITER_2007 @@ -207,6 +211,10 @@ ENDCLASS. CLASS ZCL_EXCEL_WRITER_2007 IMPLEMENTATION. + METHOD CONSTRUCTOR. + me->ixml = cl_ixml=>create( ). + ENDMETHOD. + METHOD add_further_data_to_zip. * Can be used by child classes like xlsm-writer to write additional data to zip archive @@ -243,6 +251,8 @@ METHOD create. lv_drawing_index TYPE i, lv_comment_index TYPE i. " (+) Issue #180 +********************************************************************** + ********************************************************************** * Start of insertion # issue 139 - Dateretention of cellstyles me->excel->add_static_styles( ). @@ -518,14 +528,9 @@ method CREATE_CONTENT_TYPES. lc_xml_node_drawings_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawing+xml', lc_xml_node_chart_ct TYPE string VALUE 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_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_worksheet TYPE REF TO zcl_excel_worksheet, lo_iterator TYPE REF TO cl_object_collection_iterator, lo_nested_iterator TYPE REF TO cl_object_collection_iterator, @@ -541,15 +546,7 @@ method CREATE_CONTENT_TYPES. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'UTF-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node types @@ -779,12 +776,8 @@ method CREATE_CONTENT_TYPES. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. + ep_content = render_xml_document( lo_document ). +endmethod. method CREATE_DOCPROPS_APP. @@ -814,18 +807,13 @@ method CREATE_DOCPROPS_APP. lc_xml_attr_size TYPE string VALUE 'size', lc_xml_attr_basetype TYPE string VALUE 'baseType'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_vector TYPE REF TO if_ixml_element, lo_sub_element_variant TYPE REF TO if_ixml_element, lo_sub_element_lpstr TYPE REF TO if_ixml_element, lo_sub_element_i4 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. @@ -833,15 +821,7 @@ method CREATE_DOCPROPS_APP. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node properties @@ -1001,12 +981,8 @@ method CREATE_DOCPROPS_APP. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. + ep_content = render_xml_document( lo_document ). +endmethod. method CREATE_DOCPROPS_CORE. @@ -1034,14 +1010,9 @@ method CREATE_DOCPROPS_CORE. lc_xml_node_dcmitype_ns TYPE string VALUE 'http://purl.org/dc/dcmitype/', lc_xml_node_xsi_ns TYPE string VALUE 'http://www.w3.org/2001/XMLSchema-instance'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_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_element TYPE REF TO if_ixml_element. DATA: lv_value TYPE string, lv_date TYPE sydatum, @@ -1049,15 +1020,7 @@ method CREATE_DOCPROPS_CORE. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node coreProperties @@ -1134,12 +1097,8 @@ method CREATE_DOCPROPS_CORE. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. + ep_content = render_xml_document( lo_document ). +endmethod. METHOD create_dxf_style. @@ -1297,26 +1256,13 @@ method CREATE_RELATIONSHIPS. lc_xml_node_rId2_tg TYPE string VALUE 'docProps/core.xml', lc_xml_node_rId3_tg TYPE string VALUE 'docProps/app.xml'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_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_element TYPE REF TO if_ixml_element. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node relationships @@ -1362,12 +1308,8 @@ method CREATE_RELATIONSHIPS. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - endmethod. + ep_content = render_xml_document( lo_document ). +endmethod. METHOD create_xl_charts. @@ -1476,13 +1418,9 @@ METHOD create_xl_charts. lc_xml_node_pagesetup TYPE string VALUE 'c:pageSetup'. - 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_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. + DATA: lo_document TYPE REF TO if_ixml_document, + lo_element_root TYPE REF TO if_ixml_element. + DATA lo_element TYPE REF TO if_ixml_element. DATA lo_element2 TYPE REF TO if_ixml_element. @@ -1495,15 +1433,7 @@ METHOD create_xl_charts. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). *********************************************************************** * STEP 3: Create main node relationships @@ -2299,11 +2229,7 @@ METHOD create_xl_charts. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -2335,8 +2261,7 @@ METHOD create_xl_comments. lc_xml_attr_xmlspacing TYPE string VALUE 'xml:space'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, lo_element_authors TYPE REF TO if_ixml_element, lo_element_author TYPE REF TO if_ixml_element, @@ -2352,10 +2277,6 @@ METHOD create_xl_comments. * lo_element_charset TYPE REF TO if_ixml_element, lo_element_family TYPE REF TO if_ixml_element, lo_element_t 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_comments TYPE REF TO zcl_excel_comments, lo_comment TYPE REF TO zcl_excel_comment. @@ -2381,15 +2302,7 @@ METHOD create_xl_comments. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). *********************************************************************** * STEP 3: Create main node relationships @@ -2467,10 +2380,7 @@ METHOD create_xl_comments. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -2483,14 +2393,9 @@ method CREATE_XL_DRAWINGS. lc_xml_node_ns_xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', lc_xml_node_ns_a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, lo_element_cellanchor 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_drawings TYPE REF TO zcl_excel_drawings, lo_drawing TYPE REF TO zcl_excel_drawing. @@ -2500,15 +2405,7 @@ method CREATE_XL_DRAWINGS. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). *********************************************************************** * STEP 3: Create main node relationships @@ -2542,12 +2439,9 @@ method CREATE_XL_DRAWINGS. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). - endmethod. +endmethod. METHOD create_xl_drawings_hdft_rels. @@ -2566,15 +2460,9 @@ METHOD create_xl_drawings_hdft_rels. DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, lo_drawing TYPE REF TO zcl_excel_drawing, - 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_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, - lv_value TYPE string, lv_relation_id TYPE i, lt_temp TYPE strtable, @@ -2587,15 +2475,7 @@ METHOD create_xl_drawings_hdft_rels. * BODY ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node relationships @@ -2641,10 +2521,7 @@ METHOD create_xl_drawings_hdft_rels. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. "create_xl_drawings_hdft_rels @@ -2663,14 +2540,9 @@ method CREATE_XL_DRAWINGS_RELS. lc_xml_node_rid_image_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', lc_xml_node_rid_chart_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_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_drawings TYPE REF TO zcl_excel_drawings, lo_drawing TYPE REF TO zcl_excel_drawing. @@ -2680,15 +2552,7 @@ method CREATE_XL_DRAWINGS_RELS. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node relationships @@ -2738,12 +2602,9 @@ method CREATE_XL_DRAWINGS_RELS. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). - endmethod. +endmethod. METHOD create_xl_drawings_vml. @@ -2803,15 +2664,9 @@ METHOD create_xl_drawings_vml_rels. DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, lo_drawing TYPE REF TO zcl_excel_drawing, - 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_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, - lv_value TYPE string, lv_relation_id TYPE i. @@ -2819,15 +2674,7 @@ METHOD create_xl_drawings_vml_rels. * BODY ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node relationships @@ -2869,10 +2716,7 @@ METHOD create_xl_drawings_vml_rels. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -3238,8 +3082,7 @@ METHOD create_xl_drawing_for_comments. lc_xml_attr_val_note TYPE string VALUE 'Note'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, "shapelayout lo_element_shapelayout TYPE REF TO if_ixml_element, @@ -3261,10 +3104,6 @@ METHOD create_xl_drawing_for_comments. lo_element_autofill TYPE REF TO if_ixml_element, lo_element_row TYPE REF TO if_ixml_element, lo_element_column 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_comments TYPE REF TO zcl_excel_comments, lo_comment TYPE REF TO zcl_excel_comment, @@ -3297,8 +3136,7 @@ METHOD create_xl_drawing_for_comments. ********************************************************************** * STEP 1: Create XML document - lo_ixml = cl_ixml=>create( ). - lo_document = lo_ixml->create_document( ). + lo_document = me->ixml->create_document( ). *********************************************************************** * STEP 2: Create main node relationships @@ -3442,10 +3280,7 @@ METHOD create_xl_drawing_for_comments. ********************************************************************** * STEP 6: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -3560,14 +3395,9 @@ method CREATE_XL_RELATIONSHIPS. lc_xml_node_rid_styles_tg TYPE string VALUE 'styles.xml', lc_xml_node_rid_theme_tg TYPE string VALUE 'theme/theme1.xml'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_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_element TYPE REF TO if_ixml_element. DATA: lv_xml_node_ridx_tg TYPE string, lv_xml_node_ridx_id TYPE string, @@ -3576,15 +3406,7 @@ method CREATE_XL_RELATIONSHIPS. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node relationships @@ -3677,12 +3499,9 @@ method CREATE_XL_RELATIONSHIPS. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). - endmethod. +endmethod. METHOD create_xl_sharedstrings. @@ -3698,15 +3517,10 @@ METHOD create_xl_sharedstrings. " Node namespace 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, + DATA: 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. @@ -3761,15 +3575,7 @@ METHOD create_xl_sharedstrings. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node @@ -3800,10 +3606,7 @@ METHOD create_xl_sharedstrings. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -3990,17 +3793,12 @@ METHOD create_xl_sheet. lc_xml_node_comp_pref TYPE string VALUE 'x14ac', lc_xml_node_ig_ns TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_element_2 TYPE REF TO if_ixml_element, lo_element_3 TYPE REF TO if_ixml_element, lo_element_4 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_style_cond TYPE REF TO zcl_excel_style_cond, lo_data_validation TYPE REF TO zcl_excel_data_validation, @@ -4059,15 +3857,7 @@ METHOD create_xl_sheet. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). *********************************************************************** * STEP 3: Create main node relationships @@ -5503,10 +5293,7 @@ METHOD create_xl_sheet. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -5613,14 +5400,9 @@ METHOD create_xl_sheet_rels. lc_xml_node_rid_drawing_cmt_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', " (+) Issue #180 lc_xml_node_rid_link_tp TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_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_table TYPE REF TO zcl_excel_table, lo_link TYPE REF TO zcl_excel_hyperlink. @@ -5632,15 +5414,7 @@ METHOD create_xl_sheet_rels. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node relationships @@ -5840,10 +5614,7 @@ METHOD create_xl_sheet_rels. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -5912,7 +5683,6 @@ METHOD create_xl_sheet_sheet_data. " sheetData node rv_ixml_sheet_data_root = io_document->create_simple_element( name = lc_xml_node_sheetdata parent = io_document ). - me->mv_sheet_data_xstring_dummy = render_ixml_element_no_header( rv_ixml_sheet_data_root ). " Get column count col_count = io_worksheet->get_highest_column( ). @@ -6223,25 +5993,6 @@ METHOD create_xl_sheet_sheet_data. ENDIF. DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries -* -* -* me->mv_sheet_data_xstring = render_ixml_element_no_header( rv_ixml_sheet_data_root ). -* -* -** Für den Dummystringersatz jetzt alles zurück auf Anfang -* rv_ixml_sheet_data_root = io_document->create_simple_element( name = lc_xml_node_sheetdata -* parent = io_document ). -* me->mv_sheet_data_xstring_dummy = render_ixml_element_no_header( rv_ixml_sheet_data_root ). -* -* DATA: lv_sheetdata_tag_start TYPE xstring, -* lv_sheetdata_tag_end TYPE xstring. -* -* lv_sheetdata_tag_start = cl_bcs_convert=>string_to_xstring( '' ). -* lv_sheetdata_tag_end = cl_bcs_convert=>string_to_xstring( '' ). -* CONCATENATE lv_sheetdata_tag_start lv_xstring lv_sheetdata_tag_end -* INTO lv_xstring IN BYTE MODE. -* me->mv_sheet_data_xstring = lv_xstring. - ENDMETHOD. @@ -6349,8 +6100,7 @@ METHOD create_xl_styles. lc_xml_attr_right TYPE string VALUE 'right', lc_xml_attr_left TYPE string VALUE 'left'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: lo_document TYPE REF TO if_ixml_document, lo_element_root TYPE REF TO if_ixml_element, lo_element_fonts TYPE REF TO if_ixml_element, lo_element_font TYPE REF TO if_ixml_element, @@ -6364,10 +6114,6 @@ METHOD create_xl_styles. lo_element TYPE REF TO if_ixml_element, lo_sub_element TYPE REF TO if_ixml_element, lo_sub_element_2 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_iterator2 TYPE REF TO cl_object_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, @@ -6412,15 +6158,7 @@ METHOD create_xl_styles. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). *********************************************************************** * STEP 3: Create main node relationships @@ -7230,10 +6968,7 @@ METHOD create_xl_styles. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -7300,16 +7035,10 @@ METHOD create_xl_table. " Node id lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_element2 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, - lv_table_name TYPE string, lv_id TYPE i, lv_match TYPE i, @@ -7321,15 +7050,7 @@ METHOD create_xl_table. ********************************************************************** * STEP 1: Create xml - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node table @@ -7452,10 +7173,7 @@ METHOD create_xl_table. lo_element_root->append_child( new_child = lo_element ). ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -7529,16 +7247,11 @@ METHOD create_xl_workbook. " Node id lc_xml_node_ridx_id TYPE string VALUE 'rId#'. - DATA: lo_ixml TYPE REF TO if_ixml, - lo_document TYPE REF TO if_ixml_document, + DATA: 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_element_range 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_iterator_range TYPE REF TO cl_object_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, @@ -7554,15 +7267,7 @@ METHOD create_xl_workbook. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). + lo_document = create_xml_document( ). ********************************************************************** * STEP 3: Create main node @@ -7792,10 +7497,7 @@ METHOD create_xl_workbook. ********************************************************************** * STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). + ep_content = render_xml_document( lo_document ). ENDMETHOD. @@ -7822,60 +7524,6 @@ METHOD get_shared_string_index. ENDMETHOD. - -METHOD render_ixml_element_no_header. - -* - 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_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. - - - DATA: lv_content TYPE string. - -********************************************************************** -* STEP 1: Create [Content_Types].xml into the root of the ZIP - lo_ixml = cl_ixml=>create( ). - -********************************************************************** -* STEP 2: Set document attributes - lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian - character_set = 'utf-8' ). - lo_document = lo_ixml->create_document( ). - lo_document->set_encoding( lo_encoding ). - lo_document->set_standalone( abap_true ). - lo_document->set_declaration( abap_false ). " NO header!! - - lo_document->append_child( new_child = iv_ixml_element ). - - -********************************************************************** -* STEP 5: Create xstring stream - lo_streamfactory = lo_ixml->create_stream_factory( ). -* lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). - lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - -* write:/ lv_content. - - lo_streamfactory = lo_ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_xstring( string = rv_xstring ). -* lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_content ). - lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). - lo_renderer->render( ). - - -* rv_xstring = lv_contentx. - -ENDMETHOD. - - METHOD set_vml_shape_footer. CONSTANTS: lc_shape TYPE string VALUE '', @@ -8162,6 +7810,26 @@ METHOD set_vml_string. ENDMETHOD. +METHOD create_xml_document. + DATA lo_encoding TYPE REF TO if_ixml_encoding. + lo_encoding = me->ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian + character_set = 'utf-8' ). + ro_document = me->ixml->create_document( ). + ro_document->set_encoding( lo_encoding ). + ro_document->set_standalone( abap_true ). +ENDMETHOD. + +METHOD render_xml_document. + DATA lo_streamfactory TYPE REF TO if_ixml_stream_factory. + DATA lo_ostream TYPE REF TO if_ixml_ostream. + DATA lo_renderer TYPE REF TO if_ixml_renderer. + + lo_streamfactory = me->ixml->create_stream_factory( ). + lo_ostream = lo_streamfactory->create_ostream_xstring( string = ep_content ). + lo_renderer = me->ixml->create_renderer( ostream = lo_ostream document = io_document ). + lo_renderer->render( ). +ENDMETHOD. + method ZIF_EXCEL_WRITER~WRITE_FILE. me->excel = io_excel. diff --git a/src/zcl_excel_writer_2007.clas.xml b/src/zcl_excel_writer_2007.clas.xml index 3b16320..ce077b7 100644 --- a/src/zcl_excel_writer_2007.clas.xml +++ b/src/zcl_excel_writer_2007.clas.xml @@ -510,24 +510,6 @@ I Get shared string index - - ZCL_EXCEL_WRITER_2007 - MV_SHEET_DATA_XSTRING - E - SheetData as xstring - - - ZCL_EXCEL_WRITER_2007 - MV_SHEET_DATA_XSTRING_DUMMY - E - Empty Sheet data - to be replaced later - - - ZCL_EXCEL_WRITER_2007 - RENDER_IXML_ELEMENT_NO_HEADER - E - Render ixml element - no header - ZCL_EXCEL_WRITER_2007 SET_VML_SHAPE_FOOTER