From a3f650a40d98958063ce1aac3e5b7bf836f4ceb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Plantiko?= Date: Wed, 9 Apr 2025 14:58:53 +0000 Subject: [PATCH] issue 1294 (cell comments) Enables rich text cell comments --- src/not_cloud/zcl_excel_converter.clas.xml | 265 ----- src/zcl_excel.clas.xml | 185 ---- src/zcl_excel_autofilter.clas.xml | 55 -- src/zcl_excel_comment.clas.abap | 204 +++- src/zcl_excel_comment.clas.xml | 73 +- src/zcl_excel_comments.clas.abap | 64 +- src/zcl_excel_comments.clas.xml | 18 + src/zcl_excel_common.clas.xml | 160 --- src/zcl_excel_reader_2007.clas.abap | 914 ++++++++++------- src/zcl_excel_reader_2007.clas.xml | 107 +- src/zcl_excel_style_number_format.clas.xml | 205 ---- src/zcl_excel_worksheet.clas.abap | 50 +- src/zcl_excel_worksheet.clas.xml | 381 +------ src/zcl_excel_writer_2007.clas.abap | 1044 +++++++++----------- src/zcl_excel_writer_2007.clas.xml | 227 +---- src/zcl_excel_writer_csv.clas.xml | 65 -- src/zexcel_pane_state.dtel.xml | 9 - src/zexcel_pane_type.dtel.xml | 9 - src/zexcel_s_fieldcatalog.tabl.xml | 119 --- 19 files changed, 1393 insertions(+), 2761 deletions(-) diff --git a/src/not_cloud/zcl_excel_converter.clas.xml b/src/not_cloud/zcl_excel_converter.clas.xml index 20f0a49..ece3ede 100644 --- a/src/not_cloud/zcl_excel_converter.clas.xml +++ b/src/not_cloud/zcl_excel_converter.clas.xml @@ -67,531 +67,266 @@ E Ask for user option data - - ASK_OPTION - I - Ask for user option data - BIND_CELLS E Create table with set cell method - - BIND_CELLS - I - Create table with set cell method - BIND_TABLE E Create table with bind table method - - BIND_TABLE - I - Create table with bind table method - CLASS_CONSTRUCTOR E CLASS_CONSTRUCTOR - - CLASS_CONSTRUCTOR - I - CLASS_CONSTRUCTOR - CLEAN_FIELDCATALOG E Sort and check on fieldcatalog - - CLEAN_FIELDCATALOG - I - Sort and check on fieldcatalog - CONVERT E Convert - - CONVERT - I - Convert - CREATE_COLOR_STYLE E Create new color style based on cell style - - CREATE_COLOR_STYLE - I - Create new color style based on cell style - CREATE_FORMULAR_SUBTOTAL E Create formular for subtotal - - CREATE_FORMULAR_SUBTOTAL - I - Create formular for subtotal - CREATE_FORMULAR_TOTAL E Create formular for column total - - CREATE_FORMULAR_TOTAL - I - Create formular for column total - CREATE_PATH E Create file path for download - - CREATE_PATH - I - Create file path for download - CREATE_STYLE_HDR E Create header style - - CREATE_STYLE_HDR - I - Create header style - CREATE_STYLE_NORMAL E Create line style for stripped - - CREATE_STYLE_NORMAL - I - Create line style for stripped - CREATE_STYLE_STRIPPED E Create line style for stripped - - CREATE_STYLE_STRIPPED - I - Create line style for stripped - CREATE_STYLE_SUBTOTAL E Create subtotals style - - CREATE_STYLE_SUBTOTAL - I - Create subtotals style - CREATE_STYLE_TOTAL E Create totals style - - CREATE_STYLE_TOTAL - I - Create totals style - CREATE_TABLE E Create table based on fieldcatalog - - CREATE_TABLE - I - Create table based on fieldcatalog - CREATE_TEXT_SUBTOTAL E Create subtoal text for column - - CREATE_TEXT_SUBTOTAL - I - Create subtoal text for column - CREATE_WORKSHEET E Create table in worksheet - - CREATE_WORKSHEET - I - Create table in worksheet - C_TYPE_HDR E Single-Character Indicator - - C_TYPE_HDR - I - Single-Character Indicator - C_TYPE_NOR E Single-Character Indicator - - C_TYPE_NOR - I - Single-Character Indicator - C_TYPE_STR E Single-Character Indicator - - C_TYPE_STR - I - Single-Character Indicator - C_TYPE_SUB E Single-Character Indicator - - C_TYPE_SUB - I - Single-Character Indicator - C_TYPE_TOT E Single-Character Indicator - - C_TYPE_TOT - I - Single-Character Indicator - EXECUTE_CONVERTER E Execute the converter based on object provided - - EXECUTE_CONVERTER - I - Execute the converter based on object provided - GET_COLOR_STYLE E Look up color style and create if needed - - GET_COLOR_STYLE - I - Look up color style and create if needed - GET_FILE E Create excel file - - GET_FILE - I - Create excel file - GET_FUNCTION_NUMBER E Convert function name into internal number - - GET_FUNCTION_NUMBER - I - Convert function name into internal number - GET_OPTION E Get user option data - - GET_OPTION - I - Get user option data - GET_STYLE E Get style for cell - - GET_STYLE - I - Get style for cell - INIT_OPTION E Init option structure - - INIT_OPTION - I - Init option structure - LOOP_NORMAL E Bind cells with normal loop - - LOOP_NORMAL - I - Bind cells with normal loop - LOOP_SUBTOTAL E Bind cells with subtotal loop - - LOOP_SUBTOTAL - I - Bind cells with subtotal loop - OPEN_FILE E Open excel file - - OPEN_FILE - I - Open excel file - SET_AUTOFILTER_AREA E Create autofilter - - SET_AUTOFILTER_AREA - I - Create autofilter - SET_CELL_FORMAT E SET CELL FORMAT - - SET_CELL_FORMAT - I - SET CELL FORMAT - SET_FIELDCATALOG E Set fieldcatalog from table - - SET_FIELDCATALOG - I - Set fieldcatalog from table - SET_OPTION E Set user option data - - SET_OPTION - I - Set user option data - WO_AUTOFILTER E Autofilter - - WO_AUTOFILTER - I - Autofilter - WO_DATA E Excel data without unwanted columns - - WO_DATA - I - Excel data without unwanted columns - WO_EXCEL E Excel creator - - WO_EXCEL - I - Excel creator - WO_TABLE E Table sorted but not reduced - - WO_TABLE - I - Table sorted but not reduced - WO_WORKSHEET E Worksheet - - WO_WORKSHEET - I - Worksheet - WRITE_FILE E Write excel file - - WRITE_FILE - I - Write excel file - WS_INDX E System Table INDX - - WS_INDX - I - System Table INDX - WS_LAYOUT E Converter settings for table - - WS_LAYOUT - I - Converter settings for table - WS_OPTION E Converter options for grid configuration - - WS_OPTION - I - Converter options for grid configuration - WT_COLORS E Table type for color information of cells for converter - - WT_COLORS - I - Table type for color information of cells for converter - WT_FIELDCATALOG E Conter table for tabel fields - - WT_FIELDCATALOG - I - Conter table for tabel fields - WT_FILTER E Table type for filter information of cells for converter - - WT_FILTER - I - Table type for filter information of cells for converter - WT_OBJECTS E ALV object list - - WT_OBJECTS - I - ALV object list - W_COL_INT E Cell Column - - W_COL_INT - I - Cell Column - W_FCOUNT E Three digit number - - W_FCOUNT - I - Three digit number - W_ROW_INT E Cell Row - - W_ROW_INT - I - Cell Row - diff --git a/src/zcl_excel.clas.xml b/src/zcl_excel.clas.xml index 0f41934..9cbf55e 100644 --- a/src/zcl_excel.clas.xml +++ b/src/zcl_excel.clas.xml @@ -32,101 +32,51 @@ E Create a new autofilter - - ADD_NEW_AUTOFILTER - I - Create a new autofilter - ADD_NEW_DRAWING E Create a new drawing - - ADD_NEW_DRAWING - I - Create a new drawing - ADD_NEW_RANGE E Create a new range - - ADD_NEW_RANGE - I - Create a new range - ADD_NEW_STYLE E Create a new style - - ADD_NEW_STYLE - I - Create a new style - ADD_NEW_WORKSHEET E Create a new worksheet - - ADD_NEW_WORKSHEET - I - Create a new worksheet - ADD_STATIC_STYLES E Add static styles to styles iterator - - ADD_STATIC_STYLES - I - Add static styles to styles iterator - AUTOFILTERS E Autofilters collection - - AUTOFILTERS - I - Autofilters collection - CHARTS E Charts collection - - CHARTS - I - Charts collection - CONSTRUCTOR E CONSTRUCTOR - - CONSTRUCTOR - I - CONSTRUCTOR - DEFAULT_STYLE E Style identifier - - DEFAULT_STYLE - I - Style identifier - DELETE_WORKSHEET E @@ -147,101 +97,51 @@ E Drawings collection - - DRAWINGS - I - Worksheets collection - GET_ACTIVE_SHEET_INDEX E Get active worksheet index - - GET_ACTIVE_SHEET_INDEX - I - Get active worksheet index - GET_ACTIVE_WORKSHEET E Get active worksheet - - GET_ACTIVE_WORKSHEET - I - Get active worksheet - GET_AUTOFILTERS_REFERENCE E Get filter reference - - GET_AUTOFILTERS_REFERENCE - I - Get filter reference - GET_DEFAULT_STYLE E Get default style - - GET_DEFAULT_STYLE - I - Get default style - GET_DRAWINGS_ITERATOR E Get drawing iterator - - GET_DRAWINGS_ITERATOR - I - Get drawing iterator - GET_NEXT_TABLE_ID E Get table ID unique across sheets - - GET_NEXT_TABLE_ID - I - Get table ID unique across sheets - GET_RANGES_ITERATOR E Get ranges iterator - - GET_RANGES_ITERATOR - I - Get ranges iterator - GET_STATIC_CELLSTYLE_GUID E Get GUID for static cellstyle - - GET_STATIC_CELLSTYLE_GUID - I - Get GUID for static cellstyle - GET_STYLES_ITERATOR E Get styles iterator - - GET_STYLES_ITERATOR - I - Get styles iterator - GET_STYLE_FROM_GUID E @@ -252,21 +152,11 @@ E Get index of style in styles - - GET_STYLE_INDEX_IN_STYLES - I - Get index of style in styles - GET_STYLE_TO_GUID E Get style(structure) for guid - - GET_STYLE_TO_GUID - I - Get style(structure) for guid - GET_THEME E @@ -277,31 +167,16 @@ E Get worksheets iterator - - GET_WORKSHEETS_ITERATOR - I - Get worksheets iterator - GET_WORKSHEETS_NAME E Returns the name of worksheets - - GET_WORKSHEETS_NAME - I - Returns the name of worksheets - GET_WORKSHEETS_SIZE E Returns the number of worksheets - - GET_WORKSHEETS_SIZE - I - Returns the number of worksheets - GET_WORKSHEET_BY_INDEX E @@ -312,61 +187,31 @@ E Get worksheet by name - - GET_WORKSHEET_BY_NAME - I - Get worksheet by name - RANGES E Ranges collection - - RANGES - I - Ranges collection - SECURITY E Security - - SECURITY - I - Security - SET_ACTIVE_SHEET_INDEX E Set active worksheet index - - SET_ACTIVE_SHEET_INDEX - I - Set active worksheet index - SET_ACTIVE_SHEET_INDEX_BY_NAME E Set active worksheet index by name - - SET_ACTIVE_SHEET_INDEX_BY_NAME - I - Set active worksheet index by name - SET_DEFAULT_STYLE E Set default style - - SET_DEFAULT_STYLE - I - Set default style - SET_THEME E @@ -377,21 +222,11 @@ E Convert dynamic style to static styleentry - - STYLEMAPPING_DYNAMIC_STYLE - I - Convert dynamic style to static stlyeentry - STYLES E Styles collection - - STYLES - I - Styles collection - THEME E @@ -402,31 +237,16 @@ E Stylemapping: Values -> GUID - - T_STYLEMAPPING1 - I - Stylemapping: Values -> GUID - T_STYLEMAPPING2 E Stylemapping: GUID -> Values - - T_STYLEMAPPING2 - I - Stylemapping: GUID -> Values - USE_TEMPLATE E Checkbox - - USE_TEMPLATE - I - Checkbox - VERSION E @@ -437,11 +257,6 @@ E Worksheets collection - - WORKSHEETS - I - Worksheets collection - diff --git a/src/zcl_excel_autofilter.clas.xml b/src/zcl_excel_autofilter.clas.xml index ee7edb6..b2f3516 100644 --- a/src/zcl_excel_autofilter.clas.xml +++ b/src/zcl_excel_autofilter.clas.xml @@ -17,21 +17,11 @@ E CONSTRUCTOR - - CONSTRUCTOR - I - CONSTRUCTOR - FILTER_AREA E Autofilter area ( rows and columns ) - - FILTER_AREA - I - Autofilter area ( rows and columns ) - GET_COLUMN_FILTER E @@ -42,41 +32,21 @@ E Get filter area for filter - - GET_FILTER_AREA - I - Get filter area for filter - GET_FILTER_RANGE E Get Filter range for filter - - GET_FILTER_RANGE - I - Get Filter range for filter - GET_FILTER_REFERENCE E Get filter reference for filter - - GET_FILTER_REFERENCE - I - Get filter reference for filter - GET_VALUES E Get filter values table - - GET_VALUES - I - Get filter values table - IS_ROW_HIDDEN E @@ -127,11 +97,6 @@ E Set filter area for filter - - SET_FILTER_AREA - I - Set filter area for filter - SET_TEXT_FILTER E @@ -142,21 +107,11 @@ E Set Filter value - - SET_VALUE - I - Set Filter value - SET_VALUES E Set Filter values with table - - SET_VALUES - I - Set Filter values with table - TS_FILTER E @@ -182,21 +137,11 @@ E Validates filter area - - VALIDATE_AREA - I - Validates filter area - WORKSHEET E Worksheet - - WORKSHEET - I - Worksheet - diff --git a/src/zcl_excel_comment.clas.abap b/src/zcl_excel_comment.clas.abap index f9ad9e0..3336c20 100644 --- a/src/zcl_excel_comment.clas.abap +++ b/src/zcl_excel_comment.clas.abap @@ -5,9 +5,42 @@ CLASS zcl_excel_comment DEFINITION PUBLIC SECTION. - CONSTANTS default_right_column TYPE i VALUE 4. "#EC NOTEXT - CONSTANTS default_bottom_row TYPE i VALUE 15. "#EC NOTEXT + TYPES: + BEGIN OF ty_rtf_fragment. + INCLUDE TYPE zexcel_s_style_font AS rtf. + TYPES: + text TYPE string, + END OF ty_rtf_fragment . + TYPES: + ty_rtf_fragments TYPE STANDARD TABLE OF ty_rtf_fragment + WITH NON-UNIQUE DEFAULT KEY . + TYPES: + BEGIN OF ty_box, + left_column TYPE i, + left_offset TYPE i, + top_row TYPE i, + top_offset TYPE i, + right_column TYPE i, + right_offset TYPE i, + bottom_row TYPE i, + bottom_offset TYPE i, + END OF ty_box . + CONSTANTS: + BEGIN OF gc_default_box, + left_column TYPE i VALUE 2, + left_offset TYPE i VALUE 15, + top_row TYPE i VALUE 11, + top_offset TYPE i VALUE 10, + right_column TYPE i VALUE 4, + right_offset TYPE i VALUE 31, + bottom_row TYPE i VALUE 15, + bottom_offset TYPE i VALUE 9, + END OF gc_default_box . + + CLASS-METHODS get_default_style + RETURNING + VALUE(es_default) TYPE zexcel_s_style_font . METHODS constructor . METHODS get_bottom_offset RETURNING @@ -45,38 +78,47 @@ CLASS zcl_excel_comment DEFINITION METHODS get_top_row RETURNING VALUE(rp_result) TYPE i . + METHODS set_box + IMPORTING + !is_box TYPE ty_box . METHODS set_text IMPORTING - !ip_text TYPE string + !ip_text TYPE string OPTIONAL + !is_style TYPE zexcel_s_style_font OPTIONAL !ip_ref TYPE string OPTIONAL - !ip_left_column TYPE i DEFAULT 2 - !ip_left_offset TYPE i DEFAULT 15 - !ip_top_row TYPE i DEFAULT 11 - !ip_top_offset TYPE i DEFAULT 10 - !ip_right_column TYPE i DEFAULT default_right_column - !ip_right_offset TYPE i DEFAULT 31 - !ip_bottom_row TYPE i DEFAULT default_bottom_row - !ip_bottom_offset TYPE i DEFAULT 9. - + !ip_left_column TYPE i DEFAULT gc_default_box-left_column + !ip_left_offset TYPE i DEFAULT gc_default_box-left_offset + !ip_top_row TYPE i DEFAULT gc_default_box-top_row + !ip_top_offset TYPE i DEFAULT gc_default_box-top_offset + !ip_right_column TYPE i DEFAULT gc_default_box-right_column + !ip_right_offset TYPE i DEFAULT gc_default_box-right_offset + !ip_bottom_row TYPE i DEFAULT gc_default_box-bottom_row + !ip_bottom_offset TYPE i DEFAULT gc_default_box-bottom_offset . + METHODS get_text_rtf + RETURNING + VALUE(et_rtf) TYPE ty_rtf_fragments . + METHODS set_text_rtf + IMPORTING + !it_rtf TYPE ty_rtf_fragments OPTIONAL + !ip_ref TYPE string OPTIONAL + !is_box TYPE ty_box OPTIONAL . PROTECTED SECTION. - PRIVATE SECTION. +PRIVATE SECTION. - DATA bottom_offset TYPE i . - DATA bottom_row TYPE i . - DATA index TYPE string . - DATA ref TYPE string . - DATA left_column TYPE i . - DATA left_offset TYPE i . - DATA right_column TYPE i . - DATA right_offset TYPE i . - DATA text TYPE string . - DATA top_offset TYPE i . - DATA top_row TYPE i . + DATA index TYPE string . + DATA ref TYPE string . + DATA gt_rtf TYPE ty_rtf_fragments . + DATA gs_box TYPE ty_box . + + METHODS add_text + IMPORTING + !ip_text TYPE string + !is_style TYPE zexcel_s_style_font . ENDCLASS. -CLASS zcl_excel_comment IMPLEMENTATION. +CLASS ZCL_EXCEL_COMMENT IMPLEMENTATION. METHOD constructor. @@ -85,12 +127,12 @@ CLASS zcl_excel_comment IMPLEMENTATION. METHOD get_bottom_offset. - rp_result = bottom_offset. + rp_result = gs_box-bottom_offset. ENDMETHOD. METHOD get_bottom_row. - rp_result = bottom_row. + rp_result = gs_box-bottom_row. ENDMETHOD. @@ -100,12 +142,12 @@ CLASS zcl_excel_comment IMPLEMENTATION. METHOD get_left_column. - rp_result = left_column. + rp_result = gs_box-left_column. ENDMETHOD. METHOD get_left_offset. - rp_result = left_offset. + rp_result = gs_box-left_offset. ENDMETHOD. @@ -120,56 +162,112 @@ CLASS zcl_excel_comment IMPLEMENTATION. METHOD get_right_column. - rp_result = right_column. + rp_result = gs_box-right_column. ENDMETHOD. METHOD get_right_offset. - rp_result = right_offset. + rp_result = gs_box-right_offset. ENDMETHOD. METHOD get_text. - rp_text = me->text. + FIELD-SYMBOLS: LIKE LINE OF gt_rtf. + LOOP AT gt_rtf ASSIGNING . + CONCATENATE rp_text -text INTO rp_text. + ENDLOOP. ENDMETHOD. METHOD get_top_offset. - rp_result = top_offset. + rp_result = gs_box-top_offset. ENDMETHOD. METHOD get_top_row. - rp_result = top_row. + rp_result = gs_box-top_row. ENDMETHOD. METHOD set_text. - me->text = ip_text. IF ip_ref IS SUPPLIED. - me->ref = ip_ref. + ref = ip_ref. ENDIF. - me->left_column = ip_left_column. - me->left_offset = ip_left_offset. - - me->top_row = ip_top_row. - me->top_offset = ip_top_offset. - - IF ip_right_column IS NOT INITIAL. - me->right_column = ip_right_column. - ELSE. - me->right_column = default_right_column. +* Add a simple text with parameter IP_TEXT and style IS_STYLE + IF ip_text IS NOT INITIAL. + add_text( + ip_text = ip_text + is_style = is_style ). ENDIF. - me->right_offset = ip_right_offset. - IF ip_bottom_row IS NOT INITIAL. - me->bottom_row = ip_bottom_row. - ELSE. - me->bottom_row = default_bottom_row. - ENDIF. - me->bottom_offset = ip_bottom_offset. +* Parameters of the containing box + DATA ls_box TYPE ty_box. + ls_box-left_column = ip_left_column. + ls_box-left_offset = ip_left_offset. + ls_box-top_row = ip_top_row. + ls_box-top_offset = ip_top_offset. + ls_box-right_column = ip_right_column. + ls_box-right_offset = ip_right_offset. + ls_box-bottom_row = ip_bottom_row. + ls_box-bottom_offset = ip_bottom_offset. + set_box( ls_box ). + ENDMETHOD. + + METHOD set_box. + + gs_box = is_box. + + ENDMETHOD. + + + METHOD add_text. + + DATA ls_rtf LIKE LINE OF gt_rtf. + ls_rtf-text = ip_text. + IF is_style IS INITIAL. + ls_rtf-rtf = get_default_style( ). + ELSE. + ls_rtf-rtf = is_style. + ENDIF. + APPEND ls_rtf TO gt_rtf. + + ENDMETHOD. + + + METHOD get_default_style. + + es_default-bold = abap_true. + es_default-size = 9. + es_default-color-indexed = 81. + es_default-color-theme = zcl_excel_style_color=>c_theme_not_set. + es_default-name = `Tahoma`. + es_default-family = 2. + + ENDMETHOD. + + + method GET_TEXT_RTF. + et_rtf = gt_rtf. + endmethod. + + + METHOD set_text_rtf. + +* Set a text, consisting of differently styled parts + gt_rtf = it_rtf. + + IF ip_ref IS SUPPLIED. + ref = ip_ref. + ENDIF. + +* Parameters of the containing box + IF is_box IS SUPPLIED. + set_box( is_box ). + ENDIF. + + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_comment.clas.xml b/src/zcl_excel_comment.clas.xml index b7ce4e4..c154612 100644 --- a/src/zcl_excel_comment.clas.xml +++ b/src/zcl_excel_comment.clas.xml @@ -17,21 +17,31 @@ E CONSTRUCTOR + + GET_DEFAULT_STYLE + E + Default style for formatted parts of comment + GET_INDEX E - Get index + Get index (in commentlist zcl_excel_comments) GET_REF E - Get reference + Get cell reference GET_TEXT E Get text + + GET_TEXT_RTF + E + Get text consisting of styled parts + INDEX E @@ -42,17 +52,72 @@ E Reference to cell (eg. 'B13') + + SET_BOX + E + Set box for display + SET_TEXT E Set text - TEXT + SET_TEXT_RTF E - Comment + Set text consisting of styled parts + + + ADD_TEXT + IS_STYLE + E + Style + + + GET_DEFAULT_STYLE + ES_DEFAULT + E + Cell Font + + + SET_TEXT + IP_REF + E + Cell reference (e.g. 'A1') + + + SET_TEXT + IP_TEXT + E + Text as string + + + SET_TEXT + IS_STYLE + E + Style (for richt text comment) + + + SET_TEXT_RTF + IP_REF + E + Cell reference (e.g. 'A1') + + + SET_TEXT_RTF + IS_BOX + E + Bounding box (optional) + + + SET_TEXT_RTF + IT_RTF + E + Comment with differently styled parts + + diff --git a/src/zcl_excel_comments.clas.abap b/src/zcl_excel_comments.clas.abap index b0b897e..83740fe 100644 --- a/src/zcl_excel_comments.clas.abap +++ b/src/zcl_excel_comments.clas.abap @@ -5,6 +5,12 @@ CLASS zcl_excel_comments DEFINITION PUBLIC SECTION. + TYPES: + ty_boxes TYPE STANDARD TABLE OF zcl_excel_comment=>ty_box + WITH NON-UNIQUE DEFAULT KEY . + + DATA gv_full_vml TYPE string READ-ONLY . + METHODS add IMPORTING !ip_comment TYPE REF TO zcl_excel_comment . @@ -12,7 +18,9 @@ CLASS zcl_excel_comments DEFINITION IMPORTING !ip_comment TYPE REF TO zcl_excel_comment . METHODS clear . - METHODS constructor . + METHODS constructor + IMPORTING + !io_from TYPE REF TO zcl_excel_comments OPTIONAL . METHODS get IMPORTING !ip_index TYPE zexcel_active_worksheet @@ -30,15 +38,20 @@ CLASS zcl_excel_comments DEFINITION METHODS size RETURNING VALUE(ep_size) TYPE i . + METHODS set_boxes + IMPORTING + !it_boxes TYPE ty_boxes OPTIONAL + !iv_full_vml TYPE string OPTIONAL . PROTECTED SECTION. - PRIVATE SECTION. +PRIVATE SECTION. - DATA comments TYPE REF TO zcl_excel_collection . + DATA comments TYPE REF TO zcl_excel_collection . + DATA gt_boxes TYPE ty_boxes . ENDCLASS. -CLASS zcl_excel_comments IMPLEMENTATION. +CLASS ZCL_EXCEL_COMMENTS IMPLEMENTATION. METHOD add. @@ -57,7 +70,15 @@ CLASS zcl_excel_comments IMPLEMENTATION. METHOD constructor. - CREATE OBJECT comments. + + IF io_from IS INITIAL. + CREATE OBJECT comments. + ELSE. +* Copy constructor: copy attributes from original + comments = io_from->comments. + gt_boxes = io_from->gt_boxes. + gv_full_vml = io_from->gv_full_vml. + ENDIF. ENDMETHOD. @@ -97,4 +118,37 @@ CLASS zcl_excel_comments IMPLEMENTATION. ep_size = comments->size( ). ENDMETHOD. + + + METHOD set_boxes. + + DATA: + lo_comments TYPE REF TO zcl_excel_collection_iterator, + lo_comment TYPE REF TO zcl_excel_comment. + + FIELD-SYMBOLS: + TYPE zcl_excel_comment=>ty_box. + + IF it_boxes IS NOT INITIAL. + gt_boxes = it_boxes. + ENDIF. + + IF iv_full_vml IS NOT INITIAL. + gv_full_vml = iv_full_vml. + ENDIF. + + IF gt_boxes IS NOT INITIAL. + + lo_comments = comments->get_iterator( ). + WHILE lo_comments->has_next( ) EQ abap_true. + READ TABLE gt_boxes INDEX 1 ASSIGNING . + CHECK sy-subrc EQ 0. + lo_comment ?= lo_comments->get_next( ). + lo_comment->set_box( ). + DELETE gt_boxes INDEX 1. + ENDWHILE. + + ENDIF. + + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_comments.clas.xml b/src/zcl_excel_comments.clas.xml index 0e69781..e10f0d2 100644 --- a/src/zcl_excel_comments.clas.xml +++ b/src/zcl_excel_comments.clas.xml @@ -37,6 +37,11 @@ E Returns an iterator + + GV_FULL_VML + E + Full VML with graphics information for the comment boxes + INCLUDE E @@ -52,12 +57,25 @@ E Deletes an Element from the Collection + + SET_BOXES + E + Propagate dimensions of the info boxes to the comments + SIZE E Specifies number of contained elements + + + CONSTRUCTOR + IO_FROM + E + Create new instance from this original + + diff --git a/src/zcl_excel_common.clas.xml b/src/zcl_excel_common.clas.xml index a648e43..ed0a8b2 100644 --- a/src/zcl_excel_common.clas.xml +++ b/src/zcl_excel_common.clas.xml @@ -50,21 +50,11 @@ E Give distance between two cells - - CALCULATE_CELL_DISTANCE - I - Give distance between two cells - CHAR2HEX E Character to Hexadecimal - - CHAR2HEX - I - Character to Hexadecimal - CLASS_CONSTRUCTOR E @@ -75,91 +65,46 @@ E Convert column indicator to Alpha - - CONVERT_COLUMN2ALPHA - I - Convert column indicator to Alpha - CONVERT_COLUMN2INT E Convert column indicator to Integer - - CONVERT_COLUMN2INT - I - Convert column indicator to Integer - CONVERT_COLUMNROW2COLUMN_A_ROW E Convert ColumnRow i.e. AB34 to AB and 34 - - CONVERT_COLUMNROW2COLUMN_A_ROW - I - Convert ColumnRow i.e. AB34 to AB and 34 - CONVERT_RANGE2COLUMN_A_ROW E Converts Sheet1!AB34:CD56 to Sheet1, AB, 34, CD, 56 - - CONVERT_RANGE2COLUMN_A_ROW - I - Converts Sheet1!AB34:CD56 to Sheet1, AB, 34, CD, 56 - C_EXCEL_1900_LEAP_YEAR E Excel baseline date - - C_EXCEL_1900_LEAP_YEAR - I - Excel baseline date - C_EXCEL_BASELINE_DATE E Excel baseline date - - C_EXCEL_BASELINE_DATE - I - Excel baseline date - C_EXCEL_COL_MODULE E 2 byte integer (signed) - - C_EXCEL_COL_MODULE - I - 2 byte integer (signed) - C_EXCEL_NUMFMT_OFFSET E 2 byte integer (signed) - - C_EXCEL_NUMFMT_OFFSET - I - 2 byte integer (signed) - C_EXCEL_SHEET_MAX_COL E 2 byte integer (signed) - - C_EXCEL_SHEET_MAX_COL - I - 2 byte integer (signed) - C_EXCEL_SHEET_MAX_ROW E @@ -170,11 +115,6 @@ E 2 byte integer (signed) - - C_EXCEL_SHEET_MIN_COL - I - 2 byte integer (signed) - C_EXCEL_SHEET_MIN_ROW E @@ -185,81 +125,41 @@ E Language Key - - C_SPRAS_EN - I - Language Key - C_XLSX_FILE_FILTER E File filter - - C_XLSX_FILE_FILTER - I - File filter - DATE_TO_EXCEL_STRING E Convert date from SAP format to Excel - - DATE_TO_EXCEL_STRING - I - Convert date from SAP format to Excel - DESCRIBE_STRUCTURE E Describe database info of structure - - DESCRIBE_STRUCTURE - I - Describe database info of structure - DETERMINE_RESULTING_FORMULA E Determine formula if copied to another cell - - DETERMINE_RESULTING_FORMULA - I - Determine formula if copied to another cell - ENCRYPT_PASSWORD E Encrypt password - - ENCRYPT_PASSWORD - I - Encrypt password - ESCAPE_STRING E Escape a string - - ESCAPE_STRING - I - Escape a string - EXCEL_STRING_TO_DATE E Convert date from Excel format to SAP - - EXCEL_STRING_TO_DATE - I - Convert date from Excel format to SAP - EXCEL_STRING_TO_NUMBER E @@ -270,21 +170,11 @@ E Convert time from Excel format to SAP - - EXCEL_STRING_TO_TIME - I - Convert time from Excel format to SAP - GET_FIELDCATALOG E Creates field catalog for BIND_TABLE based on internal table - - GET_FIELDCATALOG - I - Creates field catalog for BIND_TABLE based on internal table - IS_CELL_IN_RANGE E @@ -295,51 +185,26 @@ E Converts number to string representation in Excel format - - NUMBER_TO_EXCEL_STRING - I - Converts number to string representation in Excel format - O_CONV E Code Page and Endian Conversion (System Format -> External) - - O_CONV - I - Code Page and Endian Conversion (System Format -> External) - RECURSIVE_CLASS_TO_STRUCT E Move class to structure - - RECURSIVE_CLASS_TO_STRUCT - I - Move class to structure - RECURSIVE_STRUCT_TO_CLASS E Move structure to class - - RECURSIVE_STRUCT_TO_CLASS - I - Move structure to class - SHIFT_FORMULA E Shift formula from one cell to another - - SHIFT_FORMULA - I - Shift formula from one cell to another - SHL01 E @@ -355,51 +220,26 @@ E File & Extension disconnect (clone of FM CV120_SPLIT_FILE) - - SPLIT_FILE - I - File & Extension disconnect (clone of FM CV120_SPLIT_FILE) - STRUCTURE_CASE E Case stement for recursive - - STRUCTURE_CASE - I - Case stement for recursive - STRUCTURE_RECURSIVE E Get structure details - - STRUCTURE_RECURSIVE - I - Get structure details - TIME_TO_EXCEL_STRING E Convert time from SAP format to Excel - - TIME_TO_EXCEL_STRING - I - Convert time from SAP format to Excel - UNESCAPE_STRING E Unescape - - UNESCAPE_STRING - I - Unescape - diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index 0c7c40f..e6cf8eb 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -13,361 +13,371 @@ CLASS zcl_excel_reader_2007 DEFINITION !ip_element TYPE REF TO if_ixml_element CHANGING !cp_structure TYPE any . - PROTECTED SECTION. +PROTECTED SECTION. - TYPES: + TYPES: *"* protected components of class ZCL_EXCEL_READER_2007 *"* do not include other source files here!!! - BEGIN OF t_relationship, - id TYPE string, - type TYPE string, - target TYPE string, - targetmode TYPE string, - worksheet TYPE REF TO zcl_excel_worksheet, - sheetid TYPE string, "ins #235 - repeat rows/cols - needed to identify correct sheet - localsheetid TYPE string, - END OF t_relationship . - TYPES: - BEGIN OF t_fileversion, - appname TYPE string, - lastedited TYPE string, - lowestedited TYPE string, - rupbuild TYPE string, - codename TYPE string, - END OF t_fileversion . - TYPES: - BEGIN OF t_sheet, - name TYPE string, - sheetid TYPE string, - id TYPE string, - state TYPE string, - END OF t_sheet . - TYPES: - BEGIN OF t_workbookpr, - codename TYPE string, - defaultthemeversion TYPE string, - END OF t_workbookpr . - TYPES: - BEGIN OF t_sheetpr, - codename TYPE string, - END OF t_sheetpr . - TYPES: - BEGIN OF t_range, - name TYPE string, - hidden TYPE string, "inserted with issue #235 because Autofilters didn't passthrough - localsheetid TYPE string, " issue #163 - END OF t_range . - TYPES: - t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY . - TYPES: - t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY . - TYPES: - t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY . - TYPES: - t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY . - TYPES: - BEGIN OF t_color, - indexed TYPE string, - rgb TYPE string, - theme TYPE string, - tint TYPE string, - END OF t_color . - TYPES: - BEGIN OF t_rel_drawing, - id TYPE string, - content TYPE xstring, - file_ext TYPE string, - content_xml TYPE REF TO if_ixml_document, - END OF t_rel_drawing . - TYPES: - t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY . - TYPES: - BEGIN OF gts_external_hyperlink, - id TYPE string, - target TYPE string, - END OF gts_external_hyperlink . - TYPES: - gtt_external_hyperlinks TYPE HASHED TABLE OF gts_external_hyperlink WITH UNIQUE KEY id . - TYPES: - BEGIN OF ty_ref_formulae, - sheet TYPE REF TO zcl_excel_worksheet, - row TYPE i, - column TYPE i, - si TYPE i, - ref TYPE string, - formula TYPE string, - END OF ty_ref_formulae . - TYPES: - tyt_ref_formulae TYPE HASHED TABLE OF ty_ref_formulae WITH UNIQUE KEY sheet row column . - TYPES: - BEGIN OF t_shared_string, - value TYPE string, - rtf TYPE zexcel_t_rtf, - END OF t_shared_string . - TYPES: - t_shared_strings TYPE STANDARD TABLE OF t_shared_string WITH DEFAULT KEY . - TYPES: - BEGIN OF t_table, - id TYPE string, - target TYPE string, - END OF t_table . - TYPES: - t_tables TYPE HASHED TABLE OF t_table WITH UNIQUE KEY id . + BEGIN OF t_relationship, + id TYPE string, + type TYPE string, + target TYPE string, + targetmode TYPE string, + worksheet TYPE REF TO zcl_excel_worksheet, + sheetid TYPE string, "ins #235 - repeat rows/cols - needed to identify correct sheet + localsheetid TYPE string, + END OF t_relationship . + TYPES: + BEGIN OF t_fileversion, + appname TYPE string, + lastedited TYPE string, + lowestedited TYPE string, + rupbuild TYPE string, + codename TYPE string, + END OF t_fileversion . + TYPES: + BEGIN OF t_sheet, + name TYPE string, + sheetid TYPE string, + id TYPE string, + state TYPE string, + END OF t_sheet . + TYPES: + BEGIN OF t_workbookpr, + codename TYPE string, + defaultthemeversion TYPE string, + END OF t_workbookpr . + TYPES: + BEGIN OF t_sheetpr, + codename TYPE string, + END OF t_sheetpr . + TYPES: + BEGIN OF t_range, + name TYPE string, + hidden TYPE string, "inserted with issue #235 because Autofilters didn't passthrough + localsheetid TYPE string, " issue #163 + END OF t_range . + TYPES: + t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY . + TYPES: + t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY . + TYPES: + t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY . + TYPES: + t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY . + TYPES: + BEGIN OF t_color, + indexed TYPE string, + rgb TYPE string, + theme TYPE string, + tint TYPE string, + END OF t_color . + TYPES: + BEGIN OF t_rel_drawing, + id TYPE string, + content TYPE xstring, + file_ext TYPE string, + content_xml TYPE REF TO if_ixml_document, + END OF t_rel_drawing . + TYPES: + t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY . + TYPES: + BEGIN OF gts_external_hyperlink, + id TYPE string, + target TYPE string, + END OF gts_external_hyperlink . + TYPES: + gtt_external_hyperlinks TYPE HASHED TABLE OF gts_external_hyperlink WITH UNIQUE KEY id . + TYPES: + BEGIN OF ty_ref_formulae, + sheet TYPE REF TO zcl_excel_worksheet, + row TYPE i, + column TYPE i, + si TYPE i, + ref TYPE string, + formula TYPE string, + END OF ty_ref_formulae . + TYPES: + tyt_ref_formulae TYPE HASHED TABLE OF ty_ref_formulae WITH UNIQUE KEY sheet row column . + TYPES: + BEGIN OF t_shared_string, + value TYPE string, + rtf TYPE zexcel_t_rtf, + END OF t_shared_string . + TYPES: + t_shared_strings TYPE STANDARD TABLE OF t_shared_string WITH DEFAULT KEY . + TYPES: + BEGIN OF t_table, + id TYPE string, + target TYPE string, + END OF t_table . + TYPES: + t_tables TYPE HASHED TABLE OF t_table WITH UNIQUE KEY id . - DATA shared_strings TYPE t_shared_strings . - DATA styles TYPE t_style_refs . - DATA mt_ref_formulae TYPE tyt_ref_formulae . - DATA mt_dxf_styles TYPE zexcel_t_styles_cond_mapping . + DATA shared_strings TYPE t_shared_strings . + DATA styles TYPE t_style_refs . + DATA mt_ref_formulae TYPE tyt_ref_formulae . + DATA mt_dxf_styles TYPE zexcel_t_styles_cond_mapping . + CONSTANTS: + BEGIN OF namespace, + x14ac TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac', + vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader + c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', + a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', + xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', + mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', + r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', + drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', + hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', + image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', + office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', + printer_settings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', + shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', + styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', + theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', + worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', + relationships TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', + core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', + main TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + END OF namespace . - METHODS fill_row_outlines - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS get_from_zip_archive - IMPORTING - !i_filename TYPE string - RETURNING - VALUE(r_content) TYPE xstring - RAISING - zcx_excel . - METHODS get_ixml_from_zip_archive - IMPORTING - !i_filename TYPE string - !is_normalizing TYPE abap_bool DEFAULT 'X' - RETURNING - VALUE(r_ixml) TYPE REF TO if_ixml_document - RAISING - zcx_excel . - METHODS load_drawing_anchor - IMPORTING - !io_anchor_element TYPE REF TO if_ixml_element - !io_worksheet TYPE REF TO zcl_excel_worksheet - !it_related_drawings TYPE t_rel_drawings . - METHODS load_shared_strings - IMPORTING - !ip_path TYPE string - RAISING - zcx_excel . - METHODS load_styles - IMPORTING - !ip_path TYPE string - !ip_excel TYPE REF TO zcl_excel - RAISING - zcx_excel . - METHODS load_dxf_styles - IMPORTING - !iv_path TYPE string - !io_excel TYPE REF TO zcl_excel - RAISING - zcx_excel . - METHODS load_style_borders - IMPORTING - !ip_xml TYPE REF TO if_ixml_document - RETURNING - VALUE(ep_borders) TYPE t_borders . - METHODS load_style_fills - IMPORTING - !ip_xml TYPE REF TO if_ixml_document - RETURNING - VALUE(ep_fills) TYPE t_fills . - METHODS load_style_font - IMPORTING - !io_xml_element TYPE REF TO if_ixml_element - RETURNING - VALUE(ro_font) TYPE REF TO zcl_excel_style_font . - METHODS load_style_fonts - IMPORTING - !ip_xml TYPE REF TO if_ixml_document - RETURNING - VALUE(ep_fonts) TYPE t_fonts . - METHODS load_style_num_formats - IMPORTING - !ip_xml TYPE REF TO if_ixml_document - RETURNING - VALUE(ep_num_formats) TYPE zcl_excel_style_number_format=>t_num_formats . - METHODS load_workbook - IMPORTING - !iv_workbook_full_filename TYPE string - !io_excel TYPE REF TO zcl_excel - RAISING - zcx_excel . - METHODS load_worksheet - IMPORTING - !ip_path TYPE string - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS load_worksheet_cond_format - IMPORTING - !io_ixml_worksheet TYPE REF TO if_ixml_document - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS load_worksheet_cond_format_aa - IMPORTING - !io_ixml_rule TYPE REF TO if_ixml_element - !io_style_cond TYPE REF TO zcl_excel_style_cond. - METHODS load_worksheet_cond_format_ci - IMPORTING - !io_ixml_rule TYPE REF TO if_ixml_element - !io_style_cond TYPE REF TO zcl_excel_style_cond . - METHODS load_worksheet_cond_format_cs - IMPORTING - !io_ixml_rule TYPE REF TO if_ixml_element - !io_style_cond TYPE REF TO zcl_excel_style_cond . - METHODS load_worksheet_cond_format_ex - IMPORTING - !io_ixml_rule TYPE REF TO if_ixml_element - !io_style_cond TYPE REF TO zcl_excel_style_cond . - METHODS load_worksheet_cond_format_is - IMPORTING - !io_ixml_rule TYPE REF TO if_ixml_element - !io_style_cond TYPE REF TO zcl_excel_style_cond . - METHODS load_worksheet_cond_format_db - IMPORTING - !io_ixml_rule TYPE REF TO if_ixml_element - !io_style_cond TYPE REF TO zcl_excel_style_cond . - METHODS load_worksheet_cond_format_t10 - IMPORTING - !io_ixml_rule TYPE REF TO if_ixml_element - !io_style_cond TYPE REF TO zcl_excel_style_cond . - METHODS load_worksheet_drawing - IMPORTING - !ip_path TYPE string - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS load_comments - IMPORTING - ip_path TYPE string - io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS load_worksheet_hyperlinks - IMPORTING - !io_ixml_worksheet TYPE REF TO if_ixml_document - !io_worksheet TYPE REF TO zcl_excel_worksheet - !it_external_hyperlinks TYPE gtt_external_hyperlinks - RAISING - zcx_excel . - METHODS load_worksheet_ignored_errors - IMPORTING - !io_ixml_worksheet TYPE REF TO if_ixml_document - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS load_worksheet_pagebreaks - IMPORTING - !io_ixml_worksheet TYPE REF TO if_ixml_document - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS load_worksheet_autofilter - IMPORTING - io_ixml_worksheet TYPE REF TO if_ixml_document - io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel. - METHODS load_worksheet_pagemargins - IMPORTING - !io_ixml_worksheet TYPE REF TO if_ixml_document - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - "!

Load worksheet tables

- METHODS load_worksheet_tables - IMPORTING - io_ixml_worksheet TYPE REF TO if_ixml_document - io_worksheet TYPE REF TO zcl_excel_worksheet - iv_dirname TYPE string - it_tables TYPE t_tables - RAISING - zcx_excel . - CLASS-METHODS resolve_path - IMPORTING - !ip_path TYPE string - RETURNING - VALUE(rp_result) TYPE string . - METHODS resolve_referenced_formulae . - METHODS unescape_string_value - IMPORTING - i_value TYPE string - RETURNING - VALUE(result) TYPE string. - METHODS get_dxf_style_guid - IMPORTING - !io_ixml_dxf TYPE REF TO if_ixml_element - !io_excel TYPE REF TO zcl_excel - RETURNING - VALUE(rv_style_guid) TYPE zexcel_cell_style . - METHODS load_theme - IMPORTING - iv_path TYPE string - !ip_excel TYPE REF TO zcl_excel - RAISING - zcx_excel. - METHODS provided_string_is_escaped - IMPORTING - !value TYPE string - RETURNING - VALUE(is_escaped) TYPE abap_bool. + METHODS fill_row_outlines + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS get_from_zip_archive + IMPORTING + !i_filename TYPE string + RETURNING + VALUE(r_content) TYPE xstring + RAISING + zcx_excel . + METHODS get_ixml_from_zip_archive + IMPORTING + !i_filename TYPE string + !is_normalizing TYPE abap_bool DEFAULT 'X' + RETURNING + VALUE(r_ixml) TYPE REF TO if_ixml_document + RAISING + zcx_excel . + METHODS load_drawing_anchor + IMPORTING + !io_anchor_element TYPE REF TO if_ixml_element + !io_worksheet TYPE REF TO zcl_excel_worksheet + !it_related_drawings TYPE t_rel_drawings . + METHODS load_shared_strings + IMPORTING + !ip_path TYPE string + RAISING + zcx_excel . + METHODS load_styles + IMPORTING + !ip_path TYPE string + !ip_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . + METHODS load_dxf_styles + IMPORTING + !iv_path TYPE string + !io_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . + METHODS load_style_borders + IMPORTING + !ip_xml TYPE REF TO if_ixml_document + RETURNING + VALUE(ep_borders) TYPE t_borders . + METHODS load_style_fills + IMPORTING + !ip_xml TYPE REF TO if_ixml_document + RETURNING + VALUE(ep_fills) TYPE t_fills . + METHODS load_style_font + IMPORTING + !io_xml_element TYPE REF TO if_ixml_element + RETURNING + VALUE(ro_font) TYPE REF TO zcl_excel_style_font . + METHODS load_style_fonts + IMPORTING + !ip_xml TYPE REF TO if_ixml_document + RETURNING + VALUE(ep_fonts) TYPE t_fonts . + METHODS load_style_num_formats + IMPORTING + !ip_xml TYPE REF TO if_ixml_document + RETURNING + VALUE(ep_num_formats) TYPE zcl_excel_style_number_format=>t_num_formats . + METHODS load_workbook + IMPORTING + !iv_workbook_full_filename TYPE string + !io_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . + METHODS load_worksheet + IMPORTING + !ip_path TYPE string + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS load_worksheet_cond_format + IMPORTING + !io_ixml_worksheet TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS load_worksheet_cond_format_aa + IMPORTING + !io_ixml_rule TYPE REF TO if_ixml_element + !io_style_cond TYPE REF TO zcl_excel_style_cond . + METHODS load_worksheet_cond_format_ci + IMPORTING + !io_ixml_rule TYPE REF TO if_ixml_element + !io_style_cond TYPE REF TO zcl_excel_style_cond . + METHODS load_worksheet_cond_format_cs + IMPORTING + !io_ixml_rule TYPE REF TO if_ixml_element + !io_style_cond TYPE REF TO zcl_excel_style_cond . + METHODS load_worksheet_cond_format_ex + IMPORTING + !io_ixml_rule TYPE REF TO if_ixml_element + !io_style_cond TYPE REF TO zcl_excel_style_cond . + METHODS load_worksheet_cond_format_is + IMPORTING + !io_ixml_rule TYPE REF TO if_ixml_element + !io_style_cond TYPE REF TO zcl_excel_style_cond . + METHODS load_worksheet_cond_format_db + IMPORTING + !io_ixml_rule TYPE REF TO if_ixml_element + !io_style_cond TYPE REF TO zcl_excel_style_cond . + METHODS load_worksheet_cond_format_t10 + IMPORTING + !io_ixml_rule TYPE REF TO if_ixml_element + !io_style_cond TYPE REF TO zcl_excel_style_cond . + METHODS load_worksheet_drawing + IMPORTING + !ip_path TYPE string + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS load_comments + IMPORTING + !ip_path TYPE string + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS load_worksheet_hyperlinks + IMPORTING + !io_ixml_worksheet TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + !it_external_hyperlinks TYPE gtt_external_hyperlinks + RAISING + zcx_excel . + METHODS load_worksheet_ignored_errors + IMPORTING + !io_ixml_worksheet TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS load_worksheet_pagebreaks + IMPORTING + !io_ixml_worksheet TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS load_worksheet_autofilter + IMPORTING + !io_ixml_worksheet TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS load_worksheet_pagemargins + IMPORTING + !io_ixml_worksheet TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + "!

Load worksheet tables

+ METHODS load_worksheet_tables + IMPORTING + !io_ixml_worksheet TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + !iv_dirname TYPE string + !it_tables TYPE t_tables + RAISING + zcx_excel . + CLASS-METHODS resolve_path + IMPORTING + !ip_path TYPE string + RETURNING + VALUE(rp_result) TYPE string . + METHODS resolve_referenced_formulae . + METHODS unescape_string_value + IMPORTING + !i_value TYPE string + RETURNING + VALUE(result) TYPE string . + METHODS get_dxf_style_guid + IMPORTING + !io_ixml_dxf TYPE REF TO if_ixml_element + !io_excel TYPE REF TO zcl_excel + RETURNING + VALUE(rv_style_guid) TYPE zexcel_cell_style . + METHODS load_theme + IMPORTING + !iv_path TYPE string + !ip_excel TYPE REF TO zcl_excel + RAISING + zcx_excel . + METHODS provided_string_is_escaped + IMPORTING + !value TYPE string + RETURNING + VALUE(is_escaped) TYPE abap_bool . + METHODS load_comment_boxes + IMPORTING + !ip_path TYPE string + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . +PRIVATE SECTION. - CONSTANTS: BEGIN OF namespace, - x14ac TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac', - vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader - c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart', - a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main', - xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', - mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006', - r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', - chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart', - drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', - office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', - printer_settings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings', - shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', - styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', - theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', - worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', - relationships TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships', - core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', - main TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - END OF namespace. + DATA zip TYPE REF TO lcl_zip_archive . + DATA gid TYPE i . - PRIVATE SECTION. - - DATA zip TYPE REF TO lcl_zip_archive . - DATA: gid TYPE i. - - METHODS create_zip_archive - IMPORTING - !i_xlsx_binary TYPE xstring - !i_use_alternate_zip TYPE seoclsname OPTIONAL - RETURNING - VALUE(e_zip) TYPE REF TO lcl_zip_archive - RAISING - zcx_excel . - METHODS read_from_applserver - IMPORTING - !i_filename TYPE csequence - RETURNING - VALUE(r_excel_data) TYPE xstring - RAISING - zcx_excel. - METHODS read_from_local_file - IMPORTING - !i_filename TYPE csequence - RETURNING - VALUE(r_excel_data) TYPE xstring - RAISING - zcx_excel . + METHODS load_single_comment + IMPORTING + !io_node_comment TYPE REF TO if_ixml_element + RETURNING + VALUE(eo_comment) TYPE REF TO zcl_excel_comment . + METHODS create_zip_archive + IMPORTING + !i_xlsx_binary TYPE xstring + !i_use_alternate_zip TYPE seoclsname OPTIONAL + RETURNING + VALUE(e_zip) TYPE REF TO lcl_zip_archive + RAISING + zcx_excel . + METHODS read_from_applserver + IMPORTING + !i_filename TYPE csequence + RETURNING + VALUE(r_excel_data) TYPE xstring + RAISING + zcx_excel . + METHODS read_from_local_file + IMPORTING + !i_filename TYPE csequence + RETURNING + VALUE(r_excel_data) TYPE xstring + RAISING + zcx_excel . ENDCLASS. -CLASS zcl_excel_reader_2007 IMPLEMENTATION. +CLASS ZCL_EXCEL_READER_2007 IMPLEMENTATION. METHOD create_zip_archive. @@ -2267,7 +2277,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. workbookviewid TYPE string, showrowcolheaders TYPE string, righttoleft TYPE string, - topleftcell TYPE string, + topleftcell TYPE string, END OF lty_sheetview. TYPES: BEGIN OF lty_mergecell, @@ -2338,13 +2348,14 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. - CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', - lc_xml_attr_true_int TYPE string VALUE '1', - lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', - lc_rel_hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', - lc_rel_comments TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments', - lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. - CONSTANTS lc_rel_table TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table'. + CONSTANTS: lc_xml_attr_true TYPE string VALUE `true`, + lc_xml_attr_true_int TYPE string VALUE `1`, + lc_rel_drawing TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing`, + lc_rel_vmldrawing TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing`, + lc_rel_hyperlink TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink`, + lc_rel_comments TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments`, + lc_rel_printer TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings`. + CONSTANTS lc_rel_table TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/table`. DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, lo_ixml_cells TYPE REF TO if_ixml_node_collection, @@ -2493,10 +2504,19 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. * in the "load_worksheet_drawing" shouldn't lead to an abortion of the reading TRY. me->load_worksheet_drawing( ip_path = lv_path - io_worksheet = io_worksheet ). + io_worksheet = io_worksheet ). CATCH zcx_excel. "--> then ignore it ENDTRY. + WHEN lc_rel_vmldrawing. +* This file contains the dimensions of the boxes in which comments are displayed + TRY. + me->load_comment_boxes( ip_path = lv_path + io_worksheet = io_worksheet ). + CATCH zcx_excel. "--> then ignore it (boxes will get default values) + ENDTRY. + + WHEN lc_rel_printer. " Read Printer settings @@ -3669,48 +3689,31 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. ENDMETHOD. + METHOD load_comments. - DATA: lo_comments_xml TYPE REF TO if_ixml_document, - lo_node_comment TYPE REF TO if_ixml_element, - lo_node_comment_child TYPE REF TO if_ixml_element, - lo_node_r_child_t TYPE REF TO if_ixml_element, - lo_attr TYPE REF TO if_ixml_attribute, - lo_comment TYPE REF TO zcl_excel_comment, - lv_comment_text TYPE string, - lv_node_value TYPE string, - lv_attr_value TYPE string. - lo_comments_xml = me->get_ixml_from_zip_archive( ip_path ). + DATA: + lo_comments_xml TYPE REF TO if_ixml_document, + lo_node_comment TYPE REF TO if_ixml_element, + lo_comment TYPE REF TO zcl_excel_comment. - lo_node_comment ?= lo_comments_xml->find_from_name_ns( name = 'comment' uri = namespace-main ). + lo_comments_xml = get_ixml_from_zip_archive( i_filename = ip_path is_normalizing = abap_false ). + lo_node_comment = lo_comments_xml->find_from_name_ns( name = 'comment' uri = namespace-main ). WHILE lo_node_comment IS BOUND. - CLEAR lv_comment_text. - lo_attr = lo_node_comment->get_attribute_node_ns( name = 'ref' ). - lv_attr_value = lo_attr->get_value( ). - - lo_node_comment_child ?= lo_node_comment->get_first_child( ). - WHILE lo_node_comment_child IS BOUND. - " There will be rPr nodes here, but we do not support them - " in comments right now; see 'load_shared_strings' for handling. - " Extract the ... part of each -tag - lo_node_r_child_t ?= lo_node_comment_child->find_from_name_ns( name = 't' uri = namespace-main ). - IF lo_node_r_child_t IS BOUND. - lv_node_value = lo_node_r_child_t->get_value( ). - CONCATENATE lv_comment_text lv_node_value INTO lv_comment_text RESPECTING BLANKS. - ENDIF. - lo_node_comment_child ?= lo_node_comment_child->get_next( ). - ENDWHILE. - - CREATE OBJECT lo_comment. - lo_comment->set_text( ip_ref = lv_attr_value ip_text = lv_comment_text ). + lo_comment = load_single_comment( lo_node_comment ). io_worksheet->add_comment( lo_comment ). lo_node_comment ?= lo_node_comment->get_next( ). ENDWHILE. +* If the comment boxes had been loaded before the comments themselves, +* the box dimensions have to be propagated now into the individual comments + io_worksheet->set_comment_boxes( ). + ENDMETHOD. + METHOD load_worksheet_hyperlinks. DATA: lo_ixml_hyperlinks TYPE REF TO if_ixml_node_collection, @@ -4459,6 +4462,8 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. iv_zcl_excel_classname = iv_zcl_excel_classname ). ENDMETHOD. + + METHOD provided_string_is_escaped. "Check if passed value is really an escaped Character @@ -4474,4 +4479,147 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION. ENDIF. ENDMETHOD. + + METHOD load_comment_boxes. + + CONSTANTS: + BEGIN OF lc_namespace, + vml TYPE string VALUE `urn:schemas-microsoft-com:vml`, + excel TYPE string VALUE `urn:schemas-microsoft-com:office:excel`, + END OF lc_namespace. + + DATA: + lo_anchor TYPE REF TO if_ixml_element, + lo_shape TYPE REF TO if_ixml_element, + lo_shapes TYPE REF TO if_ixml_node_collection, + lo_vml TYPE REF TO if_ixml_document, + lv_vml TYPE string, + ls_box TYPE zcl_excel_comment=>ty_box, + lt_boxes TYPE zcl_excel_comments=>ty_boxes, + lt_dims TYPE stringtab, + lv_dims TYPE string, + lv_dim TYPE string, + lv_shape_index TYPE i, + lv_total_shapes TYPE i, + lo_xml TYPE REF TO if_ixml, + lo_stream_factory TYPE REF TO if_ixml_stream_factory, + lo_stream type ref to if_ixml_ostream. + + FIELD-SYMBOLS: + TYPE i. + + lo_vml = get_ixml_from_zip_archive( ip_path ). + + lo_shapes = lo_vml->get_elements_by_tag_name_ns( + name = `shape` + uri = lc_namespace-vml + ). + + lv_total_shapes = lo_shapes->get_length( ). + WHILE lv_shape_index < lv_total_shapes. + lo_shape ?= lo_shapes->get_item( lv_shape_index ). + CLEAR ls_box. + lo_anchor ?= lo_shape->find_from_name_ns( name = `Anchor` uri = lc_namespace-excel ). + IF lo_anchor IS BOUND. + lv_dims = lo_anchor->get_value( ). + SPLIT lv_dims AT `,` INTO TABLE lt_dims. + LOOP AT lt_dims INTO lv_dim. + ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_box TO . + CHECK sy-subrc EQ 0. + TRY. + = lv_dim. + CATCH cx_sy_conversion_error. + ENDTRY. + ENDLOOP. + APPEND ls_box TO lt_boxes. + ENDIF. + + ADD 1 TO lv_shape_index. + ENDWHILE. + +* Serialize lo_vml into a string lv_vml and pass it to the comments object + lo_xml ?= cl_ixml=>create( ). + lo_stream_factory = lo_xml->create_stream_factory( ). + lo_stream = lo_stream_factory->create_ostream_cstring( lv_vml ). + lo_vml->render( lo_stream ). + + IF lt_boxes IS NOT INITIAL. + io_worksheet->set_comment_boxes( it_boxes = lt_boxes iv_full_vml = lv_vml ). + ENDIF. + + + ENDMETHOD. + + + METHOD load_single_comment. + +* Example +* +* +* +* +* +* +* +* +* +* +* +* Info: +* +* +* +* +* +* +* +* +* Demo Text +* +* ... + + + DATA: + lo_attr TYPE REF TO if_ixml_attribute, + lv_comment_text TYPE string, + lv_ref TYPE string. + + CREATE OBJECT eo_comment. + + lo_attr = io_node_comment->get_attribute_node_ns( name = 'ref' ). + lv_ref = lo_attr->get_value( ). + + DATA: + lo_rs TYPE REF TO if_ixml_node_collection, + lo_r TYPE REF TO if_ixml_element, + lo_t TYPE REF TO if_ixml_element, + lo_rpr TYPE REF TO if_ixml_element, + lo_font TYPE REF TO zcl_excel_style_font, + ls_rtf TYPE zcl_excel_comment=>ty_rtf_fragment, + lt_rtf type zcl_excel_comment=>ty_rtf_fragments, + lv_r_index TYPE i, + lv_total_r TYPE i. + + lo_rs = io_node_comment->get_elements_by_tag_name_ns( name = `r` uri = namespace-main ). + lv_total_r = lo_rs->get_length( ). + WHILE lv_r_index < lv_total_r. + CLEAR: + ls_rtf. + lo_r ?= lo_rs->get_item( lv_r_index ). + lo_rpr ?= lo_r->find_from_name_ns( name = `rPr` uri = namespace-main ). + IF lo_rpr IS BOUND. + lo_font = load_style_font( lo_rpr ). + ls_rtf-rtf = lo_font->get_structure( ). + ENDIF. + lo_t ?= lo_r->find_from_name_ns( name = `t` uri = namespace-main ). + IF lo_t IS BOUND. + ls_rtf-text = lo_t->get_value( ). + ENDIF. + append ls_rtf to lt_rtf. + add 1 to lv_r_index. + ENDWHILE. + + eo_comment->set_text_rtf( ip_ref = lv_ref it_rtf = lt_rtf ). + + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_reader_2007.clas.xml b/src/zcl_excel_reader_2007.clas.xml index e03ffa7..41abc63 100644 --- a/src/zcl_excel_reader_2007.clas.xml +++ b/src/zcl_excel_reader_2007.clas.xml @@ -48,11 +48,6 @@ E Fills structure fields based on XML node attributes - - FILL_STRUCT_FROM_ATTRIBUTES - I - Fills structure fields based on XML node attributes - GET_DXF_STYLE_GUID E @@ -63,21 +58,11 @@ E Read file from ZIP Archive - - GET_FROM_ZIP_ARCHIVE - I - Read file from ZIP Archive - GET_IXML_FROM_ZIP_ARCHIVE E Read file from ZIP Archive and convert to ixml document - - GET_IXML_FROM_ZIP_ARCHIVE - I - Read file from ZIP Archive - GTS_EXTERNAL_HYPERLINK E @@ -89,14 +74,14 @@ Table with external hyperlinks - LOAD_DRAWING_ANCHOR + LOAD_COMMENT_BOXES E - Loads drawing anchor + Loads worksheet drawings LOAD_DRAWING_ANCHOR - I - Loads worksheet + E + Loads drawing anchor LOAD_DXF_STYLES @@ -108,61 +93,31 @@ E Loads shared strings table - - LOAD_SHARED_STRINGS - I - Loads shared strings table - LOAD_STYLES E Loads styles - - LOAD_STYLES - I - Loads styles - LOAD_STYLE_BORDERS E Loads 'borders' part of styles - - LOAD_STYLE_BORDERS - I - Loads 'borders' part of styles - LOAD_STYLE_FILLS E Loads 'fills' part of styles - - LOAD_STYLE_FILLS - I - Loads 'fills' part of styles - LOAD_STYLE_FONTS E Loads 'fonts' part of styles - - LOAD_STYLE_FONTS - I - Loads 'fonts' part of styles - LOAD_STYLE_NUM_FORMATS E Loads 'number format' part of styles - - LOAD_STYLE_NUM_FORMATS - I - Loads 'number format' part of styles - LOAD_THEME E @@ -173,21 +128,11 @@ E Loads workbook - - LOAD_WORKBOOK - I - Loads workbook - LOAD_WORKSHEET E Loads worksheet - - LOAD_WORKSHEET - I - Loads worksheet - LOAD_WORKSHEET_COND_FORMAT E @@ -233,11 +178,6 @@ E Loads worksheet drawings - - LOAD_WORKSHEET_DRAWING - I - Loads worksheet drawings - LOAD_WORKSHEET_HYPERLINKS E @@ -268,11 +208,6 @@ E Referenced formulae before resolving - - MT_REF_FORMULAE - I - Referenced formulae before resolving - READ_FROM_APPLSERVER E @@ -288,42 +223,36 @@ E Return path after ../ values are removed - - RESOLVE_PATH - I - Return path after ../ values are removed - RESOLVE_REFERENCED_FORMULAE E Resolve referenced formulae - - RESOLVE_REFERENCED_FORMULAE - I - Resolve referenced formulae - SHARED_STRINGS E Table with Strings - - SHARED_STRINGS - I - Table with Strings - ZIP E Zip Utility - - ZIP - I - Zip Utility - + + + LOAD_SINGLE_COMMENT + EO_COMMENT + E + Comment + + + LOAD_SINGLE_COMMENT + IO_NODE_COMMENT + E + Element of an XML Document + + diff --git a/src/zcl_excel_style_number_format.clas.xml b/src/zcl_excel_style_number_format.clas.xml index 8018385..5e8c6bc 100644 --- a/src/zcl_excel_style_number_format.clas.xml +++ b/src/zcl_excel_style_number_format.clas.xml @@ -22,21 +22,11 @@ E CONSTRUCTOR - - CONSTRUCTOR - I - CONSTRUCTOR - C_FORMAT_CURRENCY_EUR_SIMPLE E Number format - - C_FORMAT_CURRENCY_EUR_SIMPLE - I - Number format - C_FORMAT_CURRENCY_SIMPLE E @@ -62,231 +52,116 @@ E Number format - - C_FORMAT_CURRENCY_USD - I - Number format - C_FORMAT_CURRENCY_USD_SIMPLE E Number format - - C_FORMAT_CURRENCY_USD_SIMPLE - I - Number format - C_FORMAT_DATE_DATETIME E Number format - - C_FORMAT_DATE_DATETIME - I - Number format - C_FORMAT_DATE_DDMMYYYY E Number format - - C_FORMAT_DATE_DDMMYYYY - I - Number format - C_FORMAT_DATE_DDMMYYYYDOT E Number format - - C_FORMAT_DATE_DDMMYYYYDOT - I - Number format - C_FORMAT_DATE_DMMINUS E Number format - - C_FORMAT_DATE_DMMINUS - I - Number format - C_FORMAT_DATE_DMYMINUS E Number format - - C_FORMAT_DATE_DMYMINUS - I - Number format - C_FORMAT_DATE_DMYSLASH E Number format - - C_FORMAT_DATE_DMYSLASH - I - Number format - C_FORMAT_DATE_MYMINUS E Number format - - C_FORMAT_DATE_MYMINUS - I - Number format - C_FORMAT_DATE_STD E Number format - - C_FORMAT_DATE_STD - I - Number format - C_FORMAT_DATE_TIME1 E Number format - - C_FORMAT_DATE_TIME1 - I - Number format - C_FORMAT_DATE_TIME2 E Number format - - C_FORMAT_DATE_TIME2 - I - Number format - C_FORMAT_DATE_TIME3 E Number format - - C_FORMAT_DATE_TIME3 - I - Number format - C_FORMAT_DATE_TIME4 E Number format - - C_FORMAT_DATE_TIME4 - I - Number format - C_FORMAT_DATE_TIME5 E Number format - - C_FORMAT_DATE_TIME5 - I - Number format - C_FORMAT_DATE_TIME6 E Number format - - C_FORMAT_DATE_TIME6 - I - Number format - C_FORMAT_DATE_TIME7 E Number format - - C_FORMAT_DATE_TIME7 - I - Number format - C_FORMAT_DATE_TIME8 E Number format - - C_FORMAT_DATE_TIME8 - I - Number format - C_FORMAT_DATE_XLSX14 E Number format - - C_FORMAT_DATE_XLSX14 - I - Number format - C_FORMAT_DATE_XLSX15 E Number format - - C_FORMAT_DATE_XLSX15 - I - Number format - C_FORMAT_DATE_XLSX16 E Number format - - C_FORMAT_DATE_XLSX16 - I - Number format - C_FORMAT_DATE_XLSX17 E Number format - - C_FORMAT_DATE_XLSX17 - I - Number format - C_FORMAT_DATE_XLSX22 E Number format - - C_FORMAT_DATE_XLSX22 - I - Number format - C_FORMAT_DATE_XLSX45 E @@ -307,61 +182,31 @@ E Number format - - C_FORMAT_DATE_YYMMDD - I - Number format - C_FORMAT_DATE_YYMMDDMINUS E Number format - - C_FORMAT_DATE_YYMMDDMINUS - I - Number format - C_FORMAT_DATE_YYMMDDSLASH E Number format - - C_FORMAT_DATE_YYMMDDSLASH - I - Number format - C_FORMAT_DATE_YYYYMMDD E Number format - - C_FORMAT_DATE_YYYYMMDD - I - Number format - C_FORMAT_DATE_YYYYMMDDMINUS E Number format - - C_FORMAT_DATE_YYYYMMDDMINUS - I - Number format - C_FORMAT_DATE_YYYYMMDDSLASH E Number format - - C_FORMAT_DATE_YYYYMMDDSLASH - I - Number format - C_FORMAT_FRACTION_1 E @@ -377,31 +222,16 @@ E Number format - - C_FORMAT_GENERAL - I - Number format - C_FORMAT_NUMBER E Number format - - C_FORMAT_NUMBER - I - Number format - C_FORMAT_NUMBER_00 E Number format - - C_FORMAT_NUMBER_00 - I - Number format - C_FORMAT_NUMBER_COMMA_SEP0 E @@ -412,51 +242,26 @@ E Number format - - C_FORMAT_NUMBER_COMMA_SEP1 - I - Number format - C_FORMAT_NUMBER_COMMA_SEP2 E Number format - - C_FORMAT_NUMBER_COMMA_SEP2 - I - Number format - C_FORMAT_NUMC_STD E Number format - - C_FORMAT_NUMC_STD - I - Number format - C_FORMAT_PERCENTAGE E Number format - - C_FORMAT_PERCENTAGE - I - Number format - C_FORMAT_PERCENTAGE_00 E Number format - - C_FORMAT_PERCENTAGE_00 - I - Number format - C_FORMAT_SCIENTIFIC E @@ -472,11 +277,6 @@ E Number format - - C_FORMAT_TEXT - I - Number format - C_FORMAT_XLSX37 E @@ -522,11 +322,6 @@ E Number format - - FORMAT_CODE - I - Number format - MT_BUILT_IN_NUM_FORMATS E diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index a4a2376..5a965b0 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -3,13 +3,13 @@ CLASS zcl_excel_worksheet DEFINITION CREATE PUBLIC . PUBLIC SECTION. + *"* public components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! *"* protected components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! *"* protected components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! - INTERFACES zif_excel_sheet_printsettings . INTERFACES zif_excel_sheet_properties . INTERFACES zif_excel_sheet_protection . @@ -21,8 +21,9 @@ CLASS zcl_excel_worksheet DEFINITION row_to TYPE i, collapsed TYPE abap_bool, END OF mty_s_outline_row . - TYPES: mty_ts_outlines_row TYPE SORTED TABLE OF mty_s_outline_row WITH UNIQUE KEY primary_key COMPONENTS row_from row_to - WITH NON-UNIQUE SORTED KEY row_to COMPONENTS row_to collapsed. + TYPES: + mty_ts_outlines_row TYPE SORTED TABLE OF mty_s_outline_row WITH UNIQUE KEY primary_key COMPONENTS row_from row_to + WITH NON-UNIQUE SORTED KEY row_to COMPONENTS row_to collapsed . TYPES: BEGIN OF mty_s_ignored_errors, "! Cell reference (e.g. "A1") or list like "A1 A2" or range "A1:G1" @@ -62,8 +63,8 @@ CLASS zcl_excel_worksheet DEFINITION END OF mty_s_column_formula . TYPES: mty_th_column_formula - TYPE HASHED TABLE OF mty_s_column_formula - WITH UNIQUE KEY id . + TYPE HASHED TABLE OF mty_s_column_formula + WITH UNIQUE KEY id . TYPES: ty_doc_url TYPE c LENGTH 255 . TYPES: @@ -74,8 +75,7 @@ CLASS zcl_excel_worksheet DEFINITION col_to TYPE i, END OF mty_merge . TYPES: - mty_ts_merge TYPE SORTED TABLE OF mty_merge WITH UNIQUE KEY table_line. - + mty_ts_merge TYPE SORTED TABLE OF mty_merge WITH UNIQUE KEY table_line . TYPES: ty_area TYPE c LENGTH 1 . @@ -103,8 +103,8 @@ CLASS zcl_excel_worksheet DEFINITION formula_in_other_column TYPE string, END OF c_messages . DATA mt_merged_cells TYPE mty_ts_merge READ-ONLY . - DATA pane_top_left_cell TYPE string READ-ONLY. - DATA sheetview_top_left_cell TYPE string READ-ONLY. + DATA pane_top_left_cell TYPE string READ-ONLY . + DATA sheetview_top_left_cell TYPE string READ-ONLY . METHODS add_comment IMPORTING @@ -548,15 +548,15 @@ CLASS zcl_excel_worksheet DEFINITION !ip_row TYPE zexcel_cell_row OPTIONAL !ip_row_to TYPE zexcel_cell_row OPTIONAL !ip_style TYPE any OPTIONAL - !ip_value TYPE simple OPTIONAL "added parameter - !ip_formula TYPE zexcel_cell_formula OPTIONAL "added parameter + !ip_value TYPE simple OPTIONAL "added parameter + !ip_formula TYPE zexcel_cell_formula OPTIONAL "added parameter RAISING zcx_excel . METHODS set_pane_top_left_cell IMPORTING !iv_columnrow TYPE csequence RAISING - zcx_excel. + zcx_excel . METHODS set_print_gridlines IMPORTING !i_print_gridlines TYPE zexcel_print_gridlines . @@ -577,7 +577,7 @@ CLASS zcl_excel_worksheet DEFINITION IMPORTING !iv_columnrow TYPE csequence RAISING - zcx_excel. + zcx_excel . METHODS set_show_gridlines IMPORTING !i_show_gridlines TYPE zexcel_show_gridlines . @@ -694,6 +694,10 @@ CLASS zcl_excel_worksheet DEFINITION !er_data TYPE REF TO data RAISING zcx_excel . + METHODS set_comment_boxes + IMPORTING + !it_boxes TYPE zcl_excel_comments=>ty_boxes OPTIONAL + !iv_full_vml TYPE string OPTIONAL . PROTECTED SECTION. METHODS set_table_reference IMPORTING @@ -857,7 +861,7 @@ ENDCLASS. -CLASS zcl_excel_worksheet IMPLEMENTATION. +CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION. METHOD add_comment. @@ -2612,16 +2616,11 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD get_comments. - DATA: lo_comment TYPE REF TO zcl_excel_comment, - lo_iterator TYPE REF TO zcl_excel_collection_iterator. - CREATE OBJECT r_comments. - - lo_iterator = comments->get_iterator( ). - WHILE lo_iterator->has_next( ) = abap_true. - lo_comment ?= lo_iterator->get_next( ). - r_comments->include( lo_comment ). - ENDWHILE. +* Create a copy of the comments attribute + CREATE OBJECT r_comments + EXPORTING + io_from = comments. ENDMETHOD. "get_comments @@ -4869,4 +4868,9 @@ CLASS zcl_excel_worksheet IMPLEMENTATION. METHOD zif_excel_sheet_vba_project~set_codename_pr. me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. ENDMETHOD. "ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR + + + method SET_COMMENT_BOXES. + comments->set_boxes( it_boxes = it_boxes iv_full_vml = iv_full_vml ). + endmethod. ENDCLASS. diff --git a/src/zcl_excel_worksheet.clas.xml b/src/zcl_excel_worksheet.clas.xml index b436cfc..f66eab1 100644 --- a/src/zcl_excel_worksheet.clas.xml +++ b/src/zcl_excel_worksheet.clas.xml @@ -68,21 +68,11 @@ E Version Number Component - - ACTIVE_CELL - I - Version Number Component - ADD_DRAWING E Add drawing to the sheet - - ADD_DRAWING - I - Add drawing to the sheet - ADD_NEW_COLUMN E @@ -93,21 +83,11 @@ E Creates a new data validation - - ADD_NEW_DATA_VALIDATION - I - Creates a new data validation - ADD_NEW_RANGE E Create a new local range - - ADD_NEW_RANGE - I - Create a new local range - ADD_NEW_ROW E @@ -123,51 +103,26 @@ E Set cell value from ALV object - - BIND_ALV - I - Set cell value from ALV object - BIND_ALV_OLE2 E Set cell value from ALV object (OLE2) - - BIND_ALV_OLE2 - I - Set cell value from ALV object (OLE2) - BIND_TABLE E Set cell value from a table - - BIND_TABLE - I - Set cell value from a table - CALCULATE_CELL_WIDTH E Calculate width of cell - - CALCULATE_CELL_WIDTH - I - Calculate width of cell - CALCULATE_COLUMN_WIDTHS E Calculate widths for auto-size columns - - CALCULATE_COLUMN_WIDTHS - I - Calculate widths for auto-size columns - CHANGE_AREA_STYLE E @@ -178,21 +133,11 @@ E Change cell style - - CHANGE_CELL_STYLE - I - Change cell style - CHARTS E Charts collection - - CHARTS - I - Charts collection - COLUMNS E @@ -208,81 +153,41 @@ E CONSTRUCTOR - - CONSTRUCTOR - I - CONSTRUCTOR - C_BREAK_COLUMN E Worksheet Break - - C_BREAK_COLUMN - I - Worksheet Break - C_BREAK_NONE E Worksheet Break - - C_BREAK_NONE - I - Worksheet Break - C_BREAK_ROW E Worksheet Break - - C_BREAK_ROW - I - Worksheet Break - DATA_VALIDATIONS E Data validations collection - - DATA_VALIDATIONS - I - Data validations collection - DEFAULT_EXCEL_DATE_FORMAT E Date format used in case style is not provide for D fields - - DEFAULT_EXCEL_DATE_FORMAT - I - Date format used in case style is not provide for D fields - DEFAULT_EXCEL_TIME_FORMAT E Date format used in case style is not provide for D fields - - DEFAULT_EXCEL_TIME_FORMAT - I - Date format used in case style is not provide for D fields - DELETE_MERGE E Delete the used merges - - DELETE_MERGE - I - Delete the used merges - DELETE_ROW_OUTLINE E @@ -293,71 +198,36 @@ E Drawings collection - - DRAWINGS - I - Drawings collection - FREEZE_PANES E Freeze panes for supplied number of rows and/or columns - - FREEZE_PANES - I - Freeze panes for supplied number of rows and/or columns - FREEZE_PANE_CELL_COLUMN E Cell Column - - FREEZE_PANE_CELL_COLUMN - I - Cell Column - FREEZE_PANE_CELL_ROW E Cell Row - - FREEZE_PANE_CELL_ROW - I - Cell Row - GENERATE_TITLE E Generate title for worksheet (called if none is supplied ) - - GENERATE_TITLE - I - Generate title for worksheet (called if none is supplied ) - GET_ACTIVE_CELL E Get used range dimension - - GET_ACTIVE_CELL - I - Get used range dimension - GET_CELL E Get cell value - - GET_CELL - I - Get cell value - GET_COLUMN E @@ -378,21 +248,11 @@ E Get data validation iterator - - GET_DATA_VALIDATIONS_ITERATOR - I - Get conditional styles iterator - GET_DATA_VALIDATIONS_SIZE E Get the number of data validation objects - - GET_DATA_VALIDATIONS_SIZE - I - Get the number of data validation objects - GET_DEFAULT_COLUMN E @@ -403,21 +263,11 @@ E Gets default date format - - GET_DEFAULT_EXCEL_DATE_FORMAT - I - Gets default date format - GET_DEFAULT_EXCEL_TIME_FORMAT E Gets default time format - - GET_DEFAULT_EXCEL_TIME_FORMAT - I - Gets default time format - GET_DEFAULT_ROW E @@ -428,51 +278,26 @@ E Get used range dimension - - GET_DIMENSION_RANGE - I - Get used range dimension - GET_DRAWINGS E Gets drawing attached to the sheet - - GET_DRAWINGS - I - Gets drawing attached to the sheet - GET_DRAWINGS_ITERATOR E Get iterator for drawings collection - - GET_DRAWINGS_ITERATOR - I - Get iterator for drawings collection - GET_FREEZE_CELL E Gets the coordinates of cell determining freeze panes - - GET_FREEZE_CELL - I - Gets the coordinates of cell determining freeze panes - GET_GUID E Get sheet guid - - GET_GUID - I - Get sheet guid - GET_HEADER_FOOTER_DRAWINGS E @@ -483,31 +308,16 @@ E Get iterator for links collection - - GET_HYPERLINKS_ITERATOR - I - Get iterator for links collection - GET_HYPERLINKS_SIZE E Gets the size of links collection - - GET_HYPERLINKS_SIZE - I - Gets the size of links collection - GET_MERGE E Get the merge range - - GET_MERGE - I - Get the merge range - GET_PAGEBREAKS E @@ -518,11 +328,6 @@ E Get ranges iterator - - GET_RANGES_ITERATOR - I - Get ranges iterator - GET_ROW E @@ -558,71 +363,36 @@ E get tabcolor - - GET_TABCOLOR - I - get tabcolor - GET_TABLES_ITERATOR E Get iterator for tables collection - - GET_TABLES_ITERATOR - I - Get iterator for tables collection - GET_TABLES_SIZE E Gets the size of tables collection - - GET_TABLES_SIZE - I - Gets the size of tables collection - GET_TITLE E Get WorkSheet Title - - GET_TITLE - I - Get WorkSheet Title - GET_VALUE_TYPE E Get abap type kind and apply conversion routine - - GET_VALUE_TYPE - I - Get abap type kind and apply conversion routine - GUID E GUID in 'RAW' format - - GUID - I - GUID in 'RAW' format - HYPERLINKS E Colletion of hyperlinks - - HYPERLINKS - I - Colletion of hyperlinks - IS_CELL_MERGED E @@ -633,11 +403,6 @@ E Bottom right range cell - - LOWER_CELL - I - Bottom right range cell - MO_PAGEBREAKS E @@ -678,71 +443,36 @@ E Print Gridlines - - PRINT_GRIDLINES - I - Print Gridlines - PRINT_TITLE_COL_FROM E Cell Column - - PRINT_TITLE_COL_FROM - I - Cell Column - PRINT_TITLE_COL_TO E Cell Column - - PRINT_TITLE_COL_TO - I - Cell Column - PRINT_TITLE_ROW_FROM E Cell Row - - PRINT_TITLE_ROW_FROM - I - Cell Row - PRINT_TITLE_ROW_TO E Cell Row - - PRINT_TITLE_ROW_TO - I - Cell Row - PRINT_TITLE_SET_RANGE E Update range for print title - - PRINT_TITLE_SET_RANGE - I - Update range for print title - RANGES E Ranges collection - - RANGES - I - Ranges collection - ROWS E @@ -758,81 +488,46 @@ E Set cell value - - SET_CELL - I - Set cell value - SET_CELL_FORMULA E Set cell formula - - SET_CELL_FORMULA - I - Set cell formula - SET_CELL_STYLE E Set cell style - - SET_CELL_STYLE - I - Set cell style - SET_COLUMN_WIDTH E Set column width - SET_COLUMN_WIDTH - I - Set column width + SET_COMMENT_BOXES + E + Set dimensions of info boxes for comments SET_DEFAULT_EXCEL_DATE_FORMAT E Sets default date format - - SET_DEFAULT_EXCEL_DATE_FORMAT - I - Sets default date format - SET_MERGE E Set the merge range - - SET_MERGE - I - Set the merge range - SET_PRINT_GRIDLINES E Set print gridlines - - SET_PRINT_GRIDLINES - I - Set print gridlines - SET_ROW_HEIGHT E Set row height - - SET_ROW_HEIGHT - I - Set row height - SET_ROW_OUTLINE E @@ -843,91 +538,46 @@ E Set show gridlines - - SET_SHOW_GRIDLINES - I - Set show gridlines - SET_SHOW_ROWCOLHEADERS E Set show colum row headers - - SET_SHOW_ROWCOLHEADERS - I - Set show colum row headers - SET_TABCOLOR E Set tabcolor - - SET_TABCOLOR - I - Set tabcolor - SET_TABLE E Set cell value from a table - - SET_TABLE - I - Set cell value from a table - SET_TITLE E Set WorkSheet Title - - SET_TITLE - I - Set WorkSheet Title - SHEET_CONTENT E Excel worksheet content - - SHEET_CONTENT - I - Excel worksheet content - SHEET_SETUP E Sheet setup - - SHEET_SETUP - I - Sheet setup - SHOW_GRIDLINES E Show Gridlines - - SHOW_GRIDLINES - I - Show Gridlines - SHOW_ROWCOLHEADERS E Show Gridlines - - SHOW_ROWCOLHEADERS - I - Show Gridlines - STYLES_COND E @@ -938,51 +588,26 @@ E Tabcolor - - TABCOLOR - I - Tabcolor - TABLES E Colletion of tables - - TABLES - I - Colletion of tables - TITLE E Title - - TITLE - I - Title - UPDATE_DIMENSION_RANGE E Update dimension range - - UPDATE_DIMENSION_RANGE - I - Update dimension range - UPPER_CELL E Top left range cell - - UPPER_CELL - I - Top left range cell - diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index 45f47c6..eb33056 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -9,276 +9,288 @@ CLASS zcl_excel_writer_2007 DEFINITION INTERFACES zif_excel_writer . METHODS constructor. - PROTECTED SECTION. +PROTECTED SECTION. + TYPES: *"* protected components of class ZCL_EXCEL_WRITER_2007 *"* do not include other source files here!!! - TYPES: BEGIN OF mty_column_formula_used, - id TYPE zexcel_s_cell_data-column_formula_id, - si TYPE string, - "! type: shared, etc. - t TYPE string, - END OF mty_column_formula_used, - mty_column_formulas_used TYPE HASHED TABLE OF mty_column_formula_used WITH UNIQUE KEY id. - CONSTANTS c_content_types TYPE string VALUE '[Content_Types].xml'. "#EC NOTEXT - CONSTANTS c_docprops_app TYPE string VALUE 'docProps/app.xml'. "#EC NOTEXT - CONSTANTS c_docprops_core TYPE string VALUE 'docProps/core.xml'. "#EC NOTEXT - CONSTANTS c_relationships TYPE string VALUE '_rels/.rels'. "#EC NOTEXT - CONSTANTS c_xl_calcchain TYPE string VALUE 'xl/calcChain.xml'. "#EC NOTEXT - CONSTANTS c_xl_drawings TYPE string VALUE 'xl/drawings/drawing#.xml'. "#EC NOTEXT - CONSTANTS c_xl_drawings_rels TYPE string VALUE 'xl/drawings/_rels/drawing#.xml.rels'. "#EC NOTEXT - CONSTANTS c_xl_relationships TYPE string VALUE 'xl/_rels/workbook.xml.rels'. "#EC NOTEXT - CONSTANTS c_xl_sharedstrings TYPE string VALUE 'xl/sharedStrings.xml'. "#EC NOTEXT - CONSTANTS c_xl_sheet TYPE string VALUE 'xl/worksheets/sheet#.xml'. "#EC NOTEXT - CONSTANTS c_xl_sheet_rels TYPE string VALUE 'xl/worksheets/_rels/sheet#.xml.rels'. "#EC NOTEXT - CONSTANTS c_xl_styles TYPE string VALUE 'xl/styles.xml'. "#EC NOTEXT - CONSTANTS c_xl_theme TYPE string VALUE 'xl/theme/theme1.xml'. "#EC NOTEXT - CONSTANTS c_xl_workbook TYPE string VALUE 'xl/workbook.xml'. "#EC NOTEXT - DATA excel TYPE REF TO zcl_excel . - DATA shared_strings TYPE zexcel_t_shared_string . - DATA styles_cond_mapping TYPE zexcel_t_styles_cond_mapping . - DATA styles_mapping TYPE zexcel_t_styles_mapping . - 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. - DATA control_characters TYPE string. + BEGIN OF mty_column_formula_used, + id TYPE zexcel_s_cell_data-column_formula_id, + si TYPE string, + "! type: shared, etc. + t TYPE string, + END OF mty_column_formula_used . + TYPES: + mty_column_formulas_used TYPE HASHED TABLE OF mty_column_formula_used WITH UNIQUE KEY id . - METHODS create_xl_sheet_sheet_data - IMPORTING - !io_document TYPE REF TO if_ixml_document - !io_worksheet TYPE REF TO zcl_excel_worksheet - RETURNING - VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element - RAISING - zcx_excel . - METHODS add_further_data_to_zip - IMPORTING - !io_zip TYPE REF TO cl_abap_zip . - METHODS create - RETURNING - VALUE(ep_excel) TYPE xstring - RAISING - zcx_excel . - METHODS create_content_types - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_docprops_app - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_docprops_core - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_dxf_style - IMPORTING - !iv_cell_style TYPE zexcel_cell_style - !io_dxf_element TYPE REF TO if_ixml_element - !io_ixml_document TYPE REF TO if_ixml_document - !it_cellxfs TYPE zexcel_t_cellxfs - !it_fonts TYPE zexcel_t_style_font - !it_fills TYPE zexcel_t_style_fill - CHANGING - !cv_dfx_count TYPE i . - METHODS create_relationships - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_charts - IMPORTING - !io_drawing TYPE REF TO zcl_excel_drawing - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_comments - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_drawings - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_drawings_rels - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_drawing_anchor - IMPORTING - !io_drawing TYPE REF TO zcl_excel_drawing - !io_document TYPE REF TO if_ixml_document - !ip_index TYPE i - RETURNING - VALUE(ep_anchor) TYPE REF TO if_ixml_element . - METHODS create_xl_drawing_for_comments - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - RETURNING - VALUE(ep_content) TYPE xstring - RAISING - zcx_excel . - METHODS create_xl_relationships - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_sharedstrings - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_sheet - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - !iv_active TYPE flag DEFAULT '' - RETURNING - VALUE(ep_content) TYPE xstring - RAISING - zcx_excel . - METHODS create_xl_sheet_ignored_errors - IMPORTING - io_worksheet TYPE REF TO zcl_excel_worksheet - io_document TYPE REF TO if_ixml_document - io_element_root TYPE REF TO if_ixml_element. - METHODS create_xl_sheet_pagebreaks - IMPORTING - !io_document TYPE REF TO if_ixml_document - !io_parent TYPE REF TO if_ixml_element - !io_worksheet TYPE REF TO zcl_excel_worksheet - RAISING - zcx_excel . - METHODS create_xl_sheet_rels - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - !iv_drawing_index TYPE i OPTIONAL - !iv_comment_index TYPE i OPTIONAL - !iv_cmnt_vmlindex TYPE i OPTIONAL - !iv_hdft_vmlindex TYPE i OPTIONAL - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_styles - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_styles_color_node - IMPORTING - !io_document TYPE REF TO if_ixml_document - !io_parent TYPE REF TO if_ixml_element - !iv_color_elem_name TYPE string DEFAULT 'color' - !is_color TYPE zexcel_s_style_color . - METHODS create_xl_styles_font_node - IMPORTING - !io_document TYPE REF TO if_ixml_document - !io_parent TYPE REF TO if_ixml_element - !is_font TYPE zexcel_s_style_font - !iv_use_rtf TYPE abap_bool DEFAULT abap_false . - METHODS create_xl_table - IMPORTING - !io_table TYPE REF TO zcl_excel_table - RETURNING - VALUE(ep_content) TYPE xstring - RAISING - zcx_excel . - METHODS create_xl_theme - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_workbook - RETURNING - VALUE(ep_content) TYPE xstring - RAISING - zcx_excel . - METHODS get_shared_string_index - IMPORTING - !ip_cell_value TYPE zexcel_cell_value - !it_rtf TYPE zexcel_t_rtf OPTIONAL - RETURNING - VALUE(ep_index) TYPE int4 . - METHODS create_xl_drawings_vml - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS set_vml_string - RETURNING - VALUE(ep_content) TYPE string . - METHODS create_xl_drawings_vml_rels - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS escape_string_value - IMPORTING - !iv_value TYPE zexcel_cell_value - RETURNING - VALUE(result) TYPE zexcel_cell_value. - METHODS set_vml_shape_footer - IMPORTING - !is_footer TYPE zexcel_s_worksheet_head_foot - RETURNING - VALUE(ep_content) TYPE string . - METHODS set_vml_shape_header - IMPORTING - !is_header TYPE zexcel_s_worksheet_head_foot - RETURNING - VALUE(ep_content) TYPE string . - METHODS create_xl_drawing_for_hdft_im - IMPORTING - !io_worksheet TYPE REF TO zcl_excel_worksheet - RETURNING - VALUE(ep_content) TYPE xstring . - METHODS create_xl_drawings_hdft_rels - IMPORTING - !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. - METHODS create_xl_sheet_column_formula - IMPORTING - io_document TYPE REF TO if_ixml_document - it_column_formulas TYPE zcl_excel_worksheet=>mty_th_column_formula - is_sheet_content TYPE zexcel_s_cell_data - EXPORTING - eo_element TYPE REF TO if_ixml_element - CHANGING - ct_column_formulas_used TYPE mty_column_formulas_used - cv_si TYPE i - RAISING - zcx_excel. - METHODS is_formula_shareable - IMPORTING - ip_formula TYPE string - RETURNING - VALUE(ep_shareable) TYPE abap_bool - RAISING - zcx_excel. - PRIVATE SECTION. + CONSTANTS c_content_types TYPE string VALUE '[Content_Types].xml' ##NO_TEXT. + CONSTANTS c_docprops_app TYPE string VALUE 'docProps/app.xml' ##NO_TEXT. + CONSTANTS c_docprops_core TYPE string VALUE 'docProps/core.xml' ##NO_TEXT. + CONSTANTS c_relationships TYPE string VALUE '_rels/.rels' ##NO_TEXT. + CONSTANTS c_xl_calcchain TYPE string VALUE 'xl/calcChain.xml' ##NO_TEXT. + CONSTANTS c_xl_drawings TYPE string VALUE 'xl/drawings/drawing#.xml' ##NO_TEXT. + CONSTANTS c_xl_drawings_rels TYPE string VALUE 'xl/drawings/_rels/drawing#.xml.rels' ##NO_TEXT. + CONSTANTS c_xl_relationships TYPE string VALUE 'xl/_rels/workbook.xml.rels' ##NO_TEXT. + CONSTANTS c_xl_sharedstrings TYPE string VALUE 'xl/sharedStrings.xml' ##NO_TEXT. + CONSTANTS c_xl_sheet TYPE string VALUE 'xl/worksheets/sheet#.xml' ##NO_TEXT. + CONSTANTS c_xl_sheet_rels TYPE string VALUE 'xl/worksheets/_rels/sheet#.xml.rels' ##NO_TEXT. + CONSTANTS c_xl_styles TYPE string VALUE 'xl/styles.xml' ##NO_TEXT. + CONSTANTS c_xl_theme TYPE string VALUE 'xl/theme/theme1.xml' ##NO_TEXT. + CONSTANTS c_xl_workbook TYPE string VALUE 'xl/workbook.xml' ##NO_TEXT. + DATA excel TYPE REF TO zcl_excel . + DATA shared_strings TYPE zexcel_t_shared_string . + DATA styles_cond_mapping TYPE zexcel_t_styles_cond_mapping . + DATA styles_mapping TYPE zexcel_t_styles_mapping . + CONSTANTS c_xl_comments TYPE string VALUE 'xl/comments#.xml' ##NO_TEXT. + CONSTANTS cl_xl_drawing_for_comments TYPE string VALUE 'xl/drawings/vmlDrawing#.vml' ##NO_TEXT. + CONSTANTS c_xl_drawings_vml_rels TYPE string VALUE 'xl/drawings/_rels/vmlDrawing#.vml.rels' ##NO_TEXT. + DATA ixml TYPE REF TO if_ixml . + DATA control_characters TYPE string . + + METHODS create_xl_sheet_sheet_data + IMPORTING + !io_document TYPE REF TO if_ixml_document + !io_worksheet TYPE REF TO zcl_excel_worksheet + RETURNING + VALUE(rv_ixml_sheet_data_root) TYPE REF TO if_ixml_element + RAISING + zcx_excel . + METHODS add_further_data_to_zip + IMPORTING + !io_zip TYPE REF TO cl_abap_zip . + METHODS create + RETURNING + VALUE(ep_excel) TYPE xstring + RAISING + zcx_excel . + METHODS create_content_types + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_docprops_app + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_docprops_core + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_dxf_style + IMPORTING + !iv_cell_style TYPE zexcel_cell_style + !io_dxf_element TYPE REF TO if_ixml_element + !io_ixml_document TYPE REF TO if_ixml_document + !it_cellxfs TYPE zexcel_t_cellxfs + !it_fonts TYPE zexcel_t_style_font + !it_fills TYPE zexcel_t_style_fill + CHANGING + !cv_dfx_count TYPE i . + METHODS create_relationships + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_charts + IMPORTING + !io_drawing TYPE REF TO zcl_excel_drawing + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_comments + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_drawings + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_drawings_rels + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_drawing_anchor + IMPORTING + !io_drawing TYPE REF TO zcl_excel_drawing + !io_document TYPE REF TO if_ixml_document + !ip_index TYPE i + RETURNING + VALUE(ep_anchor) TYPE REF TO if_ixml_element . + METHODS create_xl_drawing_for_comments + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + RETURNING + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . + METHODS create_xl_relationships + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_sharedstrings + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_sheet + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + !iv_active TYPE flag DEFAULT '' + RETURNING + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . + METHODS create_xl_sheet_ignored_errors + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + !io_document TYPE REF TO if_ixml_document + !io_element_root TYPE REF TO if_ixml_element . + METHODS create_xl_sheet_pagebreaks + IMPORTING + !io_document TYPE REF TO if_ixml_document + !io_parent TYPE REF TO if_ixml_element + !io_worksheet TYPE REF TO zcl_excel_worksheet + RAISING + zcx_excel . + METHODS create_xl_sheet_rels + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + !iv_drawing_index TYPE i OPTIONAL + !iv_comment_index TYPE i OPTIONAL + !iv_cmnt_vmlindex TYPE i OPTIONAL + !iv_hdft_vmlindex TYPE i OPTIONAL + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_styles + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_styles_color_node + IMPORTING + !io_document TYPE REF TO if_ixml_document + !io_parent TYPE REF TO if_ixml_element + !iv_color_elem_name TYPE string DEFAULT 'color' + !is_color TYPE zexcel_s_style_color . + METHODS create_xl_styles_font_node + IMPORTING + !io_document TYPE REF TO if_ixml_document + !io_parent TYPE REF TO if_ixml_element + !is_font TYPE zexcel_s_style_font + !iv_use_rtf TYPE abap_bool DEFAULT abap_false . + METHODS create_xl_table + IMPORTING + !io_table TYPE REF TO zcl_excel_table + RETURNING + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . + METHODS create_xl_theme + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_workbook + RETURNING + VALUE(ep_content) TYPE xstring + RAISING + zcx_excel . + METHODS get_shared_string_index + IMPORTING + !ip_cell_value TYPE zexcel_cell_value + !it_rtf TYPE zexcel_t_rtf OPTIONAL + RETURNING + VALUE(ep_index) TYPE int4 . + METHODS create_xl_drawings_vml + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS set_vml_string + RETURNING + VALUE(ep_content) TYPE string . + METHODS create_xl_drawings_vml_rels + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS escape_string_value + IMPORTING + !iv_value TYPE zexcel_cell_value + RETURNING + VALUE(result) TYPE zexcel_cell_value . + METHODS set_vml_shape_footer + IMPORTING + !is_footer TYPE zexcel_s_worksheet_head_foot + RETURNING + VALUE(ep_content) TYPE string . + METHODS set_vml_shape_header + IMPORTING + !is_header TYPE zexcel_s_worksheet_head_foot + RETURNING + VALUE(ep_content) TYPE string . + METHODS create_xl_drawing_for_hdft_im + IMPORTING + !io_worksheet TYPE REF TO zcl_excel_worksheet + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_drawings_hdft_rels + IMPORTING + !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 OPTIONAL + !iv_document_as_string TYPE string OPTIONAL + PREFERRED PARAMETER io_document + RETURNING + VALUE(ep_content) TYPE xstring . + METHODS create_xl_sheet_column_formula + IMPORTING + !io_document TYPE REF TO if_ixml_document + !it_column_formulas TYPE zcl_excel_worksheet=>mty_th_column_formula + !is_sheet_content TYPE zexcel_s_cell_data + EXPORTING + !eo_element TYPE REF TO if_ixml_element + CHANGING + !ct_column_formulas_used TYPE mty_column_formulas_used + !cv_si TYPE i + RAISING + zcx_excel . + METHODS is_formula_shareable + IMPORTING + !ip_formula TYPE string + RETURNING + VALUE(ep_shareable) TYPE abap_bool + RAISING + zcx_excel . +PRIVATE SECTION. + + TYPES: + tv_charbool TYPE c LENGTH 5 . *"* private components of class ZCL_EXCEL_WRITER_2007 *"* do not include other source files here!!! - CONSTANTS c_off TYPE string VALUE '0'. "#EC NOTEXT - CONSTANTS c_on TYPE string VALUE '1'. "#EC NOTEXT - CONSTANTS c_xl_printersettings TYPE string VALUE 'xl/printerSettings/printerSettings#.bin'. "#EC NOTEXT - TYPES: tv_charbool TYPE c LENGTH 5. + CONSTANTS c_off TYPE string VALUE '0' ##NO_TEXT. + CONSTANTS c_on TYPE string VALUE '1' ##NO_TEXT. + CONSTANTS c_xl_printersettings TYPE string VALUE 'xl/printerSettings/printerSettings#.bin' ##NO_TEXT. - METHODS add_1_val_child_node - IMPORTING - io_document TYPE REF TO if_ixml_document - io_parent TYPE REF TO if_ixml_element - iv_elem_name TYPE string - iv_attr_name TYPE string - iv_attr_value TYPE string. - METHODS flag2bool - IMPORTING - !ip_flag TYPE flag - RETURNING - VALUE(ep_boolean) TYPE tv_charbool . - METHODS number2string - IMPORTING - !ip_number TYPE numeric - RETURNING - VALUE(ep_string) TYPE string. + METHODS get_comment_anchor + IMPORTING + !io_comment TYPE REF TO zcl_excel_comment + RETURNING + VALUE(ev_anchor) TYPE string . + METHODS add_1_val_child_node + IMPORTING + !io_document TYPE REF TO if_ixml_document + !io_parent TYPE REF TO if_ixml_element + !iv_elem_name TYPE string + !iv_attr_name TYPE string + !iv_attr_value TYPE string . + METHODS flag2bool + IMPORTING + !ip_flag TYPE flag + RETURNING + VALUE(ep_boolean) TYPE tv_charbool . + METHODS number2string + IMPORTING + !ip_number TYPE numeric + RETURNING + VALUE(ep_string) TYPE string . ENDCLASS. -CLASS zcl_excel_writer_2007 IMPLEMENTATION. +CLASS ZCL_EXCEL_WRITER_2007 IMPLEMENTATION. METHOD add_1_val_child_node. @@ -2338,55 +2350,22 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. METHOD create_xl_comments. -** Constant node name - CONSTANTS: lc_xml_node_comments TYPE string VALUE 'comments', - lc_xml_node_ns TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', - " authors - lc_xml_node_author TYPE string VALUE 'author', - lc_xml_node_authors TYPE string VALUE 'authors', - " comments - lc_xml_node_commentlist TYPE string VALUE 'commentList', - lc_xml_node_comment TYPE string VALUE 'comment', - lc_xml_node_text TYPE string VALUE 'text', - lc_xml_node_r TYPE string VALUE 'r', - lc_xml_node_rpr TYPE string VALUE 'rPr', - lc_xml_node_b TYPE string VALUE 'b', - lc_xml_node_sz TYPE string VALUE 'sz', - lc_xml_node_color TYPE string VALUE 'color', - lc_xml_node_rfont TYPE string VALUE 'rFont', -* lc_xml_node_charset TYPE string VALUE 'charset', - lc_xml_node_family TYPE string VALUE 'family', - lc_xml_node_t TYPE string VALUE 't', - " comments attributes - lc_xml_attr_ref TYPE string VALUE 'ref', - lc_xml_attr_authorid TYPE string VALUE 'authorId', - lc_xml_attr_val TYPE string VALUE 'val', - lc_xml_attr_indexed TYPE string VALUE 'indexed', - lc_xml_attr_xmlspacing TYPE string VALUE 'xml:space'. - - - 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, - lo_element_commentlist TYPE REF TO if_ixml_element, - lo_element_comment TYPE REF TO if_ixml_element, - lo_element_text TYPE REF TO if_ixml_element, - lo_element_r TYPE REF TO if_ixml_element, - lo_element_rpr TYPE REF TO if_ixml_element, - lo_element_b TYPE REF TO if_ixml_element, - lo_element_sz TYPE REF TO if_ixml_element, - lo_element_color TYPE REF TO if_ixml_element, - lo_element_rfont TYPE REF TO if_ixml_element, -* 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_iterator TYPE REF TO zcl_excel_collection_iterator, - lo_comments TYPE REF TO zcl_excel_comments, - lo_comment TYPE REF TO zcl_excel_comment. - DATA: lv_rel_id TYPE i, - lv_author TYPE string. + DATA: + lo_comment TYPE REF TO zcl_excel_comment, + lo_comments TYPE REF TO zcl_excel_comments, + lo_document TYPE REF TO if_ixml_document, + lo_element_author TYPE REF TO if_ixml_element, + lo_element_authors TYPE REF TO if_ixml_element, + lo_element_comment TYPE REF TO if_ixml_element, + lo_element_commentlist TYPE REF TO if_ixml_element, + lo_element_r TYPE REF TO if_ixml_element, + lo_element_root TYPE REF TO if_ixml_element, + lo_element_rpr TYPE REF TO if_ixml_element, + lo_element_t TYPE REF TO if_ixml_element, + lo_element_text TYPE REF TO if_ixml_element, + lo_iterator TYPE REF TO zcl_excel_collection_iterator, + lv_author TYPE string. ********************************************************************** * STEP 1: Create [Content_Types].xml into the root of the ZIP @@ -2394,76 +2373,76 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. *********************************************************************** * STEP 3: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_comments + lo_element_root = lo_document->create_simple_element( name = `comments` parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns' - value = lc_xml_node_ns ). + lo_element_root->set_attribute_ns( name = `xmlns` + value = `http://schemas.openxmlformats.org/spreadsheetml/2006/main` ). ********************************************************************** * STEP 4: Create authors * TO-DO: management of several authors - lo_element_authors = lo_document->create_simple_element( name = lc_xml_node_authors - parent = lo_document ). + lo_element_authors = lo_document->create_simple_element( name = `authors` + parent = lo_element_root ). - lo_element_author = lo_document->create_simple_element( name = lc_xml_node_author - parent = lo_document ). + lo_element_author = lo_document->create_simple_element( name = `author` + parent = lo_element_authors ). lv_author = sy-uname. lo_element_author->set_value( lv_author ). - lo_element_authors->append_child( new_child = lo_element_author ). - lo_element_root->append_child( new_child = lo_element_authors ). - ********************************************************************** * STEP 5: Create comments - lo_element_commentlist = lo_document->create_simple_element( name = lc_xml_node_commentlist - parent = lo_document ). + lo_element_commentlist = lo_document->create_simple_element( name = `commentList` + parent = lo_element_root ). lo_comments = io_worksheet->get_comments( ). + DATA: + lt_rtf TYPE zcl_excel_comment=>ty_rtf_fragments. + FIELD-SYMBOLS: + TYPE zcl_excel_comment=>ty_rtf_fragment. + lo_iterator = lo_comments->get_iterator( ). WHILE lo_iterator->has_next( ) EQ abap_true. lo_comment ?= lo_iterator->get_next( ). - lo_element_comment = lo_document->create_simple_element( name = lc_xml_node_comment - parent = lo_document ). - lo_element_comment->set_attribute_ns( name = lc_xml_attr_ref + lo_element_comment = lo_document->create_simple_element( name = `comment` + parent = lo_element_commentlist ). + lo_element_comment->set_attribute_ns( name = `ref` value = lo_comment->get_ref( ) ). - lo_element_comment->set_attribute_ns( name = lc_xml_attr_authorid - value = '0' ). " TO-DO + lo_element_comment->set_attribute_ns( name = `authorId` + value = `0` ). " TO-DO - lo_element_text = lo_document->create_simple_element( name = lc_xml_node_text - parent = lo_document ). - lo_element_r = lo_document->create_simple_element( name = lc_xml_node_r - parent = lo_document ). - lo_element_rpr = lo_document->create_simple_element( name = lc_xml_node_rpr - parent = lo_document ). + lo_element_text = lo_document->create_simple_element( name = `text` + parent = lo_element_comment ). - lo_element_b = lo_document->create_simple_element( name = lc_xml_node_b - parent = lo_document ). - lo_element_rpr->append_child( new_child = lo_element_b ). + lt_rtf = lo_comment->get_text_rtf( ). - add_1_val_child_node( io_document = lo_document io_parent = lo_element_rpr iv_elem_name = lc_xml_node_sz iv_attr_name = lc_xml_attr_val iv_attr_value = '9' ). - add_1_val_child_node( io_document = lo_document io_parent = lo_element_rpr iv_elem_name = lc_xml_node_color iv_attr_name = lc_xml_attr_indexed iv_attr_value = '81' ). - add_1_val_child_node( io_document = lo_document io_parent = lo_element_rpr iv_elem_name = lc_xml_node_rfont iv_attr_name = lc_xml_attr_val iv_attr_value = 'Tahoma' ). - add_1_val_child_node( io_document = lo_document io_parent = lo_element_rpr iv_elem_name = lc_xml_node_family iv_attr_name = lc_xml_attr_val iv_attr_value = '2' ). + LOOP AT lt_rtf ASSIGNING . - lo_element_r->append_child( new_child = lo_element_rpr ). - lo_element_t = lo_document->create_simple_element( name = lc_xml_node_t - parent = lo_document ). - lo_element_t->set_attribute_ns( name = lc_xml_attr_xmlspacing - value = 'preserve' ). - lo_element_t->set_value( lo_comment->get_text( ) ). - lo_element_r->append_child( new_child = lo_element_t ). + lo_element_r = lo_document->create_simple_element( name = `r` + parent = lo_element_text ). + lo_element_rpr = lo_document->create_simple_element( name = `rPr` + parent = lo_element_r ). + + create_xl_styles_font_node( + io_document = lo_document + io_parent = lo_element_rpr + is_font = -rtf + iv_use_rtf = abap_true " generate , not element for font + ). + + lo_element_t = lo_document->create_simple_element( name = `t` + parent = lo_element_r ). + lo_element_t->set_attribute_ns( name = `xml:space` + value = `preserve` ). + lo_element_t->set_value( -text ). + + ENDLOOP. - lo_element_text->append_child( new_child = lo_element_r ). - lo_element_comment->append_child( new_child = lo_element_text ). - lo_element_commentlist->append_child( new_child = lo_element_comment ). ENDWHILE. - lo_element_root->append_child( new_child = lo_element_commentlist ). - ********************************************************************** * STEP 5: Create xstring stream ep_content = render_xml_document( lo_document ). @@ -3095,107 +3074,47 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ENDMETHOD. - METHOD create_xl_drawing_for_comments. -** Constant node name - CONSTANTS: lc_xml_node_xml TYPE string VALUE 'xml', - lc_xml_node_ns_v TYPE string VALUE 'urn:schemas-microsoft-com:vml', - lc_xml_node_ns_o TYPE string VALUE 'urn:schemas-microsoft-com:office:office', - lc_xml_node_ns_x TYPE string VALUE 'urn:schemas-microsoft-com:office:excel', - " shapelayout - lc_xml_node_shapelayout TYPE string VALUE 'o:shapelayout', - lc_xml_node_idmap TYPE string VALUE 'o:idmap', - " shapetype - lc_xml_node_shapetype TYPE string VALUE 'v:shapetype', - lc_xml_node_stroke TYPE string VALUE 'v:stroke', - lc_xml_node_path TYPE string VALUE 'v:path', - " shape - lc_xml_node_shape TYPE string VALUE 'v:shape', - lc_xml_node_fill TYPE string VALUE 'v:fill', - lc_xml_node_shadow TYPE string VALUE 'v:shadow', - lc_xml_node_textbox TYPE string VALUE 'v:textbox', - lc_xml_node_div TYPE string VALUE 'div', - lc_xml_node_clientdata TYPE string VALUE 'x:ClientData', - lc_xml_node_movewithcells TYPE string VALUE 'x:MoveWithCells', - lc_xml_node_sizewithcells TYPE string VALUE 'x:SizeWithCells', - lc_xml_node_anchor TYPE string VALUE 'x:Anchor', - lc_xml_node_autofill TYPE string VALUE 'x:AutoFill', - lc_xml_node_row TYPE string VALUE 'x:Row', - lc_xml_node_column TYPE string VALUE 'x:Column', - " attributes, - lc_xml_attr_vext TYPE string VALUE 'v:ext', - lc_xml_attr_data TYPE string VALUE 'data', - lc_xml_attr_id TYPE string VALUE 'id', - lc_xml_attr_coordsize TYPE string VALUE 'coordsize', - lc_xml_attr_ospt TYPE string VALUE 'o:spt', - lc_xml_attr_joinstyle TYPE string VALUE 'joinstyle', - lc_xml_attr_path TYPE string VALUE 'path', - lc_xml_attr_gradientshapeok TYPE string VALUE 'gradientshapeok', - lc_xml_attr_oconnecttype TYPE string VALUE 'o:connecttype', - lc_xml_attr_type TYPE string VALUE 'type', - lc_xml_attr_style TYPE string VALUE 'style', - lc_xml_attr_fillcolor TYPE string VALUE 'fillcolor', - lc_xml_attr_oinsetmode TYPE string VALUE 'o:insetmode', - lc_xml_attr_color TYPE string VALUE 'color', - lc_xml_attr_color2 TYPE string VALUE 'color2', - lc_xml_attr_on TYPE string VALUE 'on', - lc_xml_attr_obscured TYPE string VALUE 'obscured', - lc_xml_attr_objecttype TYPE string VALUE 'ObjectType', - " attributes values - lc_xml_attr_val_edit TYPE string VALUE 'edit', - lc_xml_attr_val_rect TYPE string VALUE 'rect', - lc_xml_attr_val_t TYPE string VALUE 't', - lc_xml_attr_val_miter TYPE string VALUE 'miter', - lc_xml_attr_val_auto TYPE string VALUE 'auto', - lc_xml_attr_val_black TYPE string VALUE 'black', - lc_xml_attr_val_none TYPE string VALUE 'none', - lc_xml_attr_val_msodir TYPE string VALUE 'mso-direction-alt:auto', - lc_xml_attr_val_note TYPE string VALUE 'Note'. +METHOD create_xl_drawing_for_comments. + 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, + lo_element_idmap TYPE REF TO if_ixml_element, + "shapetype + lo_element_shapetype TYPE REF TO if_ixml_element, + lo_element_stroke TYPE REF TO if_ixml_element, + lo_element_path TYPE REF TO if_ixml_element, + "shape + lo_element_shape TYPE REF TO if_ixml_element, + lo_element_fill TYPE REF TO if_ixml_element, + lo_element_shadow TYPE REF TO if_ixml_element, + lo_element_textbox TYPE REF TO if_ixml_element, + lo_element_div TYPE REF TO if_ixml_element, + lo_element_clientdata TYPE REF TO if_ixml_element, + lo_element_movewithcells TYPE REF TO if_ixml_element, + lo_element_sizewithcells TYPE REF TO if_ixml_element, + lo_element_anchor TYPE REF TO if_ixml_element, + 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_iterator TYPE REF TO zcl_excel_collection_iterator, + lo_anchors TYPE REF TO if_ixml_node_collection, + lo_anchor TYPE REF TO if_ixml_element, + lo_comments TYPE REF TO zcl_excel_comments, + lo_comment TYPE REF TO zcl_excel_comment, + lv_row TYPE zexcel_cell_row, + lv_str_column TYPE zexcel_cell_column_alpha, + lv_column TYPE zexcel_cell_column, + lv_index TYPE i, + lv_attr_id_index TYPE i, + lv_attr_id TYPE string, + lv_int_value TYPE i, + lv_int_value_string TYPE string, + lv_anchor TYPE string. - 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, - lo_element_idmap TYPE REF TO if_ixml_element, - "shapetype - lo_element_shapetype TYPE REF TO if_ixml_element, - lo_element_stroke TYPE REF TO if_ixml_element, - lo_element_path TYPE REF TO if_ixml_element, - "shape - lo_element_shape TYPE REF TO if_ixml_element, - lo_element_fill TYPE REF TO if_ixml_element, - lo_element_shadow TYPE REF TO if_ixml_element, - lo_element_textbox TYPE REF TO if_ixml_element, - lo_element_div TYPE REF TO if_ixml_element, - lo_element_clientdata TYPE REF TO if_ixml_element, - lo_element_movewithcells TYPE REF TO if_ixml_element, - lo_element_sizewithcells TYPE REF TO if_ixml_element, - lo_element_anchor TYPE REF TO if_ixml_element, - 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_iterator TYPE REF TO zcl_excel_collection_iterator, - lo_comments TYPE REF TO zcl_excel_comments, - lo_comment TYPE REF TO zcl_excel_comment, - lv_row TYPE zexcel_cell_row, - lv_str_column TYPE zexcel_cell_column_alpha, - lv_column TYPE zexcel_cell_column, - lv_index TYPE i, - lv_attr_id_index TYPE i, - lv_attr_id TYPE string, - lv_int_value TYPE i, - lv_int_value_string TYPE string. - DATA: lv_rel_id TYPE i. - DATA lv_anchor TYPE string. - DATA lv_bottom_row TYPE i. - DATA lv_right_column TYPE i. - DATA lv_bottom_row_str TYPE string. - DATA lv_right_column_str TYPE string. - DATA lv_top_row TYPE i. - DATA lv_left_column TYPE i. - DATA lv_top_row_str TYPE string. - DATA lv_left_column_str TYPE string. - + lo_comments = io_worksheet->get_comments( ). + IF lo_comments->gv_full_vml IS INITIAL. ********************************************************************** * STEP 1: Create XML document @@ -3203,59 +3122,48 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. *********************************************************************** * STEP 2: Create main node relationships - lo_element_root = lo_document->create_simple_element( name = lc_xml_node_xml - parent = lo_document ). - lo_element_root->set_attribute_ns( name = 'xmlns:v' value = lc_xml_node_ns_v ). - lo_element_root->set_attribute_ns( name = 'xmlns:o' value = lc_xml_node_ns_o ). - lo_element_root->set_attribute_ns( name = 'xmlns:x' value = lc_xml_node_ns_x ). + lo_element_root = lo_document->create_simple_element( name = `xml` parent = lo_document ). + lo_element_root->set_attribute_ns( name = `xmlns:v` value = `urn:schemas-microsoft-com:vml` ). + lo_element_root->set_attribute_ns( name = `xmlns:o` value = `urn:schemas-microsoft-com:office:office` ). + lo_element_root->set_attribute_ns( name = `xmlns:x` value = `urn:schemas-microsoft-com:office:excel` ). ********************************************************************** * STEP 3: Create o:shapeLayout * TO-DO: management of several authors - lo_element_shapelayout = lo_document->create_simple_element( name = lc_xml_node_shapelayout - parent = lo_document ). + lo_element_shapelayout = lo_document->create_simple_element( name = `o:shapelayout` + parent = lo_element_root ). - lo_element_shapelayout->set_attribute_ns( name = lc_xml_attr_vext - value = lc_xml_attr_val_edit ). + lo_element_shapelayout->set_attribute_ns( name = `v:ext` + value = `edit` ). - lo_element_idmap = lo_document->create_simple_element( name = lc_xml_node_idmap - parent = lo_document ). - lo_element_idmap->set_attribute_ns( name = lc_xml_attr_vext value = lc_xml_attr_val_edit ). - lo_element_idmap->set_attribute_ns( name = lc_xml_attr_data value = '1' ). - - lo_element_shapelayout->append_child( new_child = lo_element_idmap ). - - lo_element_root->append_child( new_child = lo_element_shapelayout ). + lo_element_idmap = lo_document->create_simple_element( name = `o:idmap` + parent = lo_element_shapelayout ). + lo_element_idmap->set_attribute_ns( name = `v:ext` value = `edit` ). + lo_element_idmap->set_attribute_ns( name = `data` value = `1` ). ********************************************************************** * STEP 4: Create v:shapetype - lo_element_shapetype = lo_document->create_simple_element( name = lc_xml_node_shapetype - parent = lo_document ). + lo_element_shapetype = lo_document->create_simple_element( name = `v:shapetype` + parent = lo_element_root ). - lo_element_shapetype->set_attribute_ns( name = lc_xml_attr_id value = '_x0000_t202' ). - lo_element_shapetype->set_attribute_ns( name = lc_xml_attr_coordsize value = '21600,21600' ). - lo_element_shapetype->set_attribute_ns( name = lc_xml_attr_ospt value = '202' ). - lo_element_shapetype->set_attribute_ns( name = lc_xml_attr_path value = 'm,l,21600r21600,l21600,xe' ). + lo_element_shapetype->set_attribute_ns( name = `id` value = `_x0000_t202` ). + lo_element_shapetype->set_attribute_ns( name = `coordsize` value = `21600,21600` ). + lo_element_shapetype->set_attribute_ns( name = `o:spt` value = `202` ). + lo_element_shapetype->set_attribute_ns( name = `path` value = `m,l,21600r21600,l21600,xe` ). - lo_element_stroke = lo_document->create_simple_element( name = lc_xml_node_stroke - parent = lo_document ). - lo_element_stroke->set_attribute_ns( name = lc_xml_attr_joinstyle value = lc_xml_attr_val_miter ). + lo_element_stroke = lo_document->create_simple_element( name = `v:stroke` + parent = lo_element_shapetype ). + lo_element_stroke->set_attribute_ns( name = `joinstyle` value = `miter` ). - lo_element_path = lo_document->create_simple_element( name = lc_xml_node_path - parent = lo_document ). - lo_element_path->set_attribute_ns( name = lc_xml_attr_gradientshapeok value = lc_xml_attr_val_t ). - lo_element_path->set_attribute_ns( name = lc_xml_attr_oconnecttype value = lc_xml_attr_val_rect ). - - lo_element_shapetype->append_child( new_child = lo_element_stroke ). - lo_element_shapetype->append_child( new_child = lo_element_path ). - - lo_element_root->append_child( new_child = lo_element_shapetype ). + lo_element_path = lo_document->create_simple_element( name = `v:path` + parent = lo_element_shapetype ). + lo_element_path->set_attribute_ns( name = `gradientshapeok` value = `t` ). + lo_element_path->set_attribute_ns( name = `o:connecttype` value = `rect` ). ********************************************************************** * STEP 4: Create v:shapetype - lo_comments = io_worksheet->get_comments( ). lo_iterator = lo_comments->get_iterator( ). WHILE lo_iterator->has_next( ) EQ abap_true. @@ -3267,56 +3175,54 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. e_row = lv_row ). lv_column = zcl_excel_common=>convert_column2int( lv_str_column ). - lo_element_shape = lo_document->create_simple_element( name = lc_xml_node_shape - parent = lo_document ). + lo_element_shape = lo_document->create_simple_element( name = `v:shape` + parent = lo_element_root ). lv_attr_id_index = 1024 + lv_index. lv_attr_id = lv_attr_id_index. - CONCATENATE '_x0000_s' lv_attr_id INTO lv_attr_id. - lo_element_shape->set_attribute_ns( name = lc_xml_attr_id value = lv_attr_id ). - lo_element_shape->set_attribute_ns( name = lc_xml_attr_type value = '#_x0000_t202' ). - lo_element_shape->set_attribute_ns( name = lc_xml_attr_style value = 'size:auto;width:auto;height:auto;position:absolute;margin-left:117pt;margin-top:172.5pt;z-index:1;visibility:hidden' ). - lo_element_shape->set_attribute_ns( name = lc_xml_attr_fillcolor value = '#ffffe1' ). - lo_element_shape->set_attribute_ns( name = lc_xml_attr_oinsetmode value = lc_xml_attr_val_auto ). + CONCATENATE `_x0000_s` lv_attr_id INTO lv_attr_id. + lo_element_shape->set_attribute_ns( name = `id` value = lv_attr_id ). + lo_element_shape->set_attribute_ns( name = `type` value = `#_x0000_t202` ). + lo_element_shape->set_attribute_ns( name = `style` value = `size:auto;width:auto;height:auto;position:absolute;margin-left:117pt;margin-top:172.5pt;z-index:1;visibility:hidden` ). + lo_element_shape->set_attribute_ns( name = `fillcolor` value = `#ffffe1` ). + lo_element_shape->set_attribute_ns( name = `o:insetmode` value = `auto` ). " Fill - lo_element_fill = lo_document->create_simple_element( name = lc_xml_node_fill - parent = lo_document ). - lo_element_fill->set_attribute_ns( name = lc_xml_attr_color2 value = '#ffffe1' ). - lo_element_shape->append_child( new_child = lo_element_fill ). + lo_element_fill = lo_document->create_simple_element( name = `v:fill` + parent = lo_element_shape ). + lo_element_fill->set_attribute_ns( name = `color2` value = `#ffffe1` ). + " Shadow - lo_element_shadow = lo_document->create_simple_element( name = lc_xml_node_shadow - parent = lo_document ). - lo_element_shadow->set_attribute_ns( name = lc_xml_attr_on value = lc_xml_attr_val_t ). - lo_element_shadow->set_attribute_ns( name = lc_xml_attr_color value = lc_xml_attr_val_black ). - lo_element_shadow->set_attribute_ns( name = lc_xml_attr_obscured value = lc_xml_attr_val_t ). - lo_element_shape->append_child( new_child = lo_element_shadow ). + lo_element_shadow = lo_document->create_simple_element( name = `v:shadow` + parent = lo_element_shape ). + lo_element_shadow->set_attribute_ns( name = `on` value = `t` ). + lo_element_shadow->set_attribute_ns( name = `color` value = `black` ). + lo_element_shadow->set_attribute_ns( name = `obscured` value = `t` ). + " Path - lo_element_path = lo_document->create_simple_element( name = lc_xml_node_path - parent = lo_document ). - lo_element_path->set_attribute_ns( name = lc_xml_attr_oconnecttype value = lc_xml_attr_val_none ). - lo_element_shape->append_child( new_child = lo_element_path ). + lo_element_path = lo_document->create_simple_element( name = `v:path` + parent = lo_element_shape ). + lo_element_path->set_attribute_ns( name = `o:connecttype` value = `none` ). + " Textbox - lo_element_textbox = lo_document->create_simple_element( name = lc_xml_node_textbox - parent = lo_document ). - lo_element_textbox->set_attribute_ns( name = lc_xml_attr_style value = lc_xml_attr_val_msodir ). - lo_element_div = lo_document->create_simple_element( name = lc_xml_node_div - parent = lo_document ). - lo_element_div->set_attribute_ns( name = lc_xml_attr_style value = 'text-align:left' ). - lo_element_textbox->append_child( new_child = lo_element_div ). - lo_element_shape->append_child( new_child = lo_element_textbox ). + lo_element_textbox = lo_document->create_simple_element( name = `v:textbox` + parent = lo_element_shape ). + lo_element_textbox->set_attribute_ns( name = `style` value = `mso-direction-alt:auto` ). + lo_element_div = lo_document->create_simple_element( name = `div` + parent = lo_element_div ). + lo_element_div->set_attribute_ns( name = `style` value = `text-align:left` ). + " ClientData - lo_element_clientdata = lo_document->create_simple_element( name = lc_xml_node_clientdata - parent = lo_document ). - lo_element_clientdata->set_attribute_ns( name = lc_xml_attr_objecttype value = lc_xml_attr_val_note ). - lo_element_movewithcells = lo_document->create_simple_element( name = lc_xml_node_movewithcells - parent = lo_document ). - lo_element_clientdata->append_child( new_child = lo_element_movewithcells ). - lo_element_sizewithcells = lo_document->create_simple_element( name = lc_xml_node_sizewithcells - parent = lo_document ). - lo_element_clientdata->append_child( new_child = lo_element_sizewithcells ). - lo_element_anchor = lo_document->create_simple_element( name = lc_xml_node_anchor - parent = lo_document ). + lo_element_clientdata = lo_document->create_simple_element( name = `x:ClientData` + parent = lo_element_shape ). + lo_element_clientdata->set_attribute_ns( name = `ObjectType` value = `Note` ). + lo_element_movewithcells = lo_document->create_simple_element( name = `x:MoveWithCells` + parent = lo_element_clientdata ). + lo_element_sizewithcells = lo_document->create_simple_element( name = `x:SizeWithCells` + parent = lo_element_clientdata ). + + lo_element_anchor = lo_document->create_simple_element( name = `x:Anchor` + parent = lo_element_clientdata ). " Anchor represents 4 pairs of numbers: " ( left column, left offset ), ( top row, top offset ), @@ -3324,44 +3230,61 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. " Offsets are a number of pixels. " Reference: Anchor Class at " https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.vml.spreadsheet.anchor?view=openxml-3.0.1 - lv_anchor = number2string( lo_comment->get_left_column( ) ) - && `, ` && number2string( lo_comment->get_left_offset( ) ) - && `, ` && number2string( lo_comment->get_top_row( ) ) - && `, ` && number2string( lo_comment->get_top_offset( ) ) - && `, ` && number2string( lo_comment->get_right_column( ) ) - && `, ` && number2string( lo_comment->get_right_offset( ) ) - && `, ` && number2string( lo_comment->get_bottom_row( ) ) - && `, ` && number2string( lo_comment->get_bottom_offset( ) ). + lv_anchor = get_comment_anchor( lo_comment ). lo_element_anchor->set_value( lv_anchor ). - lo_element_clientdata->append_child( new_child = lo_element_anchor ). - lo_element_autofill = lo_document->create_simple_element( name = lc_xml_node_autofill - parent = lo_document ). - lo_element_autofill->set_value( 'False' ). - lo_element_clientdata->append_child( new_child = lo_element_autofill ). - lo_element_row = lo_document->create_simple_element( name = lc_xml_node_row - parent = lo_document ). + lo_element_autofill = lo_document->create_simple_element( name = `x:AutoFill` + parent = lo_element_clientdata ). + lo_element_autofill->set_value( `False` ). + + lo_element_row = lo_document->create_simple_element( name = `x:Row` + parent = lo_element_clientdata ). lv_int_value = lv_row - 1. lv_int_value_string = lv_int_value. lo_element_row->set_value( lv_int_value_string ). - lo_element_clientdata->append_child( new_child = lo_element_row ). - lo_element_column = lo_document->create_simple_element( name = lc_xml_node_column - parent = lo_document ). + + lo_element_column = lo_document->create_simple_element( name = `x:Column` + parent = lo_element_clientdata ). lv_int_value = lv_column - 1. lv_int_value_string = lv_int_value. lo_element_column->set_value( lv_int_value_string ). - lo_element_clientdata->append_child( new_child = lo_element_column ). - lo_element_shape->append_child( new_child = lo_element_clientdata ). - - lo_element_root->append_child( new_child = lo_element_shape ). ENDWHILE. ********************************************************************** * STEP 6: Create xstring stream ep_content = render_xml_document( lo_document ). - ENDMETHOD. + ELSE. + +* Replace the eight numbers in with the current values +* (they may have been changed before calling the writer + lo_document = ixml->create_document( ). + CALL TRANSFORMATION id + SOURCE XML lo_comments->gv_full_vml + RESULT XML lo_document. + + lo_anchors = lo_document->get_elements_by_tag_name_ns( + name = `anchor` + uri = `urn:schemas-microsoft-com:office:excel` + ). + + lo_iterator = lo_comments->get_iterator( ). + WHILE lo_iterator->has_next( ). + lo_anchor ?= lo_anchors->get_item( sy-index - 1 ). + IF lo_anchor IS NOT BOUND. + EXIT. + ENDIF. + lo_comment ?= lo_iterator->get_next( ). + lv_anchor = get_comment_anchor( lo_comment ). + lo_anchor->set_value( lv_anchor ). + ENDWHILE. + + ep_content = render_xml_document( lo_document ). + + ENDIF. + +ENDMETHOD. METHOD create_xl_drawing_for_hdft_im. @@ -4430,8 +4353,6 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. lo_element_2->set_attribute_ns( name = 's' value = lv_value ). lo_element_2->set_attribute_ns( name = 'customFormat' value = '1' ). ENDIF. - ELSE. - ENDIF. ENDWHILE. @@ -6254,10 +6175,14 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. " and then to convert the STRING variable to UTF-8 using method CL_ABAP_CODEPAGE=>CONVERT_TO. " 1) RENDER TO XML STRING - lo_streamfactory = me->ixml->create_stream_factory( ). - lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_string ). - lo_renderer = me->ixml->create_renderer( ostream = lo_ostream document = io_document ). - lo_renderer->render( ). + IF io_document IS BOUND. + lo_streamfactory = me->ixml->create_stream_factory( ). + lo_ostream = lo_streamfactory->create_ostream_cstring( string = lv_string ). + lo_renderer = me->ixml->create_renderer( ostream = lo_ostream document = io_document ). + lo_renderer->render( ). + ELSE. + lv_string = iv_document_as_string. + ENDIF. " 2) CONVERT IT TO UTF-8 "----------------- @@ -6571,4 +6496,17 @@ CLASS zcl_excel_writer_2007 IMPLEMENTATION. ep_file = me->create( ). ENDMETHOD. + + + METHOD GET_COMMENT_ANCHOR. + ev_anchor = number2string( io_comment->get_left_column( ) ) + && `, ` && number2string( io_comment->get_left_offset( ) ) + && `, ` && number2string( io_comment->get_top_row( ) ) + && `, ` && number2string( io_comment->get_top_offset( ) ) + && `, ` && number2string( io_comment->get_right_column( ) ) + && `, ` && number2string( io_comment->get_right_offset( ) ) + && `, ` && number2string( io_comment->get_bottom_row( ) ) + && `, ` && number2string( io_comment->get_bottom_offset( ) ). + condense ev_anchor. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_excel_writer_2007.clas.xml b/src/zcl_excel_writer_2007.clas.xml index a10f598..8175dbb 100644 --- a/src/zcl_excel_writer_2007.clas.xml +++ b/src/zcl_excel_writer_2007.clas.xml @@ -23,41 +23,21 @@ E Create Excel - - CREATE - I - Create Excel - CREATE_CONTENT_TYPES E Create '[Content_Types].xml' - - CREATE_CONTENT_TYPES - I - Create '[Content_Types].xml' - CREATE_DOCPROPS_APP E Create 'docProps/app.xml' - - CREATE_DOCPROPS_APP - I - Create 'docProps/app.xml' - CREATE_DOCPROPS_CORE E Create 'docProps/core.xml' - - CREATE_DOCPROPS_CORE - I - Create 'docProps/core.xml' - CREATE_DXF_STYLE E @@ -68,31 +48,21 @@ E Create '_rels/.rels' - - CREATE_RELATIONSHIPS - I - Create '_rels/.rels' - CREATE_XL_CHARTS E Create 'xl/charts/chart1.xml' - CREATE_XL_CHARTS - I - Create 'xl/charts/chart1.xml' + CREATE_XL_COMMENTS + E + Create 'xl/comments1.xml' CREATE_XL_DRAWINGS E Create 'xl/drawings/drawing1.xml' - - CREATE_XL_DRAWINGS - I - Create 'xl/drawings/drawing1.xml' - CREATE_XL_DRAWINGS_HDFT_RELS E @@ -103,11 +73,6 @@ E Create 'xl/drawings/_rels/drawing1.xml.rels' - - CREATE_XL_DRAWINGS_RELS - I - Create 'xl/drawings/_rels/drawing1.xml.rels' - CREATE_XL_DRAWINGS_VML E @@ -124,40 +89,25 @@ Create 'xl/drawings/drawing1.xml' - CREATE_XL_DRAWING_ANCHOR - I - Create 'xl/drawings/drawing1.xml' + CREATE_XL_DRAWING_FOR_COMMENTS + E + Create 'xl/drawings/vmlDrawing1.vml' (style for comments) CREATE_XL_RELATIONSHIPS E Create 'xl/_rels/workbook.xml.rels' - - CREATE_XL_RELATIONSHIPS - I - Create 'xl/_rels/workbook.xml.rels' - CREATE_XL_SHAREDSTRINGS E Create 'xl/sharedStrings.xml' - - CREATE_XL_SHAREDSTRINGS - I - Create 'xl/sharedStrings.xml' - CREATE_XL_SHEET E Create 'xl/sheet.xml' - - CREATE_XL_SHEET - I - Create 'xl/sheet.xml' - CREATE_XL_SHEET_PAGEBREAKS E @@ -168,11 +118,6 @@ E Create 'xl/workbook/_rels/sheet.xml.rels' - - CREATE_XL_SHEET_RELS - I - Create 'xl/workbook/_rels/sheet.xml.rels' - CREATE_XL_SHEET_SHEET_DATA E @@ -183,251 +128,126 @@ E Create 'xl/styles.xml' - - CREATE_XL_STYLES - I - Create 'xl/styles.xml' - CREATE_XL_STYLES_COLOR_NODE E Create 'xl/styles.xml' color node - - CREATE_XL_STYLES_COLOR_NODE - I - Create 'xl/styles.xml' color node - CREATE_XL_TABLE E Create 'xl/tables/____.xml' - - CREATE_XL_TABLE - I - Create 'xl/tables/____.xml' - CREATE_XL_THEME E Create 'xl/theme/theme1.xml' - - CREATE_XL_THEME - I - Create 'xl/theme/theme1.xml' - CREATE_XL_WORKBOOK E Create 'xl/workbook.xml' - - CREATE_XL_WORKBOOK - I - Create 'xl/workbook.xml' - C_CONTENT_TYPES E Content Type XML File Name - - C_CONTENT_TYPES - I - Content Type XML File Name - C_DOCPROPS_APP E App XML File Name - - C_DOCPROPS_APP - I - App XML File Name - C_DOCPROPS_CORE E Core XML File Name - - C_DOCPROPS_CORE - I - Core XML File Name - C_OFF E Byte Value - - C_OFF - I - Byte Value - C_ON E Byte Value - - C_ON - I - Byte Value - C_RELATIONSHIPS E Rels XML File Name - - C_RELATIONSHIPS - I - Rels XML File Name - C_XL_CALCCHAIN E xlcalcChain XML File Name - - C_XL_CALCCHAIN - I - xlcalcChain XML File Name - C_XL_DRAWINGS E xlDrawings XML File Name - - C_XL_DRAWINGS - I - xlDrawings XML File Name - C_XL_DRAWINGS_RELS E xlDrawings XML File Name - - C_XL_DRAWINGS_RELS - I - xlDrawings XML File Name - C_XL_PRINTERSETTINGS E xlDrawings XML File Name - - C_XL_PRINTERSETTINGS - I - xlDrawings XML File Name - C_XL_RELATIONSHIPS E xlRels XML File Name - - C_XL_RELATIONSHIPS - I - xlRels XML File Name - C_XL_SHAREDSTRINGS E xlSharedStrings XML File Name - - C_XL_SHAREDSTRINGS - I - xlSharedStrings XML File Name - C_XL_SHEET E xlSheet XML File Name Template - - C_XL_SHEET - I - xlSheet XML File Name Template - C_XL_SHEET_RELS E xlSheetRels XML File Name Template - - C_XL_SHEET_RELS - I - xlSheetRels XML File Name Template - C_XL_STYLES E xlStyles XML File Name - - C_XL_STYLES - I - xlStyles XML File Name - C_XL_THEME E xlTheme XML File Name - - C_XL_THEME - I - xlTheme XML File Name - C_XL_WORKBOOK E xlWorkbook XML File Name - - C_XL_WORKBOOK - I - xlWorkbook XML File Name - EXCEL E Excel creator - - EXCEL - I - Excel creator - FLAG2BOOL E Convert a FLAG to BOOLEAN value - - FLAG2BOOL - I - Convert a FLAG to BOOLEAN value - GET_SHARED_STRING_INDEX E Get shared string index - - GET_SHARED_STRING_INDEX - I - Get shared string index - SET_VML_SHAPE_FOOTER E @@ -448,32 +268,37 @@ E Shared Strings - - SHARED_STRINGS - I - Shared Strings - STYLES_COND_MAPPING E Styles mapping - - STYLES_COND_MAPPING - I - Styles mapping - STYLES_MAPPING E Styles mapping - - STYLES_MAPPING - I - Styles mapping - + + + GET_COMMENT_ANCHOR + IO_COMMENT + E + Comment + + + RENDER_XML_DOCUMENT + IO_DOCUMENT + E + XML Doc as object + + + RENDER_XML_DOCUMENT + IV_DOCUMENT_AS_STRING + E + XML Doc as string + + diff --git a/src/zcl_excel_writer_csv.clas.xml b/src/zcl_excel_writer_csv.clas.xml index 7b1d8ad..fbd3df4 100644 --- a/src/zcl_excel_writer_csv.clas.xml +++ b/src/zcl_excel_writer_csv.clas.xml @@ -17,21 +17,11 @@ E Create - - CREATE - I - Create - CREATE_CSV E Create CSV ; Delimited format - - CREATE_CSV - I - Create CSV ; Delimited format - C_DEFAULT E @@ -42,41 +32,21 @@ E Delimiter - - DELIMITER - I - Delimiter - ENCLOSURE E Text inclusure character - - ENCLOSURE - I - Text inclusure character - EOL E End Of line - - EOL - I - End Of line - EXCEL E Excel creator - - EXCEL - I - Excel creator - INITIAL_EXT_DATE E @@ -87,51 +57,26 @@ E Activate worksheet by index before the CSV file creation - - SET_ACTIVE_SHEET_INDEX - I - Activate worksheet by index before the CSV file creation - SET_ACTIVE_SHEET_INDEX_BY_NAME E Activate worksheet by name before the CSV file creation - - SET_ACTIVE_SHEET_INDEX_BY_NAME - I - Activate worksheet by name before the CSV file creation - SET_DELIMITER E Set Delimiter value - - SET_DELIMITER - I - Set Delimiter value - SET_ENCLOSURE E Set Enclosure character - - SET_ENCLOSURE - I - Set Enclosure character - SET_ENDOFLINE E Set End Of Line character - - SET_ENDOFLINE - I - Set End Of Line character - SET_INITIAL_EXT_DATE E @@ -142,21 +87,11 @@ E Active Worksheet - - WORKSHEET_INDEX - I - Active Worksheet - WORKSHEET_NAME E Worksheets name - - WORKSHEET_NAME - I - Worksheets name - diff --git a/src/zexcel_pane_state.dtel.xml b/src/zexcel_pane_state.dtel.xml index d18f424..e70534d 100644 --- a/src/zexcel_pane_state.dtel.xml +++ b/src/zexcel_pane_state.dtel.xml @@ -9,15 +9,6 @@ E STRG - - R - - - - R - Pane state - - diff --git a/src/zexcel_pane_type.dtel.xml b/src/zexcel_pane_type.dtel.xml index dca2f00..c2d68d6 100644 --- a/src/zexcel_pane_type.dtel.xml +++ b/src/zexcel_pane_type.dtel.xml @@ -9,15 +9,6 @@ E STRG - - R - - - - R - Pane type - - diff --git a/src/zexcel_s_fieldcatalog.tabl.xml b/src/zexcel_s_fieldcatalog.tabl.xml index 30e2add..d49fd5d 100644 --- a/src/zexcel_s_fieldcatalog.tabl.xml +++ b/src/zexcel_s_fieldcatalog.tabl.xml @@ -130,125 +130,6 @@ E - - 1 - 4 - 5 - 6 - 8 - B - C - F - G - H - K - L - N - O - Q - R - S - T - U - V - W - c - d - - - - 1 - Fieldcatalog for Table Binding - - - 4 - Fieldcatalog for Table Binding - - - 5 - Fieldcatalog for Table Binding - - - 6 - Fieldcatalog for Table Binding - - - 8 - Fieldcatalog for Table Binding - - - B - Fieldcatalog for Table Binding - - - C - Fieldcatalog for Table Binding - - - F - Fieldcatalog for Table Binding - - - G - Fieldcatalog for Table Binding - - - H - Fieldcatalog for Table Binding - - - K - Fieldcatalog for Table Binding - - - L - Fieldcatalog for Table Binding - - - N - Fieldcatalog for Table Binding - - - O - Fieldcatalog for Table Binding - - - Q - Fieldcatalog for Table Binding - - - R - Fieldcatalog for Table Binding - - - S - Fieldcatalog for Table Binding - - - T - Fieldcatalog for Table Binding - - - U - Fieldcatalog for Table Binding - - - V - Fieldcatalog for Table Binding - - - W - Fieldcatalog for Table Binding - - - c - Fieldcatalog for Table Binding - - - d - Fieldcatalog for Table Binding - -