From fda6f0e3eb2b2979b8a3bc99e3bddc97499ca89a Mon Sep 17 00:00:00 2001 From: Ivan Femia Date: Sun, 4 Nov 2012 22:22:46 +0000 Subject: [PATCH] Ready to test #163 Added range capability to worksheet git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@358 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049 --- ZA2X/CLAS/ZCL_EXCEL.slnk | 171 +++++++++---------- ZA2X/CLAS/ZCL_EXCEL_RANGE.slnk | 38 ++--- ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk | 124 +++++++------- ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk | 237 +++++++++++++++------------ ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk | 57 +++++-- ZA2X/PROG/ZDEMO_EXCEL8.slnk | 16 +- 6 files changed, 355 insertions(+), 288 deletions(-) diff --git a/ZA2X/CLAS/ZCL_EXCEL.slnk b/ZA2X/CLAS/ZCL_EXCEL.slnk index 1d36207..d192e2d 100644 --- a/ZA2X/CLAS/ZCL_EXCEL.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL.slnk @@ -1,8 +1,8 @@ - - - + + + class ZCL_EXCEL definition public final @@ -24,7 +24,6 @@ public section. !IO_SHEET type ref to ZCL_EXCEL_WORKSHEET returning value(RO_AUTOFILTER) type ref to ZCL_EXCEL_AUTOFILTER . - class ZCL_EXCEL_DRAWING definition load . methods ADD_NEW_DRAWING importing !IP_TYPE type ZEXCEL_DRAWING_TYPE default ZCL_EXCEL_DRAWING=>TYPE_IMAGE @@ -54,11 +53,6 @@ public section. methods GET_ACTIVE_WORKSHEET returning value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . - methods GET_WORKSHEET_BY_NAME - importing - !IP_SHEET_NAME type ZEXCEL_SHEET_TITLE - returning - value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . methods GET_AUTOFILTERS_REFERENCE returning value(RO_AUTOFILTERS) type ref to ZCL_EXCEL_AUTOFILTERS . @@ -108,6 +102,11 @@ public section. methods GET_WORKSHEETS_SIZE returning value(EP_SIZE) type I . + methods GET_WORKSHEET_BY_NAME + importing + !IP_SHEET_NAME type ZEXCEL_SHEET_TITLE + returning + value(EO_WORKSHEET) type ref to ZCL_EXCEL_WORKSHEET . methods SET_ACTIVE_SHEET_INDEX importing !I_ACTIVE_WORKSHEET type ZEXCEL_ACTIVE_WORKSHEET . @@ -249,17 +248,17 @@ CLASS zcl_tc_excel IMPLEMENTATION. ENDCLASS. "zcl_Tc_Excel - + - - - - - - - - - + + + + + + + + + method ZIF_EXCEL_BOOK_PROPERTIES~INITIALIZE. DATA: lv_timestamp TYPE timestampl. @@ -299,18 +298,18 @@ endmethod. me->zif_excel_book_vba_project~vbaproject = ip_vbaproject. endmethod. - - - + + + method ADD_NEW_AUTOFILTER. * Check for autofilter reference: new or overwrite; only one per sheet ro_autofilter = autofilters->add( io_sheet = io_sheet ) . endmethod. - + - - + + method ADD_NEW_DRAWING. DATA: lv_guid TYPE guid_16. * Create default blank worksheet @@ -327,17 +326,17 @@ endmethod. ENDCASE. endmethod. - - + + method ADD_NEW_RANGE. * Create default blank range CREATE OBJECT eo_range. ranges->add( eo_range ). endmethod. - - - + + + method ADD_NEW_STYLE. * Start of deletion # issue 139 - Dateretention of cellstyles * CREATE OBJECT eo_style. @@ -359,22 +358,24 @@ endmethod. endmethod. - - - - - method ADD_NEW_WORKSHEET. + + + + + METHOD add_new_worksheet. DATA: lv_guid TYPE guid_16. + * Create default blank worksheet CREATE OBJECT eo_worksheet EXPORTING ip_excel = me ip_title = ip_title. + worksheets->add( eo_worksheet ). worksheets->active_worksheet = worksheets->size( ). -endmethod. +ENDMETHOD. - + method ADD_STATIC_STYLES. " # issue 139 * sp#ƒÂ¤ter hier noch die Worksheets abklappern, welche Styles #ƒÂ#berhaupt noch ben#ƒÂ#tigt werden @@ -399,7 +400,7 @@ endmethod. ENDLOOP. endmethod. - + method CONSTRUCTOR. DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_style TYPE REF TO zcl_excel_style. @@ -428,37 +429,37 @@ endmethod. endmethod. - - + + method GET_ACTIVE_SHEET_INDEX. r_active_worksheet = me->worksheets->active_worksheet. endmethod. - - + + method GET_ACTIVE_WORKSHEET. eo_worksheet = me->worksheets->get( me->worksheets->active_worksheet ). endmethod. - - + + method GET_AUTOFILTERS_REFERENCE. ro_autofilters = autofilters. endmethod. - - + + method GET_DEFAULT_STYLE. ep_style = me->default_style. endmethod. - + - + method GET_DRAWINGS_ITERATOR. CASE ip_type. @@ -471,8 +472,8 @@ endmethod. endmethod. - - + + method GET_NEXT_TABLE_ID. DATA: lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_iterator TYPE REF TO cl_object_collection_iterator, @@ -491,18 +492,18 @@ endmethod. endmethod. - - + + method GET_RANGES_ITERATOR. eo_iterator = me->ranges->get_iterator( ). endmethod. - - - - + + + + method GET_STATIC_CELLSTYLE_GUID. " # issue 139 DATA: style LIKE LINE OF me->t_stylemapping1. @@ -525,18 +526,18 @@ endmethod. ep_guid = style-guid. endmethod. - - + + method GET_STYLES_ITERATOR. eo_iterator = me->styles->get_iterator( ). endmethod. - - - - + + + + method GET_STYLE_INDEX_IN_STYLES. DATA: index TYPE syindex. DATA: lo_iterator TYPE REF TO cl_object_collection_iterator, @@ -564,10 +565,10 @@ endmethod. ENDIF. endmethod. - - - - + + + + method GET_STYLE_TO_GUID. " # issue 139 @@ -587,34 +588,34 @@ endmethod. endmethod. - - + + method GET_WORKSHEETS_ITERATOR. eo_iterator = me->worksheets->get_iterator( ). endmethod. - - + + method GET_WORKSHEETS_NAME. ep_name = me->worksheets->name. endmethod. - - + + method GET_WORKSHEETS_SIZE. ep_size = me->worksheets->size( ). endmethod. - + - METHOD get_worksheet_by_name. + method GET_WORKSHEET_BY_NAME. DATA: lv_index TYPE zexcel_active_worksheet, l_size TYPE i. @@ -631,16 +632,16 @@ endmethod. CLEAR eo_worksheet. -ENDMETHOD. +endmethod. - - + + method SET_ACTIVE_SHEET_INDEX. me->worksheets->active_worksheet = i_active_worksheet. endmethod. - - + + method SET_ACTIVE_SHEET_INDEX_BY_NAME. DATA: ws_it TYPE REF TO cl_object_collection_iterator, @@ -662,16 +663,16 @@ endmethod. endmethod. - - - + + + method SET_DEFAULT_STYLE. me->default_style = ip_style. endmethod. - - - + + + method STYLEMAPPING_DYNAMIC_STYLE. " # issue 139 eo_style2-dynamic_style_guid = ip_style->get_guid( ). diff --git a/ZA2X/CLAS/ZCL_EXCEL_RANGE.slnk b/ZA2X/CLAS/ZCL_EXCEL_RANGE.slnk index 12a4b0d..ecbd532 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_RANGE.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_RANGE.slnk @@ -1,5 +1,5 @@ - - + + class ZCL_EXCEL_RANGE definition public final @@ -11,7 +11,6 @@ public section. data NAME type ZEXCEL_RANGE_NAME . data GUID type ZEXCEL_RANGE_GUID . - data SHEETID type ZEXCEL_RANGE_SHEET_ID . methods CONSTRUCTOR . methods GET_GUID @@ -46,42 +45,41 @@ protected section. *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - + + + + method CONSTRUCTOR. endmethod. - - + + method GET_GUID. ep_guid = me->guid. endmethod. - - + + method GET_VALUE. ep_value = me->value. endmethod. - - + + method SET_RANGE_VALUE. me->value = ip_value. endmethod. - - - - - - + + + + + + method SET_VALUE. DATA: lv_start_row_c TYPE char7, lv_stop_row_c TYPE char7, diff --git a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk index eb2398f..b6673a2 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_READER_2007.slnk @@ -1,70 +1,71 @@ - - - - - - - - - - - - - - - - + class ZCL_EXCEL_READER_2007 definition public create public . @@ -81,9 +82,10 @@ protected section. types: BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, + id TYPE string, + type TYPE string, + target TYPE string, + worksheet TYPE REF TO zcl_excel_worksheet, END OF t_relationship . types: BEGIN OF t_fileversion, @@ -1221,6 +1223,8 @@ endmethod. ip_path = worksheet_path io_worksheet = lo_worksheet ). + <worksheet>-worksheet = lo_worksheet. + node ?= node->get_next( ). ADD 1 TO workbook_index. ENDWHILE. @@ -1239,9 +1243,15 @@ endmethod. ). range_value = node->get_value( ). - lo_range = ip_excel->add_new_range( ). + IF range-localsheetid IS NOT INITIAL. " issue #163+ + READ TABLE worksheets ASSIGNING <worksheet> " issue #163+ + WITH KEY id = range-localsheetid. " issue #163+ + lo_range = <worksheet>-worksheet->add_new_range( ). " issue #163+ + ELSE. " issue #163+ + lo_range = ip_excel->add_new_range( ). " issue #163+ + ENDIF. " issue #163+ +* lo_range = ip_excel->add_new_range( ). " issue #163- lo_range->name = range-name. - lo_range->sheetid = range-localsheetid. " issue #163 lo_range->set_range_value( range_value ). node ?= node->get_next( ). ENDWHILE. @@ -1269,7 +1279,7 @@ ENDMETHOD. - METHOD load_worksheet. + method LOAD_WORKSHEET. TYPES: BEGIN OF t_cell, r TYPE string, t TYPE string, @@ -1765,7 +1775,7 @@ ENDMETHOD. ENDIF. " End fix 194 Read attributes HIDDEN, OUTLINELEVEL, COLLAPSED in ZCL_EXCEL_READER_2007 -ENDMETHOD. +endmethod. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk index 0839d19..579d9ba 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk @@ -1,16 +1,16 @@ - - - + + + class ZCL_EXCEL_WORKSHEET definition public final create public . +public section. *"* public components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! -public section. type-pools ABAP . interfaces ZIF_EXCEL_SHEET_PROPERTIES . @@ -23,6 +23,7 @@ public section. constants C_SHEET_STATE_HIDDEN type ZEXCEL_SHEET_STATE value 'hidden'. "#EC NOTEXT constants C_SHEET_STATE_VERYHIDDEN type ZEXCEL_SHEET_STATE value 'veryHidden'. "#EC NOTEXT constants C_SHEET_STATE_VISIBLE type ZEXCEL_SHEET_STATE value 'visible'. "#EC NOTEXT + data EXCEL type ref to ZCL_EXCEL read-only . data PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES read-only value ABAP_FALSE. "#EC NOTEXT . data SHEET_CONTENT type ZEXCEL_T_CELL_DATA . data SHEET_CONTENT_MERGE type ZEXCEL_T_CELL_DATA_UNSORTED . @@ -31,7 +32,6 @@ public section. data SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . data SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . data STYLES type ZEXCEL_T_SHEET_STYLE . - data EXCEL type ref to ZCL_EXCEL read-only . data TABCOLOR type ZEXCEL_S_TABCOLOR read-only . methods ADD_DRAWING @@ -43,6 +43,9 @@ public section. methods ADD_NEW_DATA_VALIDATION returning value(EO_DATA_VALIDATION) type ref to ZCL_EXCEL_DATA_VALIDATION . + methods ADD_NEW_RANGE + returning + value(EO_RANGE) type ref to ZCL_EXCEL_RANGE . methods BIND_ALV importing !IO_ALV type ref to OBJECT @@ -252,16 +255,16 @@ public section. methods GET_DEFAULT_ROW_DIMENSION returning value(R_ROW_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . - methods GET_DRAWINGS - importing - !IP_TYPE type ZEXCEL_DRAWING_TYPE optional - returning - value(R_DRAWINGS) type ref to ZCL_EXCEL_DRAWINGS . methods GET_DIMENSION_RANGE returning value(EP_DIMENSION_RANGE) type STRING raising ZCX_EXCEL . + methods GET_DRAWINGS + importing + !IP_TYPE type ZEXCEL_DRAWING_TYPE optional + returning + value(R_DRAWINGS) type ref to ZCL_EXCEL_DRAWINGS . methods GET_DRAWINGS_ITERATOR importing !IP_TYPE type ZEXCEL_DRAWING_TYPE @@ -295,6 +298,9 @@ public section. value(MERGE_RANGE) type STRING_TABLE raising ZCX_EXCEL . + methods GET_RANGES_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . methods GET_ROW_DIMENSION importing !IP_ROW type INT4 @@ -394,11 +400,12 @@ public section. *"* protected components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! protected section. - *"* private components of class ZCL_EXCEL_WORKSHEET + private section. +*"* private components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! -private section. data ACTIVE_CELL type ZEXCEL_S_CELL_DATA . + data CHARTS type ref to ZCL_EXCEL_DRAWINGS . data COLUMN_DIMENSIONS type ZEXCEL_T_WORKSHEET_COLUMNDIME . data CONDITIONAL_STYLES type ref to ZCL_EXCEL_STYLES_CONDITIONAL . data DATA_VALIDATIONS type ref to ZCL_EXCEL_DATA_VALIDATIONS . @@ -412,11 +419,11 @@ private section. data GUID type OLTPGUID16 . data HYPERLINKS type ref to CL_OBJECT_COLLECTION . data LOWER_CELL type ZEXCEL_S_CELL_DATA . + data RANGES type ref to ZCL_EXCEL_RANGES . data ROW_DIMENSIONS type ZEXCEL_T_WORKSHEET_ROWDIMENSIO . data TABLES type ref to CL_OBJECT_COLLECTION . data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . data UPPER_CELL type ZEXCEL_S_CELL_DATA . - data CHARTS type ref to ZCL_EXCEL_DRAWINGS . methods CALCULATE_CELL_WIDTH importing @@ -604,40 +611,41 @@ endclass. SLIS SOI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + method ZIF_EXCEL_SHEET_PROPERTIES~GET_STYLE. IF zif_excel_sheet_properties~style IS NOT INITIAL. @@ -729,7 +737,15 @@ endmethod. data_validations->add( eo_data_validation ). endmethod. - + + + method ADD_NEW_RANGE. +* Create default blank range + CREATE OBJECT eo_range. + ranges->add( eo_range ). +endmethod. + + @@ -758,7 +774,7 @@ endmethod. endmethod. - + @@ -2847,7 +2863,7 @@ endmethod. close_document. endmethod. - + @@ -3022,7 +3038,7 @@ endmethod. endmethod. - + @@ -3051,7 +3067,7 @@ endmethod. endmethod. - + method CALCULATE_COLUMN_WIDTHS. TYPES: @@ -3130,7 +3146,7 @@ endmethod. endmethod. - + @@ -3529,11 +3545,11 @@ endmethod. endmethod. - + - method CONSTRUCTOR. + METHOD constructor. DATA: lv_title TYPE zexcel_sheet_title. me->excel = ip_excel. @@ -3557,6 +3573,7 @@ endmethod. CREATE OBJECT conditional_styles. CREATE OBJECT data_validations. CREATE OBJECT tables. + CREATE OBJECT ranges. " issue #163 CREATE OBJECT drawings EXPORTING ip_type = zcl_excel_drawing=>type_image. @@ -3577,9 +3594,9 @@ endmethod. upper_cell-cell_row = 1. upper_cell-cell_column = 1. -endmethod. +ENDMETHOD. - + method DELETE_MERGE. DELETE sheet_content_merge INDEX 1. @@ -3587,7 +3604,7 @@ endmethod. endmethod. - + @@ -3617,7 +3634,7 @@ endmethod. freeze_pane_cell_row = ip_num_rows + 1. endmethod. - + method GENERATE_TITLE. DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, @@ -3652,7 +3669,7 @@ endmethod. ENDDO. endmethod. - + method GET_ACTIVE_CELL. @@ -3668,7 +3685,7 @@ endmethod. endmethod. - + @@ -3707,7 +3724,7 @@ endmethod. ENDIF. endmethod. - + @@ -3734,33 +3751,33 @@ endmethod. endmethod. - + method GET_COLUMN_DIMENSIONS. r_column_dimension[] = me->column_dimensions[]. endmethod. - + method GET_COND_STYLES_ITERATOR. eo_iterator = me->conditional_styles->get_iterator( ). endmethod. - + method GET_DATA_VALIDATIONS_ITERATOR. eo_iterator = me->data_validations->get_iterator( ). endmethod. - + method GET_DATA_VALIDATIONS_SIZE. ep_size = me->data_validations->size( ). endmethod. - + method GET_DEFAULT_COLUMN_DIMENSION. IF me->default_column_dimension IS NOT BOUND. @@ -3774,7 +3791,7 @@ endmethod. r_column_dimension = me->default_column_dimension. endmethod. - + method GET_DEFAULT_EXCEL_DATE_FORMAT. CONSTANTS: c_lang_e TYPE lang VALUE 'E'. @@ -3800,7 +3817,7 @@ endmethod. ep_default_excel_date_format = default_excel_date_format. endmethod. - + method GET_DEFAULT_EXCEL_TIME_FORMAT. DATA: l_timefm TYPE xutimefm. @@ -3836,7 +3853,7 @@ endmethod. ep_default_excel_time_format = default_excel_time_format. endmethod. - + method GET_DEFAULT_ROW_DIMENSION. IF me->default_row_dimension IS NOT BOUND. @@ -3846,7 +3863,7 @@ endmethod. r_row_dimension = me->default_row_dimension. endmethod. - + method GET_DIMENSION_RANGE. @@ -3866,7 +3883,7 @@ endmethod. endmethod. - + method GET_DRAWINGS. @@ -3898,7 +3915,7 @@ endmethod. ENDCASE. endmethod. - + method GET_DRAWINGS_ITERATOR. @@ -3910,7 +3927,7 @@ endmethod. ENDCASE. endmethod. - + method GET_FREEZE_CELL. @@ -3918,7 +3935,7 @@ endmethod. ep_column = me->freeze_pane_cell_column. endmethod. - + method GET_GUID. @@ -3926,7 +3943,7 @@ endmethod. endmethod. - + method GET_HIGHEST_COLUMN. @@ -3934,7 +3951,7 @@ endmethod. r_highest_column = me->lower_cell-cell_column. endmethod. - + method GET_HIGHEST_ROW. @@ -3942,19 +3959,19 @@ endmethod. r_highest_row = me->lower_cell-cell_row. endmethod. - + method GET_HYPERLINKS_ITERATOR. eo_iterator = hyperlinks->get_iterator( ). endmethod. - + method GET_HYPERLINKS_SIZE. ep_size = hyperlinks->size( ). endmethod. - + method GET_MERGE. @@ -4030,7 +4047,15 @@ endmethod. endmethod. - + + + method GET_RANGES_ITERATOR. + + eo_iterator = me->ranges->get_iterator( ). + +endmethod. + + method GET_ROW_DIMENSION. @@ -4052,31 +4077,31 @@ endmethod. endmethod. - + method GET_ROW_DIMENSIONS. r_row_dimension[] = me->row_dimensions[]. endmethod. - + - METHOD get_tabcolor. + method GET_TABCOLOR. ev_tabcolor = me->tabcolor. -ENDMETHOD. +endmethod. - + method GET_TABLES_ITERATOR. eo_iterator = tables->if_object_collection~get_iterator( ). endmethod. - + method GET_TABLES_SIZE. ep_size = tables->if_object_collection~size( ). endmethod. - + method GET_TITLE. @@ -4089,7 +4114,7 @@ endmethod. ENDIF. endmethod. - + @@ -4146,7 +4171,7 @@ endmethod. endmethod. - + @@ -4373,7 +4398,7 @@ endmethod. endmethod. - + @@ -4403,7 +4428,7 @@ endmethod. endmethod. - + @@ -4439,7 +4464,7 @@ endmethod. endmethod. - + method SET_DEFAULT_EXCEL_DATE_FORMAT. @@ -4453,7 +4478,7 @@ endmethod. default_excel_date_format = ip_default_excel_date_format. endmethod. - + @@ -4495,13 +4520,13 @@ endmethod. endmethod. - + method SET_PRINT_GRIDLINES. me->print_gridlines = i_print_gridlines. endmethod. - + @@ -4532,25 +4557,25 @@ endmethod. endmethod. - + method SET_SHOW_GRIDLINES. me->show_gridlines = i_show_gridlines. endmethod. - + method SET_SHOW_ROWCOLHEADERS. me->show_rowcolheaders = i_show_rowcolheaders. endmethod. - + - METHOD set_tabcolor. + method SET_TABCOLOR. me->tabcolor = iv_tabcolor. -ENDMETHOD. +endmethod. - + @@ -4634,10 +4659,10 @@ ENDMETHOD. endmethod. - + - METHOD set_title. + method SET_TITLE. DATA: lo_worksheets_iterator TYPE REF TO cl_object_collection_iterator, lo_worksheet TYPE REF TO zcl_excel_worksheet, errormessage TYPE string, @@ -4689,9 +4714,9 @@ endmethod. ENDIF. ENDWHILE. -ENDMETHOD. +endmethod. - + method UPDATE_DIMENSION_RANGE. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk index 593d19d..90dcc6a 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk @@ -1,6 +1,6 @@ - + class ZCL_EXCEL_WRITER_2007 definition public create public . @@ -1830,7 +1830,7 @@ endmethod. - METHOD create_xl_sheet. + method CREATE_XL_SHEET. TYPES: BEGIN OF cfvo, value TYPE zexcel_conditional_value, @@ -3429,7 +3429,7 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -ENDMETHOD. +endmethod. @@ -4834,7 +4834,7 @@ endmethod. - method CREATE_XL_WORKBOOK. + METHOD create_xl_workbook. ** Constant node name DATA: lc_xml_node_workbook TYPE string VALUE 'workbook', @@ -4882,12 +4882,14 @@ endmethod. 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, lo_range TYPE REF TO zcl_excel_range, lo_autofilters TYPE REF TO zcl_excel_autofilters, @@ -5002,6 +5004,10 @@ endmethod. parent = lo_document ). lo_iterator = excel->get_worksheets_iterator( ). + " ranges node + lo_element_range = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 + + parent = lo_document ). " issue 163 + + WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. " sheet node lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_sheet @@ -5025,13 +5031,35 @@ endmethod. prefix = lc_r_ns value = lv_xml_node_ridx_id ). lo_element->append_child( new_child = lo_sub_element ). " sheet node + + " issue 163 >>> + lo_iterator_range = lo_worksheet->get_ranges_iterator( ). + + WHILE lo_iterator_range->if_object_collection_iterator~has_next( ) EQ abap_true. + " range node + lo_sub_element = lo_document->create_simple_element_ns( name = lc_xml_node_definedname + parent = lo_document ). + lo_range ?= lo_iterator_range->if_object_collection_iterator~get_next( ). + lv_value = lo_range->name. + lo_sub_element->set_attribute_ns( name = lc_xml_attr_name + value = lv_value ). + + lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid + value = lv_xml_node_ridx_id ). + + lv_value = lo_range->get_value( ). + lo_sub_element->set_value( value = lv_value ). + lo_element_range->append_child( new_child = lo_sub_element ). " range node + ENDWHILE. + " issue 163 <<< + ENDWHILE. lo_element_root->append_child( new_child = lo_element )." sheets node - " ranges node - lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames - parent = lo_document ). +* " ranges node +* lo_element = lo_document->create_simple_element( name = lc_xml_node_definednames " issue 163 - +* parent = lo_document ). " issue 163 - lo_iterator = excel->get_ranges_iterator( ). WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. @@ -5042,16 +5070,9 @@ endmethod. lv_value = lo_range->name. lo_sub_element->set_attribute_ns( name = lc_xml_attr_name value = lv_value ). - lv_value = lo_range->sheetid. " Issue #163 - IF lv_value GT 0. " Issue #163 - SHIFT lv_value RIGHT DELETING TRAILING space. " Issue #163 - SHIFT lv_value LEFT DELETING LEADING space. " Issue #163 - lo_sub_element->set_attribute_ns( name = lc_xml_attr_localsheetid " Issue #163 - value = lv_value ). " Issue #163 - ENDIF. lv_value = lo_range->get_value( ). lo_sub_element->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_sub_element ). " range node + lo_element_range->append_child( new_child = lo_sub_element ). " range node ENDWHILE. lo_autofilters = excel->get_autofilters_reference( ). IF lo_autofilters->is_empty( ) = abap_false. @@ -5076,11 +5097,11 @@ endmethod. value = lv_value ). lv_value = lo_autofilter->get_filter_reference( ). lo_sub_element->set_value( value = lv_value ). - lo_element->append_child( new_child = lo_sub_element ). " range node + lo_element_range->append_child( new_child = lo_sub_element ). " range node ENDIF. ENDWHILE. ENDIF. - lo_element_root->append_child( new_child = lo_element )." ranges node + lo_element_root->append_child( new_child = lo_element_range )." ranges node " calcPr node lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr @@ -5096,7 +5117,7 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -endmethod. +ENDMETHOD. diff --git a/ZA2X/PROG/ZDEMO_EXCEL8.slnk b/ZA2X/PROG/ZDEMO_EXCEL8.slnk index defe917..5aa1e84 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL8.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL8.slnk @@ -1,5 +1,5 @@ - - + + @@ -62,6 +62,18 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_row = 4 ip_column = 'D' ip_value = 'Range Value 1' ). lo_worksheet->set_cell( ip_row = 5 ip_column = 'D' ip_value = 'Range Value 2' ). + " issue #163 + " Define another Range with sheet visibility + lo_range = lo_worksheet->add_new_range( ). + lo_range->name = 'A_range_with_sheet_visibility'. + lo_range->set_value( ip_sheet_name = lv_title + ip_start_column = 'E' + ip_start_row = 4 + ip_stop_column = 'E' + ip_stop_row = 5 ). + lo_worksheet->set_cell( ip_row = 4 ip_column = 'E' ip_value = 'Range Value 3' ). + lo_worksheet->set_cell( ip_row = 5 ip_column = 'E' ip_value = 'Range Value 4' ). + " issue #163 *** Create output lcl_output=>output( lo_excel ).