diff --git a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk index 709fcc8..8ff3f5f 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WORKSHEET.slnk @@ -126,7 +126,17 @@ public section. value(EP_SIZE) type I . methods GET_TABLES_ITERATOR returning - value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods GET_FREEZE_CELL + exporting + !EP_ROW type ZEXCEL_CELL_ROW + !EP_COLUMN type ZEXCEL_CELL_COLUMN . + methods FREEZE_PANES + importing + !IP_NUM_COLUMNS type I optional + !IP_NUM_ROWS type I optional + raising + ZCX_EXCEL . *"* protected components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! protected section. @@ -146,6 +156,8 @@ private section. data DEFAULT_ROW_DIMENSION type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . data EXCEL type ref to ZCL_EXCEL . data TABLES type ref to CL_OBJECT_COLLECTION . + data FREEZE_PANE_CELL_COLUMN type ZEXCEL_CELL_COLUMN . + data FREEZE_PANE_CELL_ROW type ZEXCEL_CELL_ROW . methods UPDATE_DIMENSION_RANGE . *"* local class implementation for public class @@ -181,6 +193,8 @@ private section. + + method ADD_NEW_CONDITIONAL_STYLE. @@ -868,6 +882,44 @@ endmethod. SHIFT lv_row_alpha LEFT DELETING LEADING space. CONCATENATE lv_column_alpha lv_row_alpha INTO lower_cell-cell_coords. +endmethod. + + + + + + METHOD freeze_panes. + data: lv_xsplit type i, + lv_ysplit type i. + + IF ip_num_columns IS NOT SUPPLIED AND ip_num_rows IS NOT SUPPLIED. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Pleas provide number of rows and/or columns to freeze'. + ENDIF. + + IF ip_num_columns IS SUPPLIED AND ip_num_columns <= 0. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Number of columns to freeze should be positive'. + ENDIF. + + IF ip_num_rows IS SUPPLIED AND ip_num_rows <= 0. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Number of rows to freeze should be positive'. + ENDIF. + + freeze_pane_cell_column = ip_num_columns + 1. + freeze_pane_cell_row = ip_num_rows + 1. +ENDMETHOD. + + + + + method GET_FREEZE_CELL. + ep_row = me->freeze_pane_cell_row. + ep_column = me->freeze_pane_cell_column. endmethod. diff --git a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk index 291dc83..071cd74 100644 --- a/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk +++ b/ZA2X/CLAS/ZCL_EXCEL_WRITER_2007.slnk @@ -1,6 +1,6 @@ - - + + class ZCL_EXCEL_WRITER_2007 definition public final @@ -97,28 +97,28 @@ private section. *"* implementation or private method's signature *"* use this source file for any macro definitions you need *"* in the implementation part of the class - - - - - - - - - - - - - - + + + + + + + + + + + + + + - METHOD zif_excel_writer~write_file. + method ZIF_EXCEL_WRITER~WRITE_FILE. me->excel = io_excel. ep_file = me->create( ). -ENDMETHOD. +endmethod. - - + + method CREATE. @@ -246,8 +246,8 @@ ENDMETHOD. endmethod. - - + + method CREATE_CONTENT_TYPES. @@ -331,7 +331,7 @@ endmethod. value = lc_xml_node_theme_pn ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_theme_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " Styles node lo_element = lo_document->create_simple_element( name = lc_xml_node_override @@ -340,7 +340,7 @@ endmethod. value = lc_xml_node_styles_pn ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_styles_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " rels node lo_element = lo_document->create_simple_element( name = lc_xml_node_default @@ -349,7 +349,7 @@ endmethod. value = lc_xml_node_rels_ext ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_rels_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " extension node lo_element = lo_document->create_simple_element( name = lc_xml_node_default @@ -358,7 +358,7 @@ endmethod. value = lc_xml_node_xml_ext ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_xml_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " Workbook node lo_element = lo_document->create_simple_element( name = lc_xml_node_override @@ -367,7 +367,7 @@ endmethod. value = lc_xml_node_workb_pn ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_workb_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " Properties node lo_element = lo_document->create_simple_element( name = lc_xml_node_override @@ -376,7 +376,7 @@ endmethod. value = lc_xml_node_props_pn ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_props_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " Worksheet node lv_worksheets_num = excel->get_worksheets_size( ). @@ -392,12 +392,12 @@ endmethod. value = lv_xml_node_worksheet_pn ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_worksheet_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ENDDO. lo_iterator = me->excel->get_worksheets_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_worksheet ?= lo_iterator->get_next( ). + WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. + lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). lo_nested_iterator = lo_worksheet->get_tables_iterator( ). @@ -413,7 +413,7 @@ endmethod. value = lv_value ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_table_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ENDWHILE. ENDWHILE. @@ -424,7 +424,7 @@ endmethod. value = lc_xml_node_strings_pn ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_strings_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " Strings node lo_element = lo_document->create_simple_element( name = lc_xml_node_override @@ -433,7 +433,7 @@ endmethod. value = lc_xml_node_core_pn ). lo_element->set_attribute_ns( name = lc_xml_attr_contenttype value = lc_xml_node_core_ct ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ********************************************************************** * STEP 5: Create xstring stream @@ -444,8 +444,8 @@ endmethod. endmethod. - - + + method CREATE_DOCPROPS_APP. @@ -517,22 +517,22 @@ endmethod. lo_element = lo_document->create_simple_element( name = lc_xml_node_application parent = lo_document ). lv_value = excel->properties->application. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " DocSecurity lo_element = lo_document->create_simple_element( name = lc_xml_node_docsecurity parent = lo_document ). lv_value = excel->properties->docsecurity. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " ScaleCrop lo_element = lo_document->create_simple_element( name = lc_xml_node_scalecrop parent = lo_document ). lv_value = me->flag2bool( excel->properties->scalecrop ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " HeadingPairs lo_element = lo_document->create_simple_element( name = lc_xml_node_headingpairs @@ -558,10 +558,10 @@ endmethod. prefix = lc_vt_ns parent = lo_document ). lv_value = excel->get_worksheets_name( ). - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_lpstr ). " lpstr node + lo_sub_element_lpstr->set_value( value = lv_value ). + lo_sub_element_variant->append_child( new_child = lo_sub_element_lpstr ). " lpstr node - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node + lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node " ** variant node lo_sub_element_variant = lo_document->create_simple_element_ns( name = lc_xml_node_variant @@ -575,14 +575,14 @@ endmethod. lv_value = excel->get_worksheets_size( ). SHIFT lv_value RIGHT DELETING TRAILING space. SHIFT lv_value LEFT DELETING LEADING space. - lo_sub_element_i4->set_value( lv_value ). - lo_sub_element_variant->append_child( lo_sub_element_i4 ). " lpstr node + lo_sub_element_i4->set_value( value = lv_value ). + lo_sub_element_variant->append_child( new_child = lo_sub_element_i4 ). " lpstr node - lo_sub_element_vector->append_child( lo_sub_element_variant ). " variant node + lo_sub_element_vector->append_child( new_child = lo_sub_element_variant ). " variant node - lo_element->append_child( lo_sub_element_vector ). " vector node + lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - lo_element_root->append_child( lo_element ). " HeadingPairs + lo_element_root->append_child( new_child = lo_element ). " HeadingPairs " TitlesOfParts @@ -611,13 +611,13 @@ endmethod. parent = lo_document ). lo_worksheet ?= lo_iterator->if_object_collection_iterator~get_next( ). lv_value = lo_worksheet->title. - lo_sub_element_lpstr->set_value( lv_value ). - lo_sub_element_vector->append_child( lo_sub_element_lpstr ). " lpstr node + lo_sub_element_lpstr->set_value( value = lv_value ). + lo_sub_element_vector->append_child( new_child = lo_sub_element_lpstr ). " lpstr node ENDWHILE. - lo_element->append_child( lo_sub_element_vector ). " vector node + lo_element->append_child( new_child = lo_sub_element_vector ). " vector node - lo_element_root->append_child( lo_element ). " TitlesOfParts + lo_element_root->append_child( new_child = lo_element ). " TitlesOfParts @@ -625,36 +625,36 @@ endmethod. lo_element = lo_document->create_simple_element( name = lc_xml_node_company parent = lo_document ). lv_value = excel->properties->company. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " LinksUpToDate lo_element = lo_document->create_simple_element( name = lc_xml_node_linksuptodate parent = lo_document ). lv_value = me->flag2bool( excel->properties->linksuptodate ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " SharedDoc lo_element = lo_document->create_simple_element( name = lc_xml_node_shareddoc parent = lo_document ). lv_value = me->flag2bool( excel->properties->shareddoc ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " HyperlinksChanged lo_element = lo_document->create_simple_element( name = lc_xml_node_hyperlinkschanged parent = lo_document ). lv_value = me->flag2bool( excel->properties->hyperlinkschanged ). - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " AppVersion lo_element = lo_document->create_simple_element( name = lc_xml_node_appversion parent = lo_document ). lv_value = excel->properties->appversion. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). ********************************************************************** * STEP 5: Create xstring stream @@ -665,8 +665,8 @@ endmethod. endmethod. - - + + method CREATE_DOCPROPS_CORE. @@ -737,16 +737,16 @@ endmethod. prefix = lc_dc_ns parent = lo_document ). lv_value = excel->properties->creator. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " lastModifiedBy node lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_lastmodifiedby prefix = lc_cp_ns parent = lo_document ). lv_value = excel->properties->lastmodifiedby. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " Created node lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_created @@ -757,8 +757,8 @@ endmethod. value = lc_xml_attr_target ). lv_value = excel->properties->created. lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). " Modified node lo_element = lo_document->create_simple_element_ns( name = lc_xml_node_modified @@ -769,8 +769,8 @@ endmethod. value = lc_xml_attr_target ). lv_value = excel->properties->modified. lv_value = '2010-07-04T14:58:53Z'. - lo_element->set_value( lv_value ). - lo_element_root->append_child( lo_element ). + lo_element->set_value( value = lv_value ). + lo_element_root->append_child( new_child = lo_element ). ********************************************************************** * STEP 5: Create xstring stream @@ -781,8 +781,8 @@ endmethod. endmethod. - - + + method CREATE_RELATIONSHIPS. @@ -847,7 +847,7 @@ endmethod. value = lc_xml_node_rId3_tp ). lo_element->set_attribute_ns( name = lc_xml_attr_target value = lc_xml_node_rId3_tg ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " Styles node lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship @@ -858,7 +858,7 @@ endmethod. value = lc_xml_node_rId2_tp ). lo_element->set_attribute_ns( name = lc_xml_attr_target value = lc_xml_node_rId2_tg ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " rels node lo_element = lo_document->create_simple_element( name = lc_xml_node_relationship @@ -869,7 +869,7 @@ endmethod. value = lc_xml_node_rId1_tp ). lo_element->set_attribute_ns( name = lc_xml_attr_target value = lc_xml_node_rId1_tg ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ********************************************************************** * STEP 5: Create xstring stream @@ -880,8 +880,8 @@ endmethod. endmethod. - - + + method CREATE_XL_RELATIONSHIPS. @@ -960,7 +960,7 @@ endmethod. value = lc_xml_node_rid_styles_tp ). lo_element->set_attribute_ns( name = lc_xml_attr_target value = lc_xml_node_rid_styles_tg ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " Relationship node @@ -978,7 +978,7 @@ endmethod. value = lc_xml_node_rid_theme_tp ). lo_element->set_attribute_ns( name = lc_xml_attr_target value = lc_xml_node_rid_theme_tg ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). lv_size = excel->get_worksheets_size( ). @@ -999,7 +999,7 @@ endmethod. value = lc_xml_node_rid_sheet_tp ). lo_element->set_attribute_ns( name = lc_xml_attr_target value = lv_xml_node_ridx_tg ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ENDDO. " Relationship node @@ -1017,7 +1017,7 @@ endmethod. value = lc_xml_node_rid_shared_tp ). lo_element->set_attribute_ns( name = lc_xml_attr_target value = lc_xml_node_rid_shared_tg ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ********************************************************************** * STEP 5: Create xstring stream @@ -1028,8 +1028,8 @@ endmethod. endmethod. - - + + method CREATE_XL_SHAREDSTRINGS. @@ -1131,9 +1131,9 @@ endmethod. parent = lo_document ). lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_t parent = lo_document ). - lo_sub_element->set_value( <fs_sheet_string>-string_value ). - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). + lo_sub_element->set_value( value = <fs_sheet_string>-string_value ). + lo_element->append_child( new_child = lo_sub_element ). + lo_element_root->append_child( new_child = lo_element ). ENDLOOP. ********************************************************************** @@ -1145,10 +1145,10 @@ endmethod. endmethod. - - - - + + + + method CREATE_XL_SHEET. ********************************************************************** * abap2xlsx @@ -1187,6 +1187,7 @@ endmethod. lc_xml_node_sheetviews TYPE string VALUE 'sheetViews', lc_xml_node_sheetview TYPE string VALUE 'sheetView', lc_xml_node_selection TYPE string VALUE 'selection', + lc_xml_node_pane TYPE string VALUE 'pane', lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', lc_xml_node_cols TYPE string VALUE 'cols', lc_xml_node_col TYPE string VALUE 'col', @@ -1285,7 +1286,10 @@ endmethod. ls_percent_val TYPE string, lv_cell_row_s TYPE string, ls_last_row TYPE zexcel_s_cell_data, - ls_style_mapping TYPE zexcel_s_styles_mapping. + ls_style_mapping TYPE zexcel_s_styles_mapping, + lv_freeze_cell_row TYPE zexcel_cell_row, + lv_freeze_cell_column TYPE zexcel_cell_column, + lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha. DATA: default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. @@ -1346,17 +1350,17 @@ endmethod. lo_element_2->set_attribute_ns( name = lc_xml_attr_summaryright value = '1' ). - lo_element->append_child( lo_element_2 ). + lo_element->append_child( new_child = lo_element_2 ). " TODO pageSetUpPr - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " dimension node lo_element = lo_document->create_simple_element( name = lc_xml_node_dimension parent = lo_document ). lv_value = io_worksheet->get_dimension_range( ). lo_element->set_attribute_ns( name = lc_xml_attr_ref value = lv_value ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " sheetViews node lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetviews @@ -1377,6 +1381,43 @@ endmethod. lo_element_2->set_attribute_ns( name = lc_xml_attr_showrowcolheaders value = '1' ). + " freeze panes + io_worksheet->get_freeze_cell( IMPORTING ep_row = lv_freeze_cell_row + ep_column = lv_freeze_cell_column ). + + IF lv_freeze_cell_row IS NOT INITIAL AND lv_freeze_cell_column IS NOT INITIAL. + lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_pane + parent = lo_element_2 ). + + IF lv_freeze_cell_row > 1. + lv_value = lv_freeze_cell_row - 1. + CONDENSE lv_value. + lo_element_3->set_attribute_ns( name = 'ySplit' + value = lv_value ). + ENDIF. + + IF lv_freeze_cell_column > 1. + lv_value = lv_freeze_cell_column - 1. + CONDENSE lv_value. + lo_element_3->set_attribute_ns( name = 'xSplit' + value = lv_value ). + ENDIF. + + lv_freeze_cell_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column = lv_freeze_cell_column ). + lv_value = zcl_excel_common=>number_to_excel_string( ip_value = lv_freeze_cell_row ). + CONCATENATE lv_freeze_cell_column_alpha lv_value INTO lv_value. + lo_element_3->set_attribute_ns( name = 'topLeftCell' + value = lv_value ). + + lo_element_3->set_attribute_ns( name = 'activePane' + value = 'bottomRight' ). + + lo_element_3->set_attribute_ns( name = 'state' + value = 'frozen' ). + + lo_element_2->append_child( lo_element_3 ). + ENDIF. + " selection node lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_selection parent = lo_document ). @@ -1387,11 +1428,11 @@ endmethod. lo_element_3->set_attribute_ns( name = lc_xml_attr_sqref value = lv_value ). - lo_element_2->append_child( lo_element_3 ). " sheetView node + lo_element_2->append_child( new_child = lo_element_3 ). " sheetView node - lo_element->append_child( lo_element_2 ). " sheetView node + lo_element->append_child( new_child = lo_element_2 ). " sheetView node - lo_element_root->append_child( lo_element ). " sheetViews node + lo_element_root->append_child( new_child = lo_element ). " sheetViews node column_dimensions[] = io_worksheet->get_column_dimensions( ). @@ -1446,7 +1487,7 @@ endmethod. lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol value = lv_value ). - lo_element_root->append_child( lo_element ). " sheetFormatPr node + lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node " cols node IF NOT column_dimensions IS INITIAL. lo_element = lo_document->create_simple_element( name = lc_xml_node_cols @@ -1511,10 +1552,10 @@ endmethod. lo_element_2->set_attribute_ns( name = lc_xml_attr_style value = lv_value ). - lo_element->append_child( lo_element_2 ). " col node + lo_element->append_child( new_child = lo_element_2 ). " col node ENDLOOP. ENDIF. - lo_element_root->append_child( lo_element ). " cols node + lo_element_root->append_child( new_child = lo_element ). " cols node " sheetData node lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata parent = lo_document ). @@ -1593,8 +1634,8 @@ endmethod. lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f parent = lo_document ). lv_value = <ls_sheet_content>-cell_formula. - lo_element_4->set_value( lv_value ). - lo_element_3->append_child( lo_element_4 ). " fomula node + lo_element_4->set_value( value = lv_value ). + lo_element_3->append_child( new_child = lo_element_4 ). " fomula node ELSE. IF <ls_sheet_content>-data_type IS NOT INITIAL. lo_element_3->set_attribute_ns( name = lc_xml_attr_t @@ -1607,28 +1648,28 @@ endmethod. IF <ls_sheet_content>-data_type EQ 's'. lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ). - lo_element_4->set_value( lv_value ). + lo_element_4->set_value( value = lv_value ). ELSE. lv_value = <ls_sheet_content>-cell_value. - lo_element_4->set_value( lv_value ). + lo_element_4->set_value( value = lv_value ). ENDIF. - lo_element_3->append_child( lo_element_4 ). " value node + lo_element_3->append_child( new_child = lo_element_4 ). " value node ENDIF. - lo_element_2->append_child( lo_element_3 ). " column node + lo_element_2->append_child( new_child = lo_element_3 ). " column node IF ls_last_row-cell_row NE <ls_sheet_content>-cell_row. - lo_element->append_child( lo_element_2 ). " row node + lo_element->append_child( new_child = lo_element_2 ). " row node ls_last_row = <ls_sheet_content>. ENDIF. ENDLOOP. - lo_element_root->append_child( lo_element ). " sheetData node + lo_element_root->append_child( new_child = lo_element ). " sheetData node " Conditional formatting node lo_iterator = io_worksheet->get_cond_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style_conditional ?= lo_iterator->get_next( ). + WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. + lo_style_conditional ?= lo_iterator->if_object_collection_iterator~get_next( ). IF lo_style_conditional->rule IS INITIAL. CONTINUE. ENDIF. @@ -1705,11 +1746,11 @@ endmethod. value = 'percent' ). lo_element_4->set_attribute_ns( name = lc_xml_attr_val value = ls_percent_val ). - lo_element_3->append_child( lo_element_4 ). " cfvo node + lo_element_3->append_child( new_child = lo_element_4 ). " cfvo node ENDLOOP. - lo_element_2->append_child( lo_element_3 ). " iconset node + lo_element_2->append_child( new_child = lo_element_3 ). " iconset node WHEN zcl_excel_style_conditional=>c_rule_cellis. lo_element_2->set_attribute_ns( name = lc_xml_attr_dxfid value = '0' ). " @TODO <***************************** @@ -1720,14 +1761,14 @@ endmethod. lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula parent = lo_document ). lv_value = lo_style_conditional->formula. - lo_element_3->set_value( lv_value ). - lo_element_2->append_child( lo_element_3 ). " formula node + lo_element_3->set_value( value = lv_value ). + lo_element_2->append_child( new_child = lo_element_3 ). " formula node ENDCASE. - lo_element->append_child( lo_element_2 ). " cfRule node + lo_element->append_child( new_child = lo_element_2 ). " cfRule node - lo_element_root->append_child( lo_element ). " Conditional formatting node + lo_element_root->append_child( new_child = lo_element ). " Conditional formatting node ENDWHILE. @@ -1737,8 +1778,8 @@ endmethod. parent = lo_document ). " Conditional formatting node lo_iterator = io_worksheet->get_data_validations_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_data_validation ?= lo_iterator->get_next( ). + WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. + lo_data_validation ?= lo_iterator->if_object_collection_iterator~get_next( ). " dataValidation node lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_datavalidation parent = lo_document ). @@ -1776,13 +1817,13 @@ endmethod. lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_formula1 parent = lo_document ). lv_value = lo_data_validation->value. - lo_element_3->set_value( lv_value ). + lo_element_3->set_value( value = lv_value ). - lo_element_2->append_child( lo_element_3 ). " formula1 node + lo_element_2->append_child( new_child = lo_element_3 ). " formula1 node - lo_element->append_child( lo_element_2 ). " dataValidation node + lo_element->append_child( new_child = lo_element_2 ). " dataValidation node ENDWHILE. - lo_element_root->append_child( lo_element ). " dataValidations node + lo_element_root->append_child( new_child = lo_element ). " dataValidations node ENDIF. t_range_merge = io_worksheet->get_merge( ). @@ -1797,8 +1838,8 @@ endmethod. lo_element_2->set_attribute_ns( name = lc_xml_attr_ref value = <fs_range_merge> ). - lo_element->append_child( lo_element_2 ). - lo_element_root->append_child( lo_element ). + lo_element->append_child( new_child = lo_element_2 ). + lo_element_root->append_child( new_child = lo_element ). io_worksheet->delete_merge( ). ENDLOOP. ENDIF. @@ -1819,7 +1860,7 @@ endmethod. value = '0.3' ). " @TODO <***************************** lo_element->set_attribute_ns( name = lc_xml_attr_footer value = '0.3' ). " @TODO <***************************** - lo_element_root->append_child( lo_element ). " sheetFormatPr node + lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node * tables DATA lv_table_count TYPE i. @@ -1835,8 +1876,8 @@ endmethod. lv_table_count = 0. lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_table ?= lo_iterator->get_next( ). + WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. + lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). add 1 to lv_table_count. lv_value = lv_table_count. @@ -1846,11 +1887,11 @@ endmethod. parent = lo_element ). lo_element_2->set_attribute_ns( name = 'r:id' value = lv_value ). - lo_element->append_child( lo_element_2 ). + lo_element->append_child( new_child = lo_element_2 ). ENDWHILE. - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ENDIF. @@ -1863,9 +1904,9 @@ endmethod. endmethod. - - - + + + method CREATE_XL_SHEET_RELS. @@ -1919,8 +1960,8 @@ endmethod. " Add sheet Relationship nodes here lv_counter = 0. lo_iterator = io_worksheet->get_tables_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_table ?= lo_iterator->get_next( ). + WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. + lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). ADD 1 TO lv_counter. lv_value = lv_counter. @@ -1938,7 +1979,7 @@ endmethod. CONCATENATE '../tables/' lv_value '.xml' INTO lv_value. lo_element->set_attribute_ns( name = lc_xml_attr_target value = lv_value ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ENDWHILE. ********************************************************************** @@ -1950,9 +1991,9 @@ endmethod. endmethod. - - - METHOD create_xl_styles. + + + method CREATE_XL_STYLES. ** Constant node name @@ -2123,8 +2164,8 @@ endmethod. * Compress styles lo_iterator = excel->get_styles_iterator( ). - WHILE lo_iterator->has_next( ) EQ abap_true. - lo_style ?= lo_iterator->get_next( ). + WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. + lo_style ?= lo_iterator->if_object_collection_iterator~get_next( ). ls_font = lo_style->font->get_structure( ). ls_fill = lo_style->fill->get_structure( ). ls_border = lo_style->borders->get_structure( ). @@ -2235,7 +2276,7 @@ endmethod. lv_value = ls_numfmt-numfmt. lo_element_numfmt->set_attribute_ns( name = lc_xml_attr_formatcode value = lv_value ). - lo_element_numfmts->append_child( lo_element_numfmt ). + lo_element_numfmts->append_child( new_child = lo_element_numfmt ). ENDLOOP. " create font elements @@ -2245,12 +2286,12 @@ endmethod. IF ls_font-bold EQ abap_true. lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_b parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). ENDIF. IF ls_font-italic EQ abap_true. lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_i parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). ENDIF. IF ls_font-underline EQ abap_true. lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_u @@ -2258,12 +2299,12 @@ endmethod. lv_value = ls_font-underline_mode. lo_sub_element->set_attribute_ns( name = lc_xml_attr_val value = lv_value ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). ENDIF. IF ls_font-strikethrough EQ abap_true. lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_strike parent = lo_document ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). ENDIF. "size lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_sz @@ -2273,21 +2314,21 @@ endmethod. SHIFT lv_value LEFT DELETING LEADING space. lo_sub_element->set_attribute_ns( name = lc_xml_attr_val value = lv_value ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). "color lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_color parent = lo_document ). lv_value = ls_font-color. lo_sub_element->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). "name lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_name parent = lo_document ). lv_value = ls_font-name. lo_sub_element->set_attribute_ns( name = lc_xml_attr_val value = lv_value ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). "family lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_family parent = lo_document ). @@ -2296,15 +2337,15 @@ endmethod. SHIFT lv_value LEFT DELETING LEADING space. lo_sub_element->set_attribute_ns( name = lc_xml_attr_val value = lv_value ). - lo_element_font->append_child( lo_sub_element ). + lo_element_font->append_child( new_child = lo_sub_element ). "scheme lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_scheme parent = lo_document ). lv_value = ls_font-scheme. lo_sub_element->set_attribute_ns( name = lc_xml_attr_val value = lv_value ). - lo_element_font->append_child( lo_sub_element ). - lo_element_fonts->append_child( lo_element_font ). + lo_element_font->append_child( new_child = lo_sub_element ). + lo_element_fonts->append_child( new_child = lo_element_font ). APPEND ls_font-color TO lt_colors. ENDLOOP. @@ -2326,7 +2367,7 @@ endmethod. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." fgcolor + lo_sub_element->append_child( new_child = lo_sub_element_2 )." fgcolor ENDIF. " bgcolor IF ls_fill-bgcolor IS NOT INITIAL. @@ -2336,11 +2377,11 @@ endmethod. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_indexed value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." bgcolor + lo_sub_element->append_child( new_child = lo_sub_element_2 )." bgcolor ENDIF. - lo_element_fill->append_child( lo_sub_element )."pattern - lo_element_fills->append_child( lo_element_fill ). + lo_element_fill->append_child( new_child = lo_sub_element )."pattern + lo_element_fills->append_child( new_child = lo_element_fill ). " Collect color IF ls_fill-fgcolor IS NOT INITIAL. APPEND ls_fill-fgcolor TO lt_colors. @@ -2365,11 +2406,11 @@ endmethod. lv_value = ls_border-left_color. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color + lo_sub_element->append_child( new_child = lo_sub_element_2 )." color * Collect color APPEND ls_border-left_color TO lt_colors. ENDIF. - lo_element_border->append_child( lo_sub_element ). + lo_element_border->append_child( new_child = lo_sub_element ). "right lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_right @@ -2385,11 +2426,11 @@ endmethod. lv_value = ls_border-right_color. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color + lo_sub_element->append_child( new_child = lo_sub_element_2 )." color * Collect color APPEND ls_border-right_color TO lt_colors. ENDIF. - lo_element_border->append_child( lo_sub_element ). + lo_element_border->append_child( new_child = lo_sub_element ). "top lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_top @@ -2405,11 +2446,11 @@ endmethod. lv_value = ls_border-top_color. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color + lo_sub_element->append_child( new_child = lo_sub_element_2 )." color * Collect color APPEND ls_border-top_color TO lt_colors. ENDIF. - lo_element_border->append_child( lo_sub_element ). + lo_element_border->append_child( new_child = lo_sub_element ). "bottom lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_bottom @@ -2425,11 +2466,11 @@ endmethod. lv_value = ls_border-bottom_color. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color + lo_sub_element->append_child( new_child = lo_sub_element_2 )." color * Collect color APPEND ls_border-bottom_color TO lt_colors. ENDIF. - lo_element_border->append_child( lo_sub_element ). + lo_element_border->append_child( new_child = lo_sub_element ). "diagonal lo_sub_element = lo_document->create_simple_element( name = lc_xml_node_diagonal @@ -2445,12 +2486,12 @@ endmethod. lv_value = ls_border-diagonal_color. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color + lo_sub_element->append_child( new_child = lo_sub_element_2 )." color * Collect color APPEND ls_border-diagonal_color TO lt_colors. ENDIF. - lo_element_border->append_child( lo_sub_element ). - lo_element_borders->append_child( lo_element_border ). + lo_element_border->append_child( new_child = lo_sub_element ). + lo_element_borders->append_child( new_child = lo_element_border ). ENDLOOP. " update attribute "count" @@ -2480,10 +2521,10 @@ endmethod. value = lv_value ). " Append to root node - lo_element_root->append_child( lo_element_numfmts ). - lo_element_root->append_child( lo_element_fonts ). - lo_element_root->append_child( lo_element_fills ). - lo_element_root->append_child( lo_element_borders ). + lo_element_root->append_child( new_child = lo_element_numfmts ). + lo_element_root->append_child( new_child = lo_element_fonts ). + lo_element_root->append_child( new_child = lo_element_fills ). + lo_element_root->append_child( new_child = lo_element_borders ). " cellstylexfs node lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstylexfs @@ -2502,8 +2543,8 @@ endmethod. lo_sub_element->set_attribute_ns( name = lc_xml_attr_borderid value = lc_off ). - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). + lo_element->append_child( new_child = lo_sub_element ). + lo_element_root->append_child( new_child = lo_element ). LOOP AT lt_cellxfs INTO ls_cellxfs. lo_element = lo_document->create_simple_element( name = lc_xml_node_xf @@ -2605,12 +2646,12 @@ endmethod. value = lv_value ). ENDIF. - lo_element->append_child( lo_sub_element_2 ). + lo_element->append_child( new_child = lo_sub_element_2 ). ENDIF. - lo_element_cellxfs->append_child( lo_element ). + lo_element_cellxfs->append_child( new_child = lo_element ). ENDLOOP. - lo_element_root->append_child( lo_element_cellxfs ). + lo_element_root->append_child( new_child = lo_element_cellxfs ). " cellStyles node lo_element = lo_document->create_simple_element( name = lc_xml_node_cellstyles @@ -2627,15 +2668,15 @@ endmethod. lo_sub_element->set_attribute_ns( name = lc_xml_attr_builtinid value = lc_off ). - lo_element->append_child( lo_sub_element ). - lo_element_root->append_child( lo_element ). + lo_element->append_child( new_child = lo_sub_element ). + lo_element_root->append_child( new_child = lo_element ). " dxfs node lo_element = lo_document->create_simple_element( name = lc_xml_node_dxfs parent = lo_document ). lo_element->set_attribute_ns( name = lc_xml_attr_count value = '0' ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " tableStyles node lo_element = lo_document->create_simple_element( name = lc_xml_node_tablestyles @@ -2646,7 +2687,7 @@ endmethod. value = zcl_excel_table=>builtinstyle_medium9 ). lo_element->set_attribute_ns( name = lc_xml_attr_defaultpivotstyle value = zcl_excel_table=>builtinstyle_pivot_light16 ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " colors node lo_element = lo_document->create_simple_element( name = lc_xml_node_colors @@ -2665,11 +2706,11 @@ endmethod. lv_value = ls_color. lo_sub_element_2->set_attribute_ns( name = lc_xml_attr_rgb value = lv_value ). - lo_sub_element->append_child( lo_sub_element_2 )." color node + lo_sub_element->append_child( new_child = lo_sub_element_2 )." color node ENDLOOP. - lo_element->append_child( lo_sub_element )." mruColors node - lo_element_root->append_child( lo_element )." colors node + lo_element->append_child( new_child = lo_sub_element )." mruColors node + lo_element_root->append_child( new_child = lo_element )." colors node ********************************************************************** * STEP 5: Create xstring stream @@ -2678,12 +2719,12 @@ endmethod. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -ENDMETHOD. +endmethod. - - - - METHOD create_xl_table. + + + + method CREATE_XL_TABLE. DATA: lc_xml_node_table TYPE string VALUE 'table', lc_xml_node_relationship TYPE string VALUE 'Relationship', @@ -2772,7 +2813,7 @@ ENDMETHOD. lo_element->set_attribute_ns( name = 'ref' value = lv_ref ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). "columns lo_element = lo_document->create_simple_element( name = 'tableColumns' @@ -2788,7 +2829,7 @@ ENDMETHOD. lo_element->set_attribute_ns( name = 'count' value = lv_value ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). LOOP AT io_table->fieldcat INTO ls_fieldcat WHERE dynpfld = abap_true. lo_element2 = lo_document->create_simple_element_ns( name = 'tableColumn' @@ -2807,7 +2848,7 @@ ENDMETHOD. value = ls_fieldcat-totals_function ). ENDIF. - lo_element->append_child( lo_element2 ). + lo_element->append_child( new_child = lo_element2 ). ENDLOOP. @@ -2841,7 +2882,7 @@ ENDMETHOD. lo_element->set_attribute_ns( name = 'showColumnStripes' value = lv_value ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ********************************************************************** * STEP 5: Create xstring stream lo_streamfactory = lo_ixml->create_stream_factory( ). @@ -2849,10 +2890,10 @@ ENDMETHOD. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). -ENDMETHOD. +endmethod. - - + + method CREATE_XL_THEME. @@ -2940,8 +2981,8 @@ ENDMETHOD. endmethod. - - + + method CREATE_XL_WORKBOOK. @@ -3028,14 +3069,14 @@ endmethod. value = '4' ). lo_element->set_attribute_ns( name = lc_xml_attr_rupbuild value = '4506' ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " fileVersion node lo_element = lo_document->create_simple_element( name = lc_xml_node_workbookpr parent = lo_document ). lo_element->set_attribute_ns( name = lc_xml_attr_themeversion value = '124226' ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). " bookviews node lo_element = lo_document->create_simple_element( name = lc_xml_node_bookviews @@ -3051,8 +3092,8 @@ endmethod. value = '19035' ). lo_sub_element->set_attribute_ns( name = lc_xml_attr_windowheight value = '8445' ). - lo_element->append_child( lo_sub_element )." bookview node - lo_element_root->append_child( lo_element )." bookviews node + lo_element->append_child( new_child = lo_sub_element )." bookview node + lo_element_root->append_child( new_child = lo_element )." bookviews node " sheets node lo_element = lo_document->create_simple_element( name = lc_xml_node_sheets @@ -3077,9 +3118,9 @@ endmethod. lo_sub_element->set_attribute_ns( name = lc_xml_attr_id prefix = lc_r_ns value = lv_xml_node_ridx_id ). - lo_element->append_child( lo_sub_element ). " sheet node + lo_element->append_child( new_child = lo_sub_element ). " sheet node ENDWHILE. - lo_element_root->append_child( lo_element )." sheets node + lo_element_root->append_child( new_child = lo_element )." sheets node " ranges node @@ -3096,17 +3137,17 @@ endmethod. lo_sub_element->set_attribute_ns( name = lc_xml_attr_name value = lv_value ). lv_value = lo_range->get_value( ). - lo_sub_element->set_value( lv_value ). - lo_element->append_child( lo_sub_element ). " range node + lo_sub_element->set_value( value = lv_value ). + lo_element->append_child( new_child = lo_sub_element ). " range node ENDWHILE. - lo_element_root->append_child( lo_element )." ranges node + lo_element_root->append_child( new_child = lo_element )." ranges node " calcPr node lo_element = lo_document->create_simple_element( name = lc_xml_node_calcpr parent = lo_document ). lo_element->set_attribute_ns( name = lc_xml_attr_calcid value = '125725' ). - lo_element_root->append_child( lo_element ). + lo_element_root->append_child( new_child = lo_element ). ********************************************************************** @@ -3118,9 +3159,9 @@ endmethod. endmethod. - - - + + + method FLAG2BOOL. @@ -3131,9 +3172,9 @@ endmethod. ENDIF. endmethod. - - - + + + method GET_SHARED_STRING_INDEX. diff --git a/ZA2X/PROG/ZDEMO_EXCEL15.slnk b/ZA2X/PROG/ZDEMO_EXCEL15.slnk index 3859adb..4024b97 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL15.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL15.slnk @@ -1,5 +1,5 @@ - - + + @@ -15,8 +15,9 @@ REPORT zdemo_excel15. -DATA: excel TYPE REF TO zcl_excel, - reader TYPE REF TO zif_excel_reader. +DATA: excel TYPE REF TO zcl_excel, + lo_excel_writer TYPE REF TO zif_excel_writer, + reader TYPE REF TO zif_excel_reader. DATA: lv_file TYPE xstring, lv_bytecount TYPE i, @@ -25,7 +26,9 @@ DATA: lv_file TYPE xstring, TRY. CREATE OBJECT reader TYPE zcl_excel_reader_2007. excel = reader->load_file( 'C:\iTab.xlsx' ). - lv_file = excel->save_as( zcl_excel=>c_xlsx ). + + CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. + lv_file = lo_excel_writer->write_file( excel ). " Convert to binary CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' diff --git a/ZA2X/PROG/ZDEMO_EXCEL3.slnk b/ZA2X/PROG/ZDEMO_EXCEL3.slnk index e2b6025..47c2b45 100644 --- a/ZA2X/PROG/ZDEMO_EXCEL3.slnk +++ b/ZA2X/PROG/ZDEMO_EXCEL3.slnk @@ -38,10 +38,12 @@ ls_table_settings-show_row_stripes = abap_true. lo_worksheet->bind_table( ip_table = lt_test is_table_settings = ls_table_settings ). +lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling + column_dimension = lo_worksheet->get_column_dimension( 'E' ). "make date field a bit wider column_dimension->set_width( 11 ). -create object lo_excel_writer type zcl_excel_writer_2007. +CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. lv_file = lo_excel_writer->write_file( lo_excel ). " Convert to binary