diff --git a/src/zangry_birds.prog.abap b/src/zangry_birds.prog.abap index a31d4ea..07cdec5 100644 --- a/src/zangry_birds.prog.abap +++ b/src/zangry_birds.prog.abap @@ -22,7 +22,7 @@ DATA: lo_excel TYPE REF TO zcl_excel, lo_style_color7 TYPE REF TO zcl_excel_style, lo_style_credit TYPE REF TO zcl_excel_style, lo_style_link TYPE REF TO zcl_excel_style, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, lo_hyperlink TYPE REF TO zcl_excel_hyperlink. @@ -712,8 +712,8 @@ START-OF-SELECTION. ip_style = ls_mapper ). lv_col = lv_col + 1. - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = lv_col_str ). - lo_column_dimension->set_width( ip_width = 2 ). + lo_column = lo_worksheet->get_column( ip_column = lv_col_str ). + lo_column->set_width( ip_width = 2 ). ENDLOOP. lo_worksheet->set_show_gridlines( i_show_gridlines = abap_false ). @@ -730,8 +730,8 @@ START-OF-SELECTION. ip_style = lv_style_link_guid ip_hyperlink = lo_hyperlink ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'AP' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'AP' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). lo_worksheet->set_merge( ip_row = 15 ip_column_start = 'AP' ip_row_to = 22 ip_column_end = 'AR' ). lo_worksheet->set_merge( ip_row = 24 ip_column_start = 'AP' ip_row_to = 26 ip_column_end = 'AR' ). diff --git a/src/zcl_excel_column.clas.abap b/src/zcl_excel_column.clas.abap new file mode 100644 index 0000000..35c310b --- /dev/null +++ b/src/zcl_excel_column.clas.abap @@ -0,0 +1,230 @@ +class ZCL_EXCEL_COLUMN definition + public + final + create public . + +*"* public components of class ZCL_EXCEL_COLUMN +*"* do not include other source files here!!! +public section. + type-pools ABAP . + + methods CONSTRUCTOR + importing + !IP_INDEX type ZEXCEL_CELL_COLUMN_ALPHA + !IP_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET + !IP_EXCEL type ref to ZCL_EXCEL . + methods GET_AUTO_SIZE + returning + value(R_AUTO_SIZE) type ABAP_BOOL . + methods GET_COLLAPSED + returning + value(R_COLLAPSED) type ABAP_BOOL . + methods GET_COLUMN_INDEX + returning + value(R_COLUMN_INDEX) type INT4 . + methods GET_OUTLINE_LEVEL + returning + value(R_OUTLINE_LEVEL) type INT4 . + methods GET_VISIBLE + returning + value(R_VISIBLE) type ABAP_BOOL . + methods GET_WIDTH + returning + value(R_WIDTH) type FLOAT . + methods GET_XF_INDEX + returning + value(R_XF_INDEX) type INT4 . + methods SET_AUTO_SIZE + importing + !IP_AUTO_SIZE type ABAP_BOOL + returning + value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods SET_COLLAPSED + importing + !IP_COLLAPSED type ABAP_BOOL + returning + value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods SET_COLUMN_INDEX + importing + !IP_INDEX type ZEXCEL_CELL_COLUMN_ALPHA + returning + value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods SET_OUTLINE_LEVEL + importing + !IP_OUTLINE_LEVEL type INT4 . + methods SET_VISIBLE + importing + !IP_VISIBLE type ABAP_BOOL + returning + value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods SET_WIDTH + importing + !IP_WIDTH type SIMPLE + returning + value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN + raising + ZCX_EXCEL . + methods SET_XF_INDEX + importing + !IP_XF_INDEX type INT4 + returning + value(IO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods SET_COLUMN_STYLE_BY_GUID + importing + !IP_STYLE_GUID type ZEXCEL_CELL_STYLE + raising + ZCX_EXCEL . + methods GET_COLUMN_STYLE_GUID + returning + value(EP_STYLE_GUID) type ZEXCEL_CELL_STYLE + raising + ZCX_EXCEL . +*"* protected components of class ZCL_EXCEL_COLUMN +*"* do not include other source files here!!! +protected section. +*"* private components of class ZCL_EXCEL_COLUMN +*"* do not include other source files here!!! +private section. + + data COLUMN_INDEX type INT4 . + data WIDTH type FLOAT . + data AUTO_SIZE type ABAP_BOOL . + data VISIBLE type ABAP_BOOL . + data OUTLINE_LEVEL type INT4 . + data COLLAPSED type ABAP_BOOL . + data XF_INDEX type INT4 . + data STYLE_GUID type ZEXCEL_CELL_STYLE . + data EXCEL type ref to ZCL_EXCEL . + data WORKSHEET type ref to ZCL_EXCEL_WORKSHEET . +ENDCLASS. + + + +CLASS ZCL_EXCEL_COLUMN IMPLEMENTATION. + + +method CONSTRUCTOR. + me->column_index = zcl_excel_common=>convert_column2int( ip_index ). + me->width = -1. + me->auto_size = abap_false. + me->visible = abap_true. + me->outline_level = 0. + me->collapsed = abap_false. + me->excel = ip_excel. "ins issue #157 - Allow Style for columns + me->worksheet = ip_worksheet. "ins issue #157 - Allow Style for columns + + " set default index to cellXf + me->xf_index = 0. + + endmethod. + + +method GET_AUTO_SIZE. + r_auto_size = me->auto_size. + endmethod. + + +method GET_COLLAPSED. + r_Collapsed = me->Collapsed. + endmethod. + + +method GET_COLUMN_INDEX. + r_column_index = me->column_index. + endmethod. + + +method GET_COLUMN_STYLE_GUID. + IF me->style_guid IS NOT INITIAL. + ep_style_guid = me->style_guid. + ELSE. + ep_style_guid = me->worksheet->zif_excel_sheet_properties~get_style( ). + ENDIF. + endmethod. + + +method GET_OUTLINE_LEVEL. + r_outline_level = me->outline_level. + endmethod. + + +method GET_VISIBLE. + r_Visible = me->Visible. + endmethod. + + +method GET_WIDTH. + r_WIDTH = me->WIDTH. + endmethod. + + +method GET_XF_INDEX. + r_xf_index = me->xf_index. + endmethod. + + +METHOD set_auto_size. + me->auto_size = ip_auto_size. + io_column = me. +ENDMETHOD. + + +METHOD set_collapsed. + me->collapsed = ip_collapsed. + io_column = me. +ENDMETHOD. + + +METHOD set_column_index. + me->column_index = zcl_excel_common=>convert_column2int( ip_index ). + io_column = me. +ENDMETHOD. + + +method SET_COLUMN_STYLE_BY_GUID. + DATA: stylemapping TYPE zexcel_s_stylemapping. + + IF me->excel IS NOT BOUND. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Internal error - reference to ZCL_EXCEL not bound'. + ENDIF. + TRY. + stylemapping = me->excel->get_style_to_guid( ip_style_guid ). + me->style_guid = stylemapping-guid. + + CATCH zcx_excel . + EXIT. " leave as is in case of error + ENDTRY. + + endmethod. + + +method SET_OUTLINE_LEVEL. + me->outline_level = ip_outline_level. + endmethod. + + +METHOD set_visible. + me->visible = ip_visible. + io_column = me. +ENDMETHOD. + + +METHOD set_width. + TRY. + me->width = ip_width. + io_column = me. + CATCH cx_sy_conversion_no_number. + RAISE EXCEPTION TYPE zcx_excel + EXPORTING + error = 'Unable to interpret width as number'. + ENDTRY. +ENDMETHOD. + + +METHOD set_xf_index. + me->xf_index = ip_xf_index. + io_column = me. +ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_excel_column.clas.xml b/src/zcl_excel_column.clas.xml new file mode 100644 index 0000000..b92f1e7 --- /dev/null +++ b/src/zcl_excel_column.clas.xml @@ -0,0 +1,94 @@ + + + + + + ZCL_EXCEL_COLUMN + 1 + E + Worksheet Column + 2 + 1 + X + X + X + X + + + + + ZCL_EXCEL_COLUMN + AUTO_SIZE + E + Auto size? + + + ZCL_EXCEL_COLUMN + COLLAPSED + E + Collapsed? + + + ZCL_EXCEL_COLUMN + COLUMN_INDEX + E + Column index + + + ZCL_EXCEL_COLUMN + EXCEL + E + Excel creator + + + ZCL_EXCEL_COLUMN + GET_COLUMN_STYLE_GUID + E + Get guid of column style + + + ZCL_EXCEL_COLUMN + OUTLINE_LEVEL + E + Outline level + + + ZCL_EXCEL_COLUMN + SET_COLUMN_STYLE_BY_GUID + E + Set column style by style guid + + + ZCL_EXCEL_COLUMN + STYLE_GUID + E + Style identifier + + + ZCL_EXCEL_COLUMN + VISIBLE + E + Visible? + + + ZCL_EXCEL_COLUMN + WIDTH + E + Column width + + + ZCL_EXCEL_COLUMN + WORKSHEET + E + Worksheet + + + ZCL_EXCEL_COLUMN + XF_INDEX + E + Index to cellXf + + + + + diff --git a/src/zcl_excel_columns.clas.abap b/src/zcl_excel_columns.clas.abap new file mode 100644 index 0000000..ddbdae5 --- /dev/null +++ b/src/zcl_excel_columns.clas.abap @@ -0,0 +1,87 @@ +class ZCL_EXCEL_COLUMNS definition + public + final + create public . + +*"* public components of class ZCL_EXCEL_COLUMNS +*"* do not include other source files here!!! +public section. + + methods ADD + importing + !IO_COLUMN type ref to ZCL_EXCEL_COLUMN . + methods CLEAR . + methods CONSTRUCTOR . + methods GET + importing + !IP_INDEX type I + returning + value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods GET_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . + methods IS_EMPTY + returning + value(IS_EMPTY) type FLAG . + methods REMOVE + importing + !IO_COLUMN type ref to ZCL_EXCEL_COLUMN . + methods SIZE + returning + value(EP_SIZE) type I . +*"* protected components of class ZABAP_EXCEL_WORKSHEETS +*"* do not include other source files here!!! +protected section. +*"* private components of class ZABAP_EXCEL_RANGES +*"* do not include other source files here!!! +private section. + + data COLUMNS type ref to CL_OBJECT_COLLECTION . +ENDCLASS. + + + +CLASS ZCL_EXCEL_COLUMNS IMPLEMENTATION. + + +METHOD add. + columns->add( io_column ). +ENDMETHOD. + + +METHOD clear. + columns->clear( ). +ENDMETHOD. + + +METHOD constructor. + + CREATE OBJECT columns. + +ENDMETHOD. + + +METHOD get. + eo_column ?= columns->if_object_collection~get( ip_index ). +ENDMETHOD. + + +METHOD get_iterator. + eo_iterator ?= columns->if_object_collection~get_iterator( ). +ENDMETHOD. + + +METHOD is_empty. + is_empty = columns->if_object_collection~is_empty( ). +ENDMETHOD. + + +METHOD remove. + columns->remove( io_column ). +ENDMETHOD. + + +METHOD size. + ep_size = columns->if_object_collection~size( ). +ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_excel_columns.clas.xml b/src/zcl_excel_columns.clas.xml new file mode 100644 index 0000000..21c109f --- /dev/null +++ b/src/zcl_excel_columns.clas.xml @@ -0,0 +1,70 @@ + + + + + + ZCL_EXCEL_COLUMNS + 1 + E + Ranges collection + 2 + 1 + X + X + X + X + + + + + ZCL_EXCEL_COLUMNS + ADD + E + Adds an Element to the Collection + + + ZCL_EXCEL_COLUMNS + CLEAR + E + Initializes the Collection + + + ZCL_EXCEL_COLUMNS + CONSTRUCTOR + E + CONSTRUCTOR + + + ZCL_EXCEL_COLUMNS + GET + E + Gets Element + + + ZCL_EXCEL_COLUMNS + GET_ITERATOR + E + Returns an iterator + + + ZCL_EXCEL_COLUMNS + IS_EMPTY + E + Checks whether elements are contained + + + ZCL_EXCEL_COLUMNS + REMOVE + E + Deletes an Element from the Collection + + + ZCL_EXCEL_COLUMNS + SIZE + E + Specifies number of contained elements + + + + + diff --git a/src/zcl_excel_converter.clas.abap b/src/zcl_excel_converter.clas.abap index e178be0..e37aee7 100644 --- a/src/zcl_excel_converter.clas.abap +++ b/src/zcl_excel_converter.clas.abap @@ -351,67 +351,67 @@ method BIND_CELLS. endmethod. -method BIND_TABLE. - data: lt_field_catalog type zexcel_t_fieldcatalog, - ls_field_catalog type zexcel_s_fieldcatalog, - ls_fcat type zexcel_s_converter_fcat, - lo_col_dim type ref to zcl_excel_worksheet_columndime, - lo_row_dim type ref to zcl_excel_worksheet_rowdimensi, - l_col_int type zexcel_cell_column, - l_col_alpha type zexcel_cell_column_alpha, - ls_settings type zexcel_s_table_settings, - l_line type i. +METHOD bind_table. + DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, + ls_field_catalog TYPE zexcel_s_fieldcatalog, + ls_fcat TYPE zexcel_s_converter_fcat, + lo_column TYPE REF TO zcl_excel_column, + lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, + lv_col_int TYPE zexcel_cell_column, + lv_col_alpha TYPE zexcel_cell_column_alpha, + ls_settings TYPE zexcel_s_table_settings, + lv_line TYPE i. - field-symbols: type any table. + FIELD-SYMBOLS: TYPE ANY TABLE. - assign wo_data->* to . + ASSIGN wo_data->* TO . ls_settings-table_style = i_style_table. ls_settings-top_left_column = zcl_excel_common=>convert_column2alpha( ip_column = w_col_int ). ls_settings-top_left_row = w_row_int. ls_settings-show_row_stripes = ws_layout-is_stripped. - describe table wt_fieldcatalog lines l_line. - l_line = l_line + 1 + w_col_int. - ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = l_line ). + DESCRIBE TABLE wt_fieldcatalog LINES lv_line. + lv_line = lv_line + 1 + w_col_int. + ls_settings-bottom_right_column = zcl_excel_common=>convert_column2alpha( ip_column = lv_line ). - describe table lines l_line. - ls_settings-bottom_right_row = l_line + 1 + w_row_int. - sort wt_fieldcatalog by position. - loop at wt_fieldcatalog into ls_fcat. - move-corresponding ls_fcat to ls_field_catalog. + DESCRIBE TABLE LINES lv_line. + ls_settings-bottom_right_row = lv_line + 1 + w_row_int. + SORT wt_fieldcatalog BY position. + LOOP AT wt_fieldcatalog INTO ls_fcat. + MOVE-CORRESPONDING ls_fcat TO ls_field_catalog. ls_field_catalog-dynpfld = abap_true. - insert ls_field_catalog into table lt_field_catalog. - endloop. + INSERT ls_field_catalog INTO TABLE lt_field_catalog. + ENDLOOP. wo_worksheet->bind_table( - exporting + EXPORTING ip_table = it_field_catalog = lt_field_catalog is_table_settings = ls_settings - importing + IMPORTING es_table_settings = ls_settings ). - loop at wt_fieldcatalog into ls_fcat. - l_col_int = w_col_int + ls_fcat-position - 1. - l_col_alpha = zcl_excel_common=>convert_column2alpha( l_col_int ). + LOOP AT wt_fieldcatalog INTO ls_fcat. + lv_col_int = w_col_int + ls_fcat-position - 1. + lv_col_alpha = zcl_excel_common=>convert_column2alpha( lv_col_int ). * Freeze panes - if ls_fcat-fix_column = abap_true. - add 1 to r_freeze_col. - endif. + IF ls_fcat-fix_column = abap_true. + ADD 1 TO r_freeze_col. + ENDIF. * Now let's check for optimized - if ls_fcat-is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . - endif. + IF ls_fcat-is_optimized = abap_true. + lo_column = wo_worksheet->get_column( ip_column = lv_col_alpha ). + lo_column->set_auto_size( ip_auto_size = abap_true ) . + ENDIF. * Now let's check for visible - if ls_fcat-is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . - endif. - endloop. + IF ls_fcat-is_hidden = abap_true. + lo_column = wo_worksheet->get_column( ip_column = lv_col_alpha ). + lo_column->set_visible( ip_visible = abap_false ) . + ENDIF. + ENDLOOP. - endmethod. +ENDMETHOD. method CLASS_CONSTRUCTOR. @@ -1173,7 +1173,7 @@ method LOOP_NORMAL. l_col_alpha_start TYPE zexcel_cell_column_alpha, l_cell_value TYPE zexcel_cell_value, l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, l_formula TYPE zexcel_cell_formula, l_style TYPE zexcel_cell_style, @@ -1255,13 +1255,13 @@ method LOOP_NORMAL. ENDLOOP. * Now let's check for optimized IF -is_optimized = abap_true . - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . + lo_column = wo_worksheet->get_column( ip_column = l_col_alpha ). + lo_column->set_auto_size( ip_auto_size = abap_true ) . ENDIF. * Now let's check for visible IF -is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . + lo_column = wo_worksheet->get_column( ip_column = l_col_alpha ). + lo_column->set_visible( ip_visible = abap_false ) . ENDIF. * Now let's check for total versus subtotal. IF -totals_function IS NOT INITIAL. @@ -1292,7 +1292,7 @@ method LOOP_SUBTOTAL. l_col_alpha_start TYPE zexcel_cell_column_alpha, l_cell_value TYPE zexcel_cell_value, l_s_color TYPE abap_bool, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, l_formula TYPE zexcel_cell_formula, l_style TYPE zexcel_cell_style, @@ -1611,13 +1611,13 @@ method LOOP_SUBTOTAL. ENDIF. * Now let's check for optimized IF -is_optimized = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_auto_size( ip_auto_size = abap_true ) . + lo_column = wo_worksheet->get_column( ip_column = l_col_alpha ). + lo_column->set_auto_size( ip_auto_size = abap_true ) . ENDIF. * Now let's check for visible IF -is_hidden = abap_true. - lo_col_dim = wo_worksheet->get_column_dimension( ip_column = l_col_alpha ). - lo_col_dim->set_visible( ip_visible = abap_false ) . + lo_column = wo_worksheet->get_column( ip_column = l_col_alpha ). + lo_column->set_visible( ip_visible = abap_false ) . ENDIF. ENDLOOP. diff --git a/src/zcl_excel_reader_2007.clas.abap b/src/zcl_excel_reader_2007.clas.abap index da1134f..9b99d59 100644 --- a/src/zcl_excel_reader_2007.clas.abap +++ b/src/zcl_excel_reader_2007.clas.abap @@ -2255,7 +2255,7 @@ METHOD load_worksheet. lo_ixml_column_elem TYPE REF TO if_ixml_element, ls_column TYPE lty_column, lv_column_alpha TYPE zexcel_cell_column_alpha, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lv_outline_level TYPE int4, lo_ixml_tabcolor TYPE REF TO if_ixml_element, @@ -2557,27 +2557,27 @@ METHOD load_worksheet. WHILE lv_index <= ls_column-max AND lv_index <= lv_max_col. lv_column_alpha = zcl_excel_common=>convert_column2alpha( lv_index ). - lo_column_dimension = io_worksheet->get_column_dimension( lv_column_alpha ). + lo_column = io_worksheet->get_column( lv_column_alpha ). IF ls_column-customwidth = lc_xml_attr_true OR ls_column-customwidth = lc_xml_attr_true_int OR ls_column-width IS NOT INITIAL. "+#234 - lo_column_dimension->set_width( ls_column-width ). + lo_column->set_width( ls_column-width ). ENDIF. IF ls_column-bestfit = lc_xml_attr_true OR ls_column-bestfit = lc_xml_attr_true_int. - lo_column_dimension->set_auto_size( abap_true ). + lo_column->set_auto_size( abap_true ). ENDIF. IF ls_column-collapsed = lc_xml_attr_true OR ls_column-collapsed = lc_xml_attr_true_int. - lo_column_dimension->set_collapsed( abap_true ). + lo_column->set_collapsed( abap_true ). ENDIF. IF ls_column-hidden = lc_xml_attr_true OR ls_column-hidden = lc_xml_attr_true_int. - lo_column_dimension->set_visible( abap_false ). + lo_column->set_visible( abap_false ). ENDIF. IF ls_column-outlinelevel > ''. @@ -2585,7 +2585,7 @@ METHOD load_worksheet. CONDENSE ls_column-outlinelevel. lv_outline_level = ls_column-outlinelevel. IF lv_outline_level > 0. - lo_column_dimension->set_outline_level( lv_outline_level ). + lo_column->set_outline_level( lv_outline_level ). ENDIF. ENDIF. @@ -2594,7 +2594,7 @@ METHOD load_worksheet. READ TABLE styles INTO lo_excel_style INDEX sy-index. DATA: dummy_zexcel_cell_style TYPE zexcel_cell_style. dummy_zexcel_cell_style = lo_excel_style->get_guid( ). - lo_column_dimension->set_column_style_by_guid( dummy_zexcel_cell_style ). + lo_column->set_column_style_by_guid( dummy_zexcel_cell_style ). ENDIF. ADD 1 TO lv_index. diff --git a/src/zcl_excel_worksheet.clas.abap b/src/zcl_excel_worksheet.clas.abap index 9b97c76..512f08c 100644 --- a/src/zcl_excel_worksheet.clas.abap +++ b/src/zcl_excel_worksheet.clas.abap @@ -25,17 +25,22 @@ public section. constants C_BREAK_NONE type ZEXCEL_BREAK value 0. "#EC NOTEXT constants C_BREAK_ROW type ZEXCEL_BREAK value 1. "#EC NOTEXT data EXCEL type ref to ZCL_EXCEL read-only . - data PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES read-only value ABAP_FALSE. "#EC NOTEXT . . . . . . . . . . . . . . . . " . + data PRINT_GRIDLINES type ZEXCEL_PRINT_GRIDLINES read-only value ABAP_FALSE. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " . data SHEET_CONTENT type ZEXCEL_T_CELL_DATA . data SHEET_SETUP type ref to ZCL_EXCEL_SHEET_SETUP . - data SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . . . . . . . . . . . . . . . . " . - data SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . . . . . . . . . . . . . . . . " . + data SHOW_GRIDLINES type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " . + data SHOW_ROWCOLHEADERS type ZEXCEL_SHOW_GRIDLINES read-only value ABAP_TRUE. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . " . data STYLES type ZEXCEL_T_SHEET_STYLE . data TABCOLOR type ZEXCEL_S_TABCOLOR read-only . methods ADD_DRAWING importing !IP_DRAWING type ref to ZCL_EXCEL_DRAWING . + methods ADD_NEW_COLUMN + importing + !IP_COLUMN type SIMPLE + returning + value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . methods ADD_NEW_CONDITIONAL_STYLE returning value(EO_CONDITIONAL_STYLE) type ref to ZCL_EXCEL_STYLE_CONDITIONAL . @@ -244,16 +249,17 @@ public section. !EP_FORMULA type ZEXCEL_CELL_FORMULA raising ZCX_EXCEL . - methods GET_COLUMN_DIMENSION + methods GET_COLUMN importing !IP_COLUMN type SIMPLE returning - value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME - raising - ZCX_EXCEL . - methods GET_COLUMN_DIMENSIONS + value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . + methods GET_COLUMNS returning - value(R_COLUMN_DIMENSION) type ZEXCEL_T_WORKSHEET_COLUMNDIME . + value(EO_COLUMNS) type ref to ZCL_EXCEL_COLUMNS . + methods GET_COLUMNS_ITERATOR + returning + value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . methods GET_COND_STYLES_ITERATOR returning value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR . @@ -263,9 +269,9 @@ public section. methods GET_DATA_VALIDATIONS_SIZE returning value(EP_SIZE) type I . - methods GET_DEFAULT_COLUMN_DIMENSION + methods GET_DEFAULT_COLUMN returning - value(R_COLUMN_DIMENSION) type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME . + value(EO_COLUMN) type ref to ZCL_EXCEL_COLUMN . methods GET_DEFAULT_EXCEL_DATE_FORMAT returning value(EP_DEFAULT_EXCEL_DATE_FORMAT) type ZEXCEL_NUMBER_FORMAT . @@ -485,15 +491,14 @@ private section. types: mty_ts_merge TYPE SORTED TABLE OF mty_merge WITH UNIQUE KEY table_line . - class-data MTH_FONT_CACHE type MTY_TH_FONT_CACHE . *"* private components of class ZCL_EXCEL_WORKSHEET *"* do not include other source files here!!! data ACTIVE_CELL type ZEXCEL_S_CELL_DATA . data CHARTS type ref to ZCL_EXCEL_DRAWINGS . - data COLUMN_DIMENSIONS type ZEXCEL_T_WORKSHEET_COLUMNDIME . + data COLUMNS type ref to ZCL_EXCEL_COLUMNS . data CONDITIONAL_STYLES type ref to ZCL_EXCEL_STYLES_CONDITIONAL . data DATA_VALIDATIONS type ref to ZCL_EXCEL_DATA_VALIDATIONS . - data DEFAULT_COLUMN_DIMENSION type ref to ZCL_EXCEL_WORKSHEET_COLUMNDIME . + data COLUMN_DEFAULT type ref to ZCL_EXCEL_COLUMN . data DEFAULT_EXCEL_DATE_FORMAT type ZEXCEL_NUMBER_FORMAT . data DEFAULT_EXCEL_TIME_FORMAT type ZEXCEL_NUMBER_FORMAT . data DEFAULT_ROW_DIMENSION type ref to ZCL_EXCEL_WORKSHEET_ROWDIMENSI . @@ -503,9 +508,10 @@ private section. data GUID type UUID . data HYPERLINKS type ref to CL_OBJECT_COLLECTION . data LOWER_CELL type ZEXCEL_S_CELL_DATA . + data MO_PAGEBREAKS type ref to ZCL_EXCEL_WORKSHEET_PAGEBREAKS . + class-data MTH_FONT_CACHE type MTY_TH_FONT_CACHE . data MT_MERGED_CELLS type MTY_TS_MERGE . data MT_ROW_OUTLINES type MTY_TS_OUTLINES_ROW . - data MO_PAGEBREAKS type ref to ZCL_EXCEL_WORKSHEET_PAGEBREAKS . data PRINT_TITLE_COL_FROM type ZEXCEL_CELL_COLUMN_ALPHA . data PRINT_TITLE_COL_TO type ZEXCEL_CELL_COLUMN_ALPHA . data PRINT_TITLE_ROW_FROM type ZEXCEL_CELL_ROW . @@ -513,7 +519,7 @@ private section. data RANGES type ref to ZCL_EXCEL_RANGES . data ROW_DIMENSIONS type MTY_TS_ROW_DIMENSION . data TABLES type ref to CL_OBJECT_COLLECTION . - data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . . . . . . . . . . . . " . + data TITLE type ZEXCEL_SHEET_TITLE value 'Worksheet'. "#EC NOTEXT . . . . . . . . . . . . . . . . . . . . . " . data UPPER_CELL type ZEXCEL_S_CELL_DATA . methods CALCULATE_CELL_WIDTH @@ -554,11 +560,24 @@ method ADD_DRAWING. endmethod. -method ADD_NEW_CONDITIONAL_STYLE. +METHOD add_new_column. + DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. + lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column ). + + CREATE OBJECT eo_column + EXPORTING + ip_index = lv_column_alpha + ip_excel = me->excel + ip_worksheet = me. + columns->add( eo_column ). +ENDMETHOD. + + +METHOD add_new_conditional_style. CREATE OBJECT eo_conditional_style. conditional_styles->add( eo_conditional_style ). - endmethod. +ENDMETHOD. method ADD_NEW_DATA_VALIDATION. @@ -568,11 +587,11 @@ method ADD_NEW_DATA_VALIDATION. endmethod. -method ADD_NEW_RANGE. +METHOD add_new_range. * Create default blank range CREATE OBJECT eo_range. ranges->add( eo_range ). - endmethod. +ENDMETHOD. method BIND_ALV. @@ -3238,7 +3257,7 @@ METHOD calculate_cell_width. ENDMETHOD. -method CALCULATE_COLUMN_WIDTHS. +METHOD calculate_column_widths. TYPES: BEGIN OF t_auto_size, col_index TYPE int4, @@ -3246,79 +3265,54 @@ method CALCULATE_COLUMN_WIDTHS. END OF t_auto_size. TYPES: tt_auto_size TYPE TABLE OF t_auto_size. - DATA: column_dimensions TYPE zexcel_t_worksheet_columndime. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. + DATA: lo_column_iterator TYPE REF TO cl_object_collection_iterator, + lo_column TYPE REF TO zcl_excel_column. DATA: auto_size TYPE flag. DATA: auto_sizes TYPE tt_auto_size. -* DATA: col_alpha TYPE zexcel_cell_column_alpha." issue #155 - less restrictive typing for ip_column DATA: cell_value TYPE zexcel_cell_value. DATA: cell_style TYPE REF TO zcl_excel_style. DATA: count TYPE int4. DATA: highest_row TYPE int4. DATA: width TYPE float. - FIELD-SYMBOLS: LIKE LINE OF column_dimensions. FIELD-SYMBOLS: LIKE LINE OF auto_sizes. - column_dimensions[] = me->get_column_dimensions( ). - LOOP AT column_dimensions ASSIGNING . - auto_size = -column_dimension->get_auto_size( ). + lo_column_iterator = me->get_columns_iterator( ). + WHILE lo_column_iterator->has_next( ) = abap_true. + lo_column ?= lo_column_iterator->get_next( ). + auto_size = lo_column->get_auto_size( ). IF auto_size = abap_true. APPEND INITIAL LINE TO auto_sizes ASSIGNING . - -col_index = -column_dimension->get_column_index( ). + -col_index = lo_column->get_column_index( ). -width = -1. ENDIF. - ENDLOOP. + ENDWHILE. " There is only something to do if there are some auto-size columns IF NOT auto_sizes IS INITIAL. highest_row = me->get_highest_row( ). LOOP AT auto_sizes ASSIGNING . -* col_alpha = zcl_excel_common=>convert_column2alpha( -col_index )." issue #155 - less restrictive typing for ip_column count = 1. WHILE count <= highest_row. * Do not check merged cells IF is_cell_merged( ip_column = -col_index ip_row = count ) = abap_false. -* Start of change # issue 139 - Dateretention of cellstyles -* IF cell_style IS BOUND. -* CREATE OBJECT cell_style. -* ENDIF. -* me->get_cell( -* EXPORTING -* ip_column = col_alpha " Cell Column -* ip_row = count " Cell Row -* IMPORTING -* ep_value = cell_value " Cell Value -* ep_style = cell_style " Request Cell Style as well -* ). -* " For an easy start we just take the number of characters as the width -* width = strlen( cell_value ). -* " Addition to solve issue #120, contribution by Stefan Schmöcker -* " Calculate width using Font Size and Font Type -* IF cell_style IS BOUND -* AND cell_style->font IS BOUND. -* width = cell_style->font->calculate_text_width( cell_value ). -* ENDIF. -* width = calculate_cell_width( ip_column = col_alpha " issue #155 - less restrictive typing for ip_column - width = calculate_cell_width( ip_column = -col_index " issue #155 - less restrictive typing for ip_column - ip_row = count ). -* End of change # issue 139 - Dateretention of cellstyles - IF width > -width. - -width = width. - ENDIF. + width = calculate_cell_width( ip_column = -col_index " issue #155 - less restrictive typing for ip_column + ip_row = count ). + IF width > -width. + -width = width. + ENDIF. ENDIF. count = count + 1. ENDWHILE. -* column_dimension = me->get_column_dimension( col_alpha ). " issue #155 - less restrictive typing for ip_column - column_dimension = me->get_column_dimension( -col_index ). " issue #155 - less restrictive typing for ip_column - column_dimension->set_width( -width ). + lo_column = me->get_column( -col_index ). " issue #155 - less restrictive typing for ip_column + lo_column->set_width( -width ). ENDLOOP. ENDIF. - endmethod. +ENDMETHOD. METHOD change_cell_style. @@ -3655,6 +3649,7 @@ METHOD constructor. CREATE OBJECT conditional_styles. CREATE OBJECT data_validations. CREATE OBJECT tables. + CREATE OBJECT columns. CREATE OBJECT ranges. " issue #163 CREATE OBJECT mo_pagebreaks. CREATE OBJECT drawings @@ -3795,7 +3790,7 @@ method GET_ACTIVE_CELL. endmethod. -method GET_CELL. +METHOD get_cell. DATA: lv_column TYPE zexcel_cell_column, ls_sheet_content TYPE zexcel_s_cell_data. @@ -3825,36 +3820,43 @@ method GET_CELL. ENDIF. ENDWHILE. ENDIF. - endmethod. +ENDMETHOD. -method GET_COLUMN_DIMENSION. - FIELD-SYMBOLS: LIKE LINE OF column_dimensions. - DATA: lv_column_alpha TYPE zexcel_cell_column_alpha. " issue #155 - less restrictive typing for ip_column +METHOD get_column. - lv_column_alpha = zcl_excel_common=>convert_column2alpha( ip_column )." issue #155 - less restrictive typing for ip_column - READ TABLE me->column_dimensions ASSIGNING - WITH KEY column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column + DATA: lo_column_iterator TYPE REF TO cl_object_collection_iterator, + lo_column TYPE REF TO zcl_excel_column, + lv_column TYPE zexcel_cell_column. - IF NOT IS ASSIGNED. - CREATE OBJECT r_column_dimension - EXPORTING - ip_index = lv_column_alpha " issue #155 - less restrictive typing for ip_column - ip_excel = me->excel " issue #157 - Allow style for columns - ip_worksheet = me. " issue #157 - Allow style for columns - APPEND INITIAL LINE TO me->column_dimensions ASSIGNING . - -column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column - -column_dimension = r_column_dimension. - ELSE. - r_column_dimension = -column_dimension. + lv_column = zcl_excel_common=>convert_column2int( ip_column ). + + lo_column_iterator = me->get_columns_iterator( ). + WHILE lo_column_iterator->has_next( ) = abap_true. + lo_column ?= lo_column_iterator->get_next( ). + IF lo_column->get_column_index( ) = lv_column. + eo_column = lo_column. + EXIT. + ENDIF. + ENDWHILE. + + IF eo_column IS NOT BOUND. + eo_column = me->add_new_column( ip_column ). ENDIF. - endmethod. +ENDMETHOD. -method GET_COLUMN_DIMENSIONS. - r_column_dimension[] = me->column_dimensions[]. - endmethod. +METHOD get_columns. + eo_columns = me->columns. +ENDMETHOD. + + +METHOD get_columns_iterator. + + eo_iterator = me->columns->get_iterator( ). + +ENDMETHOD. method GET_COND_STYLES_ITERATOR. @@ -3874,17 +3876,17 @@ method GET_DATA_VALIDATIONS_SIZE. endmethod. -method GET_DEFAULT_COLUMN_DIMENSION. - IF me->default_column_dimension IS NOT BOUND. - CREATE OBJECT me->default_column_dimension +METHOD GET_DEFAULT_COLUMN. + IF me->column_default IS NOT BOUND. + CREATE OBJECT me->column_default EXPORTING - ip_index = 'A' " ???? - ip_worksheet = me - ip_excel = me->excel. + ip_index = 'A' " ???? + ip_worksheet = me + ip_excel = me->excel. ENDIF. - r_column_dimension = me->default_column_dimension. - endmethod. + eo_column = me->column_default. +ENDMETHOD. method GET_DEFAULT_EXCEL_DATE_FORMAT. @@ -4589,7 +4591,7 @@ method SET_CELL_FORMULA. endmethod. -method SET_CELL_STYLE. +METHOD set_cell_style. DATA: lv_column TYPE zexcel_cell_column, ls_sheet_content TYPE zexcel_s_cell_data, @@ -4612,14 +4614,14 @@ method SET_CELL_STYLE. set_cell( ip_column = ip_column ip_row = ip_row ip_value = '' ip_style = ip_style ). ENDIF. - endmethod. +ENDMETHOD. method SET_COLUMN_WIDTH. - DATA: column_dimension TYPE REF TO zcl_excel_worksheet_columndime. + DATA: lo_column TYPE REF TO zcl_excel_column. DATA: width TYPE float. - column_dimension = me->get_column_dimension( ip_column ). + lo_column = me->get_column( ip_column ). * if a fix size is supplied use this IF ip_width_fix IS SUPPLIED. @@ -4630,7 +4632,7 @@ method SET_COLUMN_WIDTH. EXPORTING error = 'Please supply a positive number as column-width'. ENDIF. - column_dimension->set_width( width ). + lo_column->set_width( width ). EXIT. CATCH cx_sy_conversion_no_number. * Strange stuff passed --> raise error @@ -4641,7 +4643,7 @@ method SET_COLUMN_WIDTH. ENDIF. * If we get down to here, we have to use whatever is found in autosize. - column_dimension->set_auto_size( ip_width_autosize ). + lo_column->set_auto_size( ip_width_autosize ). endmethod. diff --git a/src/zcl_excel_worksheet.clas.xml b/src/zcl_excel_worksheet.clas.xml index d2a7734..9ca4636 100644 --- a/src/zcl_excel_worksheet.clas.xml +++ b/src/zcl_excel_worksheet.clas.xml @@ -88,6 +88,12 @@ I Add drawing to the sheet + + ZCL_EXCEL_WORKSHEET + ADD_NEW_COLUMN + E + Create a new column + ZCL_EXCEL_WORKSHEET ADD_NEW_CONDITIONAL_STYLE @@ -210,15 +216,15 @@ ZCL_EXCEL_WORKSHEET - COLUMN_DIMENSIONS + COLUMNS E - Collection of column dimensions + Ranges collection ZCL_EXCEL_WORKSHEET - COLUMN_DIMENSIONS - I - Collection of column dimensions + COLUMN_DEFAULT + E + Worksheet ColumnDimension ZCL_EXCEL_WORKSHEET @@ -292,18 +298,6 @@ I Data validations collection - - ZCL_EXCEL_WORKSHEET - DEFAULT_COLUMN_DIMENSION - E - Worksheet ColumnDimension - - - ZCL_EXCEL_WORKSHEET - DEFAULT_COLUMN_DIMENSION - I - Worksheet ColumnDimension - ZCL_EXCEL_WORKSHEET DEFAULT_EXCEL_DATE_FORMAT @@ -444,27 +438,21 @@ ZCL_EXCEL_WORKSHEET - GET_COLUMN_DIMENSION + GET_COLUMN E - Get column dimension at a specific column + Get column object at a specific column ZCL_EXCEL_WORKSHEET - GET_COLUMN_DIMENSION - I - Get column dimension at a specific column - - - ZCL_EXCEL_WORKSHEET - GET_COLUMN_DIMENSIONS + GET_COLUMNS E - Get column dimensions + Get columns ZCL_EXCEL_WORKSHEET - GET_COLUMN_DIMENSIONS - I - Get column dimensions + GET_COLUMNS_ITERATOR + E + Get columns iterator ZCL_EXCEL_WORKSHEET @@ -504,15 +492,9 @@ ZCL_EXCEL_WORKSHEET - GET_DEFAULT_COLUMN_DIMENSION + GET_DEFAULT_COLUMN E - Get column dimension at a specific column - - - ZCL_EXCEL_WORKSHEET - GET_DEFAULT_COLUMN_DIMENSION - I - Get column dimension at a specific column + Get column at a specific column ZCL_EXCEL_WORKSHEET @@ -542,7 +524,7 @@ ZCL_EXCEL_WORKSHEET GET_DEFAULT_ROW_DIMENSION E - Get column dimension at a specific column + Get column at a specific column ZCL_EXCEL_WORKSHEET diff --git a/src/zcl_excel_writer_2007.clas.abap b/src/zcl_excel_writer_2007.clas.abap index 41815c0..b8ca8dc 100644 --- a/src/zcl_excel_writer_2007.clas.abap +++ b/src/zcl_excel_writer_2007.clas.abap @@ -36,7 +36,6 @@ protected section. importing !IO_DOCUMENT type ref to IF_IXML_DOCUMENT !IO_WORKSHEET type ref to ZCL_EXCEL_WORKSHEET - !IT_COLUMN_DIMENSIONS type ZEXCEL_T_WORKSHEET_COLUMNDIME returning value(RV_IXML_SHEET_DATA_ROOT) type ref to IF_IXML_ELEMENT . methods ADD_FURTHER_DATA_TO_ZIP @@ -2948,11 +2947,6 @@ METHOD create_xl_sheet. lc_xml_node_sheetformatpr TYPE string VALUE 'sheetFormatPr', lc_xml_node_cols TYPE string VALUE 'cols', lc_xml_node_col TYPE string VALUE 'col', -* lc_xml_node_sheetdata TYPE string VALUE 'sheetData', -* lc_xml_node_row TYPE string VALUE 'row', -* lc_xml_node_c TYPE string VALUE 'c', -* lc_xml_node_v TYPE string VALUE 'v', -* lc_xml_node_f TYPE string VALUE 'f', lc_xml_node_sheetprotection TYPE string VALUE 'sheetProtection', lc_xml_node_pagemargins TYPE string VALUE 'pageMargins', lc_xml_node_pagesetup TYPE string VALUE 'pageSetup', @@ -3013,10 +3007,6 @@ METHOD create_xl_sheet. lc_xml_attr_outlinelevelrow TYPE string VALUE 'x14ac:outlineLevelRow', lc_xml_attr_outlinelevelcol TYPE string VALUE 'x14ac:outlineLevelCol', lc_xml_attr_outlinelevel TYPE string VALUE 'outlineLevel', -* lc_xml_attr_r TYPE string VALUE 'r', -* lc_xml_attr_s TYPE string VALUE 's', -* lc_xml_attr_spans TYPE string VALUE 'spans', -* lc_xml_attr_t TYPE string VALUE 't', lc_xml_attr_password TYPE string VALUE 'password', lc_xml_attr_sheet TYPE string VALUE 'sheet', lc_xml_attr_objects TYPE string VALUE 'objects', @@ -3104,7 +3094,7 @@ METHOD create_xl_sheet. lo_table TYPE REF TO zcl_excel_table, row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, lo_row_dim_empty TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column_default TYPE REF TO zcl_excel_column, default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. DATA: lv_value TYPE string, @@ -3132,7 +3122,8 @@ METHOD create_xl_sheet. lv_freeze_cell_row TYPE zexcel_cell_row, lv_freeze_cell_column TYPE zexcel_cell_column, lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, + lo_column_iterator TYPE REF TO cl_object_collection_iterator, + lo_column TYPE REF TO zcl_excel_column, row_dimensions TYPE zexcel_t_worksheet_rowdimensio, ls_style_cond_mapping TYPE zexcel_s_styles_cond_mapping, lv_relation_id TYPE i VALUE 0, @@ -3150,7 +3141,6 @@ METHOD create_xl_sheet. write_current_row TYPE boolean, lt_values TYPE zexcel_t_autofilter_values, ls_values TYPE zexcel_s_autofilter_values, -* lv_guid TYPE uuid, lo_autofilters TYPE REF TO zcl_excel_autofilters, lo_autofilter TYPE REF TO zcl_excel_autofilter, l_autofilter_hidden TYPE flag, @@ -3162,7 +3152,6 @@ METHOD create_xl_sheet. FIELD-SYMBOLS: TYPE zexcel_s_cell_data, LIKE LINE OF lt_range_merge, - TYPE zexcel_s_worksheet_columndime, TYPE zexcel_s_worksheet_rowdimensio, LIKE LINE OF lts_row_outlines. @@ -3389,11 +3378,11 @@ METHOD create_xl_sheet. lo_element_root->append_child( new_child = lo_element ). " sheetViews node - column_dimensions[] = io_worksheet->get_column_dimensions( ). + lo_column_iterator = io_worksheet->get_columns_iterator( ). " Calculate col - IF NOT column_dimensions IS INITIAL. + IF NOT lo_column_iterator IS BOUND. io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). + lo_column_iterator = io_worksheet->get_columns_iterator( ). ENDIF. row_dimensions[] = io_worksheet->get_row_dimensions( ). " sheetFormatPr node @@ -3417,61 +3406,48 @@ METHOD create_xl_sheet. lo_element->set_attribute_ns( name = lc_xml_attr_defaultrowheight value = lv_value ). " defaultColWidth - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - lv_value = default_col_dimension->get_width( ). + lo_column_default = io_worksheet->get_default_column( ). + IF lo_column_default IS BOUND. + IF lo_column_default->get_width( ) >= 0. + lv_value = lo_column_default->get_width( ). SHIFT lv_value RIGHT DELETING TRAILING space. SHIFT lv_value LEFT DELETING LEADING space. lo_element->set_attribute_ns( name = lc_xml_attr_defaultcolwidth value = lv_value ). ENDIF. ENDIF. - " outlineLevelRow -* Excel is recalculating the outlinelevel on startup from the outline levels found in the rows -* If we place anything incorrect here it gets corrected, if don't place anything it gets added -* So no need to calculate the outlinelevel here ( at least for rows - probably for columns as well but I haven't tested yet -* LOOP AT row_dimensions ASSIGNING . -* IF -row_dimension->get_outline_level( ) > outline_level_row. -* outline_level_row = -row_dimension->get_outline_level( ). -* ENDIF. -* ENDLOOP. -* lv_value = outline_level_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelrow -* value = lv_value ). + " outlineLevelCol - LOOP AT column_dimensions ASSIGNING . - IF -column_dimension->get_outline_level( ) > outline_level_col. - outline_level_col = -column_dimension->get_outline_level( ). + WHILE lo_column_iterator->has_next( ) = abap_true. + lo_column ?= lo_column_iterator->get_next( ). + IF lo_column->get_outline_level( ) > outline_level_col. + outline_level_col = lo_column->get_outline_level( ). ENDIF. - ENDLOOP. + ENDWHILE. + lv_value = outline_level_col. SHIFT lv_value RIGHT DELETING TRAILING space. SHIFT lv_value LEFT DELETING LEADING space. lo_element->set_attribute_ns( name = lc_xml_attr_outlinelevelcol value = lv_value ). -* lv_value = 0. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element->set_attribute_ns( name = lc_xml_attr_dydescent -* value = lv_value ). lo_element_root->append_child( new_child = lo_element ). " sheetFormatPr node - IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR NOT column_dimensions IS INITIAL. +* Reset column iterator + lo_column_iterator = io_worksheet->get_columns_iterator( ). + IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL OR lo_column_iterator->has_next( ) = abap_true. " cols node lo_element = lo_document->create_simple_element( name = lc_xml_node_cols parent = lo_document ). " This code have to be enhanced in order to manage also column style properties " Now it is an out/out - IF NOT column_dimensions IS INITIAL. - LOOP AT column_dimensions ASSIGNING . + IF lo_column_iterator->has_next( ) = abap_true. + WHILE lo_column_iterator->has_next( ) = abap_true. + lo_column ?= lo_column_iterator->get_next( ). " col node lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_col parent = lo_document ). - lv_value = -column_dimension->get_column_index( ). + lv_value = lo_column->get_column_index( ). SHIFT lv_value RIGHT DELETING TRAILING space. SHIFT lv_value LEFT DELETING LEADING space. lo_element_2->set_attribute_ns( name = lc_xml_attr_min @@ -3479,28 +3455,27 @@ METHOD create_xl_sheet. lo_element_2->set_attribute_ns( name = lc_xml_attr_max value = lv_value ). " Width - IF -column_dimension->get_width( ) < 0. + IF lo_column->get_width( ) < 0. lo_element_2->set_attribute_ns( name = lc_xml_attr_width value = lc_xml_attr_defaultwidth ). ELSE. - lv_value = -column_dimension->get_width( ). + lv_value = lo_column->get_width( ). lo_element_2->set_attribute_ns( name = lc_xml_attr_width value = lv_value ). ENDIF. " Column visibility - IF -column_dimension->get_visible( ) = abap_false. + IF lo_column->get_visible( ) = abap_false. lo_element_2->set_attribute_ns( name = lc_xml_attr_hidden value = lc_xml_attr_true ). ENDIF. " Auto size? - IF -column_dimension->get_auto_size( ) = abap_true. + IF lo_column->get_auto_size( ) = abap_true. lo_element_2->set_attribute_ns( name = lc_xml_attr_bestfit value = lc_xml_attr_true ). ENDIF. " Custom width? - IF default_col_dimension IS BOUND. - IF -column_dimension->get_width( ) - <> default_col_dimension->get_width( ). + IF lo_column_default IS BOUND. + IF lo_column->get_width( ) <> lo_column_default->get_width( ). lo_element_2->set_attribute_ns( name = lc_xml_attr_customwidth value = lc_xml_attr_true ). @@ -3510,13 +3485,13 @@ METHOD create_xl_sheet. value = lc_xml_attr_true ). ENDIF. " Collapsed - IF -column_dimension->get_collapsed( ) = abap_true. + IF lo_column->get_collapsed( ) = abap_true. lo_element_2->set_attribute_ns( name = lc_xml_attr_collapsed value = lc_xml_attr_true ). ENDIF. " outlineLevel - IF -column_dimension->get_outline_level( ) > 0. - lv_value = -column_dimension->get_outline_level( ). + IF lo_column->get_outline_level( ) > 0. + lv_value = lo_column->get_outline_level( ). SHIFT lv_value RIGHT DELETING TRAILING space. SHIFT lv_value LEFT DELETING LEADING space. @@ -3524,14 +3499,9 @@ METHOD create_xl_sheet. value = lv_value ). ENDIF. " Style -* lv_value = -column_dimension->get_xf_index( ). "del issue #157 - set column style - lv_style_guid = -column_dimension->get_column_style_guid( ). "ins issue #157 - set column style -* lv_value = me->excel->get_style_index_in_styles( lv_style_guid ). "del issue #237 + lv_style_guid = lo_column->get_column_style_guid( ). "ins issue #157 - set column style CLEAR ls_style_mapping. READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -* lv_style_index = ls_style_mapping-style. "del issue #295 -* IF lv_style_index > 0. "ins issue #237 - del issue #295 -* lv_value = lv_style_index - 1. "ins issue #237 - del issue #295 IF sy-subrc = 0. "ins issue #295 lv_value = ls_style_mapping-style. "ins issue #295 SHIFT lv_value RIGHT DELETING TRAILING space. @@ -3541,7 +3511,7 @@ METHOD create_xl_sheet. ENDIF. "ins issue #237 lo_element->append_child( new_child = lo_element_2 ). " col node - ENDLOOP. + ENDWHILE. * ELSE. "del issue #157 - set sheet style ( add missing columns * IF io_worksheet->zif_excel_sheet_properties~get_style( ) IS NOT INITIAL. "del issue #157 - set sheet style ( add missing columns * Begin of insertion issue #157 - set sheet style ( add missing columns @@ -3557,10 +3527,12 @@ METHOD create_xl_sheet. missing_column LIKE LINE OF t_missing_columns. * First collect columns that were already handled before. The rest has to be inserted now - LOOP AT column_dimensions ASSIGNING . - lv_column = zcl_excel_common=>convert_column2int( -column ). + lo_column_iterator = io_worksheet->get_columns_iterator( ). + WHILE lo_column_iterator->has_next( ) = abap_true. + lo_column ?= lo_column_iterator->get_next( ). + lv_column = zcl_excel_common=>convert_column2int( lo_column->get_column_index( ) ). INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. + ENDWHILE. * Now find all columns that were missing so far missing_column-first_column = 1. @@ -3624,312 +3596,10 @@ METHOD create_xl_sheet. * Sheet content - use own method to create this *--------------------------------------------------------------------* lo_element = create_xl_sheet_sheet_data( io_worksheet = io_worksheet - io_document = lo_document - it_column_dimensions = column_dimensions ) . -* " sheetData node -* lo_element = lo_document->create_simple_element( name = lc_xml_node_sheetdata -* parent = lo_document ). -* " Get column count -* col_count = io_worksheet->get_highest_column( ). -* " Get autofilter -** lv_guid = io_worksheet->get_guid( ) . + io_document = lo_document ) . + lo_autofilters = excel->get_autofilters_reference( ). lo_autofilter = lo_autofilters->get( io_worksheet = io_worksheet ) . -* IF lo_autofilter IS BOUND. -* lt_values = lo_autofilter->get_values( ) . -* ls_area = lo_autofilter->get_filter_area( ) . -* l_autofilter_hidden = abap_true. " First defautl is not showing -* ENDIF. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - start -**--------------------------------------------------------------------* -** Build table to hold all table-areas attached to this sheet -* lo_iterator = io_worksheet->get_tables_iterator( ). -* WHILE lo_iterator->if_object_collection_iterator~has_next( ) EQ abap_true. -* lo_table ?= lo_iterator->if_object_collection_iterator~get_next( ). -* ls_table_area-left = zcl_excel_common=>convert_column2int( lo_table->settings-top_left_column ). -* ls_table_area-right = lo_table->get_right_column_integer( ). -* ls_table_area-top = lo_table->settings-top_left_row. -* ls_table_area-bottom = lo_table->get_bottom_row_integer( ). -* INSERT ls_table_area INTO TABLE lt_table_areas. -* ENDWHILE. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 1 - end -**--------------------------------------------------------------------* -** We have problems when the first rows or trailing rows are not set but we have rowinformation -** to solve this we add dummycontent into first and last line that will not be set -** Set first line if necessary -* READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = 1. -* IF sy-subrc <> 0. -* ls_sheet_content_empty-cell_row = 1. -* ls_sheet_content_empty-cell_column = 1. -* ls_sheet_content_empty-cell_value = lc_dummy_cell_content. -* INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. -* ENDIF. -** Set last line if necessary -** Last row with cell content -* lv_last_row = io_worksheet->get_highest_row( ). -** Last line with row-information set directly ( like line height, hidden-status ... ) -* lts_row_dimensions = io_worksheet->get_row_dimensions( ). -* SORT lts_row_dimensions BY row DESCENDING. -* READ TABLE lts_row_dimensions INDEX 1 ASSIGNING . -* IF sy-subrc = 0 AND -row > lv_last_row. -* lv_last_row = -row. -* ENDIF. -** Last line with row-information set indirectly by row outline -* lts_row_outlines = io_worksheet->get_row_outlines( ). -* LOOP AT lts_row_outlines ASSIGNING . -* IF -collapsed = 'X'. -* lv_current_row = -row_to + 1. " collapsed-status may be set on following row -* ELSE. -* lv_current_row = -row_to. " collapsed-status may be set on following row -* ENDIF. -* IF lv_current_row > lv_last_row. -* lv_last_row = lv_current_row. -* ENDIF. -* ENDLOOP. -* READ TABLE io_worksheet->sheet_content TRANSPORTING NO FIELDS WITH KEY cell_row = lv_last_row. -* IF sy-subrc <> 0. -* ls_sheet_content_empty-cell_row = lv_last_row. -* ls_sheet_content_empty-cell_column = 1. -* ls_sheet_content_empty-cell_value = lc_dummy_cell_content. -* INSERT ls_sheet_content_empty INTO TABLE io_worksheet->sheet_content. -* ENDIF. -* -* CLEAR ls_sheet_content. -* LOOP AT io_worksheet->sheet_content INTO ls_sheet_content. -* IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much -* CLEAR l_autofilter_hidden. -* ELSE. -* READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. -* IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. -* CLEAR l_autofilter_hidden. -* ENDIF. -* ENDIF. -* CLEAR ls_style_mapping. -** Create row element -** issues #346,#154, #195 - problems when we have information in row_dimension but no cell content in that row -** Get next line that may have to be added. If we have empty lines this is the next line after previous cell content -** Otherwise it is the line of the current cell content -* lv_current_row = ls_last_row-cell_row + 1. -* IF lv_current_row > ls_sheet_content-cell_row. -* lv_current_row = ls_sheet_content-cell_row. -* ENDIF. -** Fill in empty lines if necessary - assign an emtpy sheet content -* lv_next_row = lv_current_row. -* WHILE lv_next_row <= ls_sheet_content-cell_row. -* lv_current_row = lv_next_row. -* lv_next_row = lv_current_row + 1. -* IF lv_current_row = ls_sheet_content-cell_row. " cell value found in this row -* ASSIGN ls_sheet_content TO . -* ELSE. -** Check if empty row is really necessary - this is basically the case when we have information in row_dimension -* lo_row_dim_empty = io_worksheet->get_row_dimension( lv_current_row ). -* CHECK lo_row_dim_empty->get_row_height( ) >= 0 OR -* lo_row_dim_empty->get_collapsed( io_worksheet ) = abap_true OR -* lo_row_dim_empty->get_outline_level( io_worksheet ) > 0 OR -* lo_row_dim_empty->get_xf_index( ) <> 0. -* " Dummyentry A1 -* ls_sheet_content_empty-cell_row = lv_current_row. -* ls_sheet_content_empty-cell_column = 1. -* ASSIGN ls_sheet_content_empty TO . -* ENDIF. -* -* IF ls_last_row-cell_row NE -cell_row. -* IF lo_autofilter IS BOUND. -* IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header -* ls_area-row_end < ls_last_row-cell_row . -* CLEAR l_autofilter_hidden. -* ENDIF. -* ELSE. -* CLEAR l_autofilter_hidden. -* ENDIF. -* IF ls_last_row-cell_row IS NOT INITIAL. -* " Row visibility of previos row. -* IF row_dimension->get_visible( io_worksheet ) = abap_false OR -* l_autofilter_hidden = abap_true. -* lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). -* ENDIF. -* lo_element->append_child( new_child = lo_element_2 ). " row node -* ENDIF. -* " Add new row -* lo_element_2 = lo_document->create_simple_element( name = lc_xml_node_row -* parent = lo_document ). -* " r -* lv_value = -cell_row. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* -* lo_element_2->set_attribute_ns( name = lc_xml_attr_r -* value = lv_value ). -* " Spans -* lv_value = col_count. -* CONCATENATE '1:' lv_value INTO lv_value. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element_2->set_attribute_ns( name = lc_xml_attr_spans -* value = lv_value ). -* row_dimension = io_worksheet->get_row_dimension( -cell_row ). -* " Do we need the row dimension attributes? -* IF row_dimension->get_row_height( ) >= 0 OR -* row_dimension->get_collapsed( io_worksheet ) = abap_true OR -* row_dimension->get_outline_level( io_worksheet ) > 0 OR -* row_dimension->get_xf_index( ) <> 0 OR -* l_autofilter_hidden = abap_true. -* " Row dimensions -* IF row_dimension->get_row_height( ) >= 0. -* lo_element_2->set_attribute_ns( name = 'customHeight' value = '1'). -* lv_value = row_dimension->get_row_height( ). -* lo_element_2->set_attribute_ns( name = 'ht' value = lv_value ). -* ENDIF. -* " Collapsed -* IF row_dimension->get_collapsed( io_worksheet ) = abap_true. -* lo_element_2->set_attribute_ns( name = 'collapsed' value = 'true'). -* ENDIF. -* " Outline level -* IF row_dimension->get_outline_level( io_worksheet ) > 0. -* lv_value = row_dimension->get_outline_level( io_worksheet ). -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element_2->set_attribute_ns( name = 'outlineLevel' value = lv_value ). -* ENDIF. -* " Style -* IF row_dimension->get_xf_index( ) <> 0. -* lv_value = row_dimension->get_xf_index( ). -* lo_element_2->set_attribute_ns( name = 's' value = lv_value ). -* lo_element_2->set_attribute_ns( name = 'customFormat' value = '1'). -* ENDIF. -* ENDIF. -* IF lt_values IS INITIAL. " no values attached to autofilter " issue #368 autofilter filtering too much -* CLEAR l_autofilter_hidden. -* ELSE. -* l_autofilter_hidden = abap_true. " First default is not showing -* ENDIF. -* ELSE. -* -* ENDIF. -* ENDWHILE. -* -* lo_element_3 = lo_document->create_simple_element( name = lc_xml_node_c -* parent = lo_document ). -* -* lo_element_3->set_attribute_ns( name = lc_xml_attr_r -* value = -cell_coords ). -* -** begin of change issue #157 - allow column cellstyle -** if no cellstyle is set, look into column, then into sheet -* IF -cell_style IS NOT INITIAL. -* lv_style_guid = -cell_style. -* ELSE. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - start -**--------------------------------------------------------------------* -** Check if cell in any of the table areas -* LOOP AT lt_table_areas TRANSPORTING NO FIELDS WHERE top <= -cell_row -* AND bottom >= -cell_row -* AND left <= -cell_column -* AND right >= -cell_column. -* EXIT. -* ENDLOOP. -* IF sy-subrc = 0. -* CLEAR lv_style_guid. " No style --> EXCEL will use built-in-styles as declared in the tables-section -* ELSE. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end -**--------------------------------------------------------------------* -* lv_column_p = zcl_excel_common=>convert_column2alpha( -cell_column ). -* READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING . -* IF sy-subrc = 0. -* lv_style_guid = -column_dimension->get_column_style_guid( ). -* IF lv_style_guid IS INITIAL. -* lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). -* ENDIF. -* ELSE. -* lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). -* ENDIF. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start -**--------------------------------------------------------------------* -* ENDIF. -**--------------------------------------------------------------------* -** issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - end -**--------------------------------------------------------------------* -* ENDIF. -** IF -cell_style IS NOT INITIAL. -** READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = -cell_style. -* IF lv_style_guid IS NOT INITIAL. -* READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = lv_style_guid. -** end of change issue #157 - allow column cellstyles -* lv_value = ls_style_mapping-style. -* SHIFT lv_value RIGHT DELETING TRAILING space. -* SHIFT lv_value LEFT DELETING LEADING space. -* lo_element_3->set_attribute_ns( name = lc_xml_attr_s -* value = lv_value ). -* ENDIF. -* -* " For cells with formula ignore the value - Excel will calculate it -* IF -cell_formula IS NOT INITIAL. -* " fomula node -* lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_f -* parent = lo_document ). -* lv_value = -cell_formula. -* CONDENSE lv_value. -* lo_element_4->set_value( value = lv_value ). -* lo_element_3->append_child( new_child = lo_element_4 ). " fomula node -* ELSEIF -cell_value IS NOT INITIAL "cell can have just style or formula -* AND -cell_value <> lc_dummy_cell_content. -* IF -data_type IS NOT INITIAL. -* IF -data_type EQ 's_leading_blanks'. -* lo_element_3->set_attribute_ns( name = lc_xml_attr_t -* value = 's' ). -* ELSE. -* lo_element_3->set_attribute_ns( name = lc_xml_attr_t -* value = -data_type ). -* ENDIF. -* ENDIF. -* -* " value node -* lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v -* parent = lo_document ). -* -* IF -data_type EQ 's' OR -data_type EQ 's_leading_blanks'. -* lv_value = me->get_shared_string_index( -cell_value ). -* CONDENSE lv_value. -* lo_element_4->set_value( value = lv_value ). -* ELSE. -* lv_value = -cell_value. -* CONDENSE lv_value. -* lo_element_4->set_value( value = lv_value ). -* ENDIF. -* -* lo_element_3->append_child( new_child = lo_element_4 ). " value node -* ENDIF. -* -* lo_element_2->append_child( new_child = lo_element_3 ). " column node -* ls_last_row = . -* ENDLOOP. -* IF sy-subrc = 0. -* READ TABLE lt_values INTO ls_values WITH KEY column = ls_last_row-cell_column. -* IF sy-subrc = 0 AND ls_values-value = ls_last_row-cell_value. -* CLEAR l_autofilter_hidden. -* ENDIF. -* IF lo_autofilter IS BOUND. -* IF ls_area-row_start >= ls_last_row-cell_row OR " One less for header -* ls_area-row_end < ls_last_row-cell_row . -* CLEAR l_autofilter_hidden. -* ENDIF. -* ELSE. -* CLEAR l_autofilter_hidden. -* ENDIF. -* " Row visibility of previos row. -* IF row_dimension->get_visible( ) = abap_false OR -* l_autofilter_hidden = abap_true. -* lo_element_2->set_attribute_ns( name = 'hidden' value = 'true'). -* ENDIF. -* lo_element->append_child( new_child = lo_element_2 ). " row node -* ENDIF. -* DELETE io_worksheet->sheet_content WHERE cell_value = lc_dummy_cell_content. " Get rid of dummyentries - lo_element_root->append_child( new_child = lo_element ). " sheetData node IF lo_autofilter IS BOUND. @@ -4815,8 +4485,6 @@ METHOD create_xl_sheet. ENDIF. - - ********************************************************************** * STEP 5: Create xstring stream lo_streamfactory = lo_ixml->create_stream_factory( ). @@ -4824,9 +4492,6 @@ METHOD create_xl_sheet. lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ). lo_renderer->render( ). - -* REPLACE FIRST OCCURRENCE OF me->mv_sheet_data_xstring_dummy IN ep_content WITH me->mv_sheet_data_xstring IN BYTE MODE. - ENDMETHOD. @@ -5112,6 +4777,7 @@ METHOD create_xl_sheet_sheet_data. lo_table TYPE REF TO zcl_excel_table, lt_table_areas TYPE SORTED TABLE OF lty_table_area WITH NON-UNIQUE KEY left right top bottom, ls_table_area LIKE LINE OF lt_table_areas, + lo_column TYPE REF TO zcl_excel_column, ls_sheet_content LIKE LINE OF io_worksheet->sheet_content, ls_sheet_content_empty LIKE LINE OF io_worksheet->sheet_content, @@ -5132,13 +4798,9 @@ METHOD create_xl_sheet_sheet_data. lo_element_4 TYPE REF TO if_ixml_element, lv_value TYPE string, - lv_style_guid TYPE zexcel_cell_style, - lv_column_p TYPE zexcel_cell_column_alpha, - - xxx. + lv_style_guid TYPE zexcel_cell_style. FIELD-SYMBOLS: TYPE zexcel_s_cell_data, - TYPE zexcel_s_worksheet_columndime, TYPE zexcel_s_worksheet_rowdimensio, LIKE LINE OF lts_row_outlines. @@ -5362,16 +5024,15 @@ METHOD create_xl_sheet_sheet_data. *--------------------------------------------------------------------* *issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 2 - end *--------------------------------------------------------------------* - lv_column_p = zcl_excel_common=>convert_column2alpha( -cell_column ). - READ TABLE it_column_dimensions WITH KEY column = lv_column_p ASSIGNING . - IF sy-subrc = 0. - lv_style_guid = -column_dimension->get_column_style_guid( ). + lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). + lo_column ?= io_worksheet->get_column( -cell_column ). + IF lo_column->get_column_index( ) = -cell_column. + lv_style_guid = lo_column->get_column_style_guid( ). IF lv_style_guid IS INITIAL. lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). ENDIF. - ELSE. - lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ). ENDIF. + *--------------------------------------------------------------------* *issue #220 - If cell in tables-area don't use default from row or column or sheet - Coding 3 - start *--------------------------------------------------------------------* diff --git a/src/zcl_excel_writer_huge_file.clas.abap b/src/zcl_excel_writer_huge_file.clas.abap index e1abf4b..c2f22f8 100644 --- a/src/zcl_excel_writer_huge_file.clas.abap +++ b/src/zcl_excel_writer_huge_file.clas.abap @@ -282,7 +282,7 @@ METHOD create_xl_sheet. lo_iterator TYPE REF TO cl_object_collection_iterator, lo_table TYPE REF TO zcl_excel_table, row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, - default_col_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column_default TYPE REF TO zcl_excel_column, default_row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, lv_value TYPE string, lv_index TYPE i, @@ -294,7 +294,8 @@ METHOD create_xl_sheet. lv_freeze_cell_row TYPE zexcel_cell_row, lv_freeze_cell_column TYPE zexcel_cell_column, lv_freeze_cell_column_alpha TYPE zexcel_cell_column_alpha, - column_dimensions TYPE zexcel_t_worksheet_columndime, + lo_column_iterator TYPE REF TO cl_object_collection_iterator, + lo_column TYPE REF TO zcl_excel_column, row_dimensions TYPE zexcel_t_worksheet_rowdimensio, lv_relation_id TYPE i VALUE 0, outline_level_row TYPE i VALUE 0, @@ -314,7 +315,6 @@ METHOD create_xl_sheet. FIELD-SYMBOLS: TYPE zexcel_s_cell_data, LIKE LINE OF lt_range_merge, - TYPE zexcel_s_worksheet_columndime, TYPE zexcel_s_worksheet_rowdimensio, TYPE lty_column, TYPE lty_row, @@ -427,12 +427,12 @@ METHOD create_xl_sheet. * * Row and column info * - column_dimensions[] = io_worksheet->get_column_dimensions( ). + lo_column_iterator = io_worksheet->get_columns_iterator( ). row_dimensions[] = io_worksheet->get_row_dimensions( ). - IF NOT column_dimensions IS INITIAL. + IF NOT lo_column_iterator IS BOUND. io_worksheet->calculate_column_widths( ). - column_dimensions[] = io_worksheet->get_column_dimensions( ). + lo_column_iterator = io_worksheet->get_columns_iterator( ). ENDIF. default_row_dimension = io_worksheet->get_default_row_dimension( ). @@ -449,10 +449,10 @@ METHOD create_xl_sheet. CONDENSE lv_value. l_worksheet-defaultrowheight = lv_value. - default_col_dimension = io_worksheet->get_default_column_dimension( ). - IF default_col_dimension IS BOUND. - IF default_col_dimension->get_width( ) >= 0. - l_worksheet-defaultcolwidth = default_col_dimension->get_width( ). + lo_column_default = io_worksheet->get_default_column( ). + IF lo_column_default IS BOUND. + IF lo_column_default->get_width( ) >= 0. + l_worksheet-defaultcolwidth = lo_column_default->get_width( ). ENDIF. ENDIF. @@ -462,54 +462,49 @@ METHOD create_xl_sheet. ENDIF. ENDLOOP. - LOOP AT column_dimensions ASSIGNING . - IF -column_dimension->get_outline_level( ) > outline_level_col. - l_worksheet-outlinelevelcol = -column_dimension->get_outline_level( ). - ENDIF. - ENDLOOP. - -* * Set column information (width, style, ...) -* - LOOP AT column_dimensions ASSIGNING . - APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING . - -min = -max = -column_dimension->get_column_index( ). - -width = -column_dimension->get_width( ). - IF -width < 0. - -width = lc_default_col_width. - ENDIF. - IF -column_dimension->get_visible( ) = abap_false. - -hidden = lc_true. - ENDIF. - IF -column_dimension->get_auto_size( ) = abap_true. - -bestfit = lc_true. - ENDIF. - IF default_col_dimension IS BOUND. - IF -column_dimension->get_width( ) - <> default_col_dimension->get_width( ). + IF lo_column_iterator->has_next( ) = abap_true. + WHILE lo_column_iterator->has_next( ) = abap_true. + lo_column ?= lo_column_iterator->get_next( ). + IF lo_column->get_outline_level( ) > outline_level_col. + l_worksheet-outlinelevelcol = lo_column->get_outline_level( ). + ENDIF. + APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING . + -min = -max = lo_column->get_column_index( ). + -width = lo_column->get_width( ). + IF -width < 0. + -width = lc_default_col_width. + ENDIF. + IF lo_column->get_visible( ) = abap_false. + -hidden = lc_true. + ENDIF. + IF lo_column->get_auto_size( ) = abap_true. + -bestfit = lc_true. + ENDIF. + IF lo_column_default IS BOUND. + IF lo_column->get_width( ) <> lo_column_default->get_width( ). + -customwidth = lc_true. + ENDIF. + ELSE. -customwidth = lc_true. ENDIF. - ELSE. - -customwidth = lc_true. - ENDIF. - IF -column_dimension->get_collapsed( ) = abap_true. - -collapsed = lc_true. - ENDIF. - -outlinelevel = -column_dimension->get_outline_level( ). - lv_style_guid = -column_dimension->get_column_style_guid( ). - -style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1. - ENDLOOP. - + IF lo_column->get_collapsed( ) = abap_true. + -collapsed = lc_true. + ENDIF. + -outlinelevel = lo_column->get_outline_level( ). + lv_style_guid = lo_column->get_column_style_guid( ). + -style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1. * * Missing columns * * First collect columns that were already handled before. * The rest has to be inserted now. * - LOOP AT column_dimensions ASSIGNING . - lv_column = zcl_excel_common=>convert_column2int( -column ). - INSERT lv_column INTO TABLE lts_sorted_columns. - ENDLOOP. + + lv_column = zcl_excel_common=>convert_column2int( lo_column->get_column_index( ) ). + INSERT lv_column INTO TABLE lts_sorted_columns. + ENDWHILE. + ENDIF. * * Now find all columns that were missing so far @@ -534,8 +529,8 @@ METHOD create_xl_sheet. APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING . -min = missing_column-first_column. -max = missing_column-last_column. - IF default_col_dimension IS BOUND AND default_col_dimension->get_width( ) >= 0. - -width = default_col_dimension->get_width( ). + IF lo_column_default IS BOUND AND lo_column_default->get_width( ) >= 0. + -width = lo_column_default->get_width( ). ELSE. -width = lc_default_col_width. ENDIF. diff --git a/src/zdemo_calendar.prog.abap b/src/zdemo_calendar.prog.abap index c188a3b..af80072 100644 --- a/src/zdemo_calendar.prog.abap +++ b/src/zdemo_calendar.prog.abap @@ -48,7 +48,7 @@ START-OF-SELECTION. DATA: lo_excel TYPE REF TO zcl_excel, lo_excel_writer TYPE REF TO zif_excel_writer, lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi, hyperlink TYPE REF TO zcl_excel_hyperlink, lo_drawing TYPE REF TO zcl_excel_drawing. @@ -215,10 +215,10 @@ START-OF-SELECTION. lo_worksheet->sheet_setup->paper_size = zcl_excel_sheet_setup=>c_papersize_a4. lo_worksheet->sheet_setup->horizontal_centered = abap_true. lo_worksheet->sheet_setup->vertical_centered = abap_true. - lo_col_dim = lo_worksheet->get_column_dimension( 'A' ). - lo_col_dim->set_width( '1.0' ). - lo_col_dim = lo_worksheet->get_column_dimension( 'B' ). - lo_col_dim->set_width( '2.0' ). + lo_column = lo_worksheet->get_column( 'A' ). + lo_column->set_width( '1.0' ). + lo_column = lo_worksheet->get_column( 'B' ). + lo_column->set_width( '2.0' ). IF p_lands = abap_true. lo_worksheet->sheet_setup->orientation = zcl_excel_sheet_setup=>c_orientation_landscape. lv_height = c_height_landscape. @@ -228,8 +228,8 @@ START-OF-SELECTION. lo_worksheet->sheet_setup->margin_right = '0.10'. lo_worksheet->sheet_setup->margin_bottom = '0.10'. ELSE. - lo_col_dim = lo_worksheet->get_column_dimension( 'K' ). - lo_col_dim->set_width( '3.0' ). + lo_column = lo_worksheet->get_column( 'K' ). + lo_column->set_width( '3.0' ). lo_worksheet->sheet_setup->margin_top = '0.80'. lo_worksheet->sheet_setup->margin_left = '0.55'. lo_worksheet->sheet_setup->margin_right = '0.05'. diff --git a/src/zdemo_calendar_classes.prog.abap b/src/zdemo_calendar_classes.prog.abap index fedf291..19cdc2c 100644 --- a/src/zdemo_calendar_classes.prog.abap +++ b/src/zdemo_calendar_classes.prog.abap @@ -216,7 +216,7 @@ CLASS zcl_helper IMPLEMENTATION. col_max TYPE i, from_col_int TYPE zexcel_cell_column, col TYPE zexcel_cell_column_alpha, - lr_col_dim TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lr_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. DATA: lv_date TYPE datum, value TYPE string, @@ -325,8 +325,8 @@ CLASS zcl_helper IMPLEMENTATION. ELSE. width = '11.4'. ENDIF. - lr_col_dim = c_worksheet->get_column_dimension( col ). - lr_col_dim->set_width( width ). + lo_column = c_worksheet->get_column( col ). + lo_column->set_width( width ). col_int = col_int + 1. ENDWHILE. row = i_from_row + 1. @@ -364,7 +364,7 @@ CLASS zcl_helper IMPLEMENTATION. from_col_int TYPE zexcel_cell_column, col_int TYPE zexcel_cell_column, col TYPE zexcel_cell_column_alpha. - DATA: lo_col_dim TYPE REF TO zcl_excel_worksheet_columndime, + DATA: lo_column TYPE REF TO zcl_excel_column, lo_row_dim TYPE REF TO zcl_excel_worksheet_rowdimensi. FIELD-SYMBOLS: LIKE LINE OF day_names. @@ -410,8 +410,8 @@ CLASS zcl_helper IMPLEMENTATION. ip_style = i_day_style " Single-Character Indicator ). " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). + lo_column = c_worksheet->get_column( col ). + lo_column->set_width( '3.6' ). lv_date = lv_date + 1. @@ -441,8 +441,8 @@ CLASS zcl_helper IMPLEMENTATION. col_int = from_col_int + day + 2. col = zcl_excel_common=>convert_column2alpha( col_int ). " width - lo_col_dim = c_worksheet->get_column_dimension( col ). - lo_col_dim->set_width( '3.6' ). + lo_column = c_worksheet->get_column( col ). + lo_column->set_width( '3.6' ). ENDWHILE. ENDMETHOD. "ADD_CALENDAR_LANDSCAPE diff --git a/src/zdemo_excel1.prog.abap b/src/zdemo_excel1.prog.abap index 7f393a7..8442ba8 100644 --- a/src/zdemo_excel1.prog.abap +++ b/src/zdemo_excel1.prog.abap @@ -9,10 +9,10 @@ REPORT zdemo_excel1. -DATA: lo_excel TYPE REF TO zcl_excel, - lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. +DATA: lo_excel TYPE REF TO zcl_excel, + lo_worksheet TYPE REF TO zcl_excel_worksheet, + lo_hyperlink TYPE REF TO zcl_excel_hyperlink, + lo_column TYPE REF TO zcl_excel_column. CONSTANTS: gc_save_file_name TYPE string VALUE '01_HelloWorld.xlsx'. INCLUDE zdemo_excel_outputopt_incl. @@ -31,8 +31,8 @@ START-OF-SELECTION. lo_hyperlink = zcl_excel_hyperlink=>create_external_link( iv_url = 'http://www.abap2xlsx.org' ). lo_worksheet->set_cell( ip_column = 'B' ip_row = 4 ip_value = 'Click here to visit abap2xlsx homepage' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_width( ip_width = 11 ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_width( ip_width = 11 ). diff --git a/src/zdemo_excel10.prog.abap b/src/zdemo_excel10.prog.abap index 2aaff40..a648afe 100644 --- a/src/zdemo_excel10.prog.abap +++ b/src/zdemo_excel10.prog.abap @@ -11,7 +11,7 @@ REPORT zdemo_excel10. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_style_conditional2 TYPE REF TO zcl_excel_style_conditional, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. + lo_column TYPE REF TO zcl_excel_column. DATA: lt_field_catalog TYPE zexcel_t_fieldcatalog, ls_table_settings TYPE zexcel_s_table_settings, @@ -87,8 +87,8 @@ START-OF-SELECTION. is_table_settings = ls_table_settings it_field_catalog = lt_field_catalog ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). "make date field a bit wider - column_dimension->set_width( ip_width = 13 ). + lo_column = lo_worksheet->get_column( ip_column = 'D' ). "make date field a bit wider + lo_column->set_width( ip_width = 13 ). *** Create output diff --git a/src/zdemo_excel11.prog.abap b/src/zdemo_excel11.prog.abap index 250a940..b939e80 100644 --- a/src/zdemo_excel11.prog.abap +++ b/src/zdemo_excel11.prog.abap @@ -191,7 +191,7 @@ START-OF-SELECTION. lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_style_body TYPE REF TO zcl_excel_style, lo_border_dark TYPE REF TO zcl_excel_style_border, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. DATA: lv_style_body_even_guid TYPE zexcel_cell_style, @@ -369,46 +369,10 @@ START-OF-SELECTION. count = 1. WHILE count <= highest_column. col_alpha = zcl_excel_common=>convert_column2alpha( ip_column = count ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = col_alpha ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = col_alpha ). + lo_column->set_auto_size( ip_auto_size = abap_true ). count = count + 1. ENDWHILE. -* " Set Column width manuall -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). -* column_dimension->set_width( ip_width = 11 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). -* column_dimension->set_width( ip_width = 35 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). -* column_dimension->set_width( ip_width = 18 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). -* column_dimension->set_width( ip_width = 5 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). -* column_dimension->set_width( ip_width = 6 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). -* column_dimension->set_width( ip_width = 3 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'J' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'K' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'L' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'M' ). -* column_dimension->set_width( ip_width = 13 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'N' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'O' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'P' ). -* column_dimension->set_width( ip_width = 12 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'Q' ). -* column_dimension->set_width( ip_width = 9 ). -* column_dimension = lo_worksheet->get_column_dimension( ip_column = 'R' ). -* column_dimension->set_width( ip_width = 40 ). - *** Create output lcl_output=>output( lo_excel ). diff --git a/src/zdemo_excel12.prog.abap b/src/zdemo_excel12.prog.abap index 4041f53..5c06367 100644 --- a/src/zdemo_excel12.prog.abap +++ b/src/zdemo_excel12.prog.abap @@ -10,7 +10,7 @@ REPORT zdemo_excel12. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi. DATA: lv_file TYPE xstring, @@ -54,35 +54,27 @@ START-OF-SELECTION. " Column Settings " Auto size - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'I' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'I' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " Manual Width - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_width( ip_width = 50 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_visible( ip_visible = abap_false ). + lo_column = lo_worksheet->get_column( ip_column = 'C' ). + lo_column->set_width( ip_width = 50 ). + lo_column = lo_worksheet->get_column( ip_column = 'D' ). + lo_column->set_visible( ip_visible = abap_false ). " Implementation in the Writer is not working yet ===== TODO ===== - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'F' ). - column_dimension->set_outline_level( ip_outline_level = 0 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'G' ). - column_dimension->set_outline_level( ip_outline_level = 1 ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'H' ). - column_dimension->set_outline_level( ip_outline_level = 2 ). + lo_column = lo_worksheet->get_column( ip_column = 'F' ). + lo_column->set_outline_level( ip_outline_level = 0 ). + lo_column = lo_worksheet->get_column( ip_column = 'G' ). + lo_column->set_outline_level( ip_outline_level = 1 ). + lo_column = lo_worksheet->get_column( ip_column = 'H' ). + lo_column->set_outline_level( ip_outline_level = 2 ). row_dimension = lo_worksheet->get_row_dimension( ip_row = 1 ). row_dimension->set_visible( ip_visible = abap_false ). row_dimension = lo_worksheet->get_row_dimension( ip_row = 5 ). row_dimension->set_row_height( ip_row_height = 20 ). -* obsolete, not intuitive. Use new method shown below -* " Implementation in the Writer is not working yet ===== TODO ===== -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 6 ). -* row_dimension->set_outline_level( ip_outline_level = 0 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 7 ). -* row_dimension->set_outline_level( ip_outline_level = 1 ). -* row_dimension = lo_worksheet->get_row_dimension( ip_row = 8 ). -* row_dimension->set_outline_level( ip_outline_level = 2 ). * Define an outline rows 10-16, collapsed on startup lo_worksheet->set_row_outline( iv_row_from = 10 diff --git a/src/zdemo_excel24.prog.abap b/src/zdemo_excel24.prog.abap index 1104942..ace4342 100644 --- a/src/zdemo_excel24.prog.abap +++ b/src/zdemo_excel24.prog.abap @@ -12,7 +12,7 @@ TYPE-POOLS: abap. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_hyperlink TYPE REF TO zcl_excel_hyperlink. DATA: lv_file TYPE xstring, @@ -44,8 +44,8 @@ START-OF-SELECTION. lo_hyperlink = zcl_excel_hyperlink=>create_internal_link( iv_location = 'Sheet2!A1' ). lo_worksheet->set_cell( ip_column = 'A' ip_row = 6 ip_value = 'This is a link to the second sheet' ip_hyperlink = lo_hyperlink ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'A' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " Second sheet diff --git a/src/zdemo_excel28.prog.abap b/src/zdemo_excel28.prog.abap index 88c7cb8..0c3b4e6 100644 --- a/src/zdemo_excel28.prog.abap +++ b/src/zdemo_excel28.prog.abap @@ -12,7 +12,7 @@ DATA: lo_excel TYPE REF TO zcl_excel, lo_excel_writer TYPE REF TO zif_excel_writer, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. + lo_column TYPE REF TO zcl_excel_column. DATA: lv_file TYPE xstring, lv_bytecount TYPE i, @@ -56,8 +56,8 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = sy-datum ). lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = sy-uzeit ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_width( 11 ). + lo_column = lo_worksheet->get_column( 'B' ). + lo_column->set_width( 11 ). lo_worksheet = lo_excel->add_new_worksheet( ). lo_worksheet->set_title( ip_title = 'Sheet2' ). @@ -93,7 +93,7 @@ START-OF-SELECTION. CHANGING data_tab = lt_file_tab ). * zcl_excel_writer_csv=>set_active_sheet_index( i_active_worksheet = 2 ). - zcl_excel_writer_csv=>set_active_sheet_index_by_name( I_WORKSHEET_NAME = 'Sheet1' ). + zcl_excel_writer_csv=>set_active_sheet_index_by_name( i_worksheet_name = 'Sheet1' ). lv_file = lo_excel_writer->write_file( lo_excel ). REPLACE FIRST OCCURRENCE OF '_Sheet2.csv' IN lv_full_path WITH '_Sheet1.csv'. diff --git a/src/zdemo_excel3.prog.abap b/src/zdemo_excel3.prog.abap index 53584bf..cfc4805 100644 --- a/src/zdemo_excel3.prog.abap +++ b/src/zdemo_excel3.prog.abap @@ -12,7 +12,7 @@ TYPE-POOLS: abap. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. + lo_column TYPE REF TO zcl_excel_column. DATA: ls_table_settings TYPE zexcel_s_table_settings. @@ -55,8 +55,8 @@ START-OF-SELECTION. lo_worksheet->freeze_panes( ip_num_rows = 3 ). "freeze column headers when scrolling - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). "make date field a bit wider - column_dimension->set_width( ip_width = 11 ). + lo_column = lo_worksheet->get_column( ip_column = 'E' ). "make date field a bit wider + lo_column->set_width( ip_width = 11 ). " Add another table for data validations lo_worksheet = lo_excel->add_new_worksheet( ). lv_title = 'Data Validation'. diff --git a/src/zdemo_excel30.prog.abap b/src/zdemo_excel30.prog.abap index 836df2b..71d8432 100644 --- a/src/zdemo_excel30.prog.abap +++ b/src/zdemo_excel30.prog.abap @@ -11,7 +11,7 @@ REPORT zdemo_excel30. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. + lo_column TYPE REF TO zcl_excel_column. DATA: lv_value TYPE string, @@ -81,16 +81,16 @@ START-OF-SELECTION. lv_count = lv_count + 1. ENDWHILE. - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ). - column_dimension->set_auto_size( abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'A' ). + lo_column->set_auto_size( abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_auto_size( abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'C' ). + lo_column->set_auto_size( abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'D' ). + lo_column->set_auto_size( abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'E' ). + lo_column->set_auto_size( abap_true ). diff --git a/src/zdemo_excel31.prog.abap b/src/zdemo_excel31.prog.abap index 081003b..84f1737 100644 --- a/src/zdemo_excel31.prog.abap +++ b/src/zdemo_excel31.prog.abap @@ -11,7 +11,7 @@ REPORT zdemo_excel31. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, lo_hyperlink TYPE REF TO zcl_excel_hyperlink, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime. + lo_column TYPE REF TO zcl_excel_column. DATA: fieldval TYPE text80, @@ -55,12 +55,12 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'A' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'C' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " Add sheet lo_worksheet = lo_excel->add_new_worksheet( ). @@ -91,12 +91,12 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'A' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'C' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " Add sheet lo_worksheet = lo_excel->add_new_worksheet( ). @@ -127,12 +127,12 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_column = 'C' ip_row = row ip_value = fieldval ip_style = style_column_c_guid ). ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'A' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'C' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " Add sheet for merged cells lo_worksheet = lo_excel->add_new_worksheet( ). @@ -148,8 +148,8 @@ START-OF-SELECTION. ip_column_end = 'C' ip_row = 1 ). - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( 'A' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). lo_excel->set_active_sheet_index( i_active_worksheet = 1 ). diff --git a/src/zdemo_excel34.prog.abap b/src/zdemo_excel34.prog.abap index 1334d8d..8638666 100644 --- a/src/zdemo_excel34.prog.abap +++ b/src/zdemo_excel34.prog.abap @@ -19,7 +19,7 @@ DATA: current_row TYPE i, colorflag TYPE i, color TYPE zexcel_style_color_argb, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi, writing1 TYPE string, @@ -65,8 +65,8 @@ START-OF-SELECTION. col_alpha = zcl_excel_common=>convert_column2alpha( col ). * Set size of column - column_dimension = lo_worksheet->get_column_dimension( col_alpha ). - column_dimension->set_width( width ). + lo_column = lo_worksheet->get_column( col_alpha ). + lo_column->set_width( width ). * Set size of row row_dimension = lo_worksheet->get_row_dimension( row ). @@ -100,10 +100,10 @@ START-OF-SELECTION. ip_row = row ip_alignment_horizontal = zcl_excel_style_alignment=>c_horizontal_center ). ENDDO. - column_dimension = lo_worksheet->get_column_dimension( 'A' ). - column_dimension->set_auto_size( abap_true ). - column_dimension = lo_worksheet->get_column_dimension( 'J' ). - column_dimension->set_auto_size( abap_true ). + lo_column = lo_worksheet->get_column( 'A' ). + lo_column->set_auto_size( abap_true ). + lo_column = lo_worksheet->get_column( 'J' ). + lo_column->set_auto_size( abap_true ). * Set win-position CONSTANTS: c_pawn TYPE string VALUE 'Pawn'. diff --git a/src/zdemo_excel36.prog.abap b/src/zdemo_excel36.prog.abap index 74f2258..8fecb97 100644 --- a/src/zdemo_excel36.prog.abap +++ b/src/zdemo_excel36.prog.abap @@ -4,7 +4,7 @@ REPORT zdemo_excel36. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, - column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, col TYPE i. DATA: lo_style_arial20 TYPE REF TO zcl_excel_style, @@ -69,12 +69,12 @@ START-OF-SELECTION. * 3rd sheet - defaultstyle for columns ( set to Times New Roman 11 ) lo_worksheet = lo_excel->add_new_worksheet( ). lo_worksheet->set_title( 'Style for 3 columns' ). - column_dimension = lo_worksheet->get_column_dimension( 'B' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'C' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). - column_dimension = lo_worksheet->get_column_dimension( 'F' ). - column_dimension->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). + lo_column = lo_worksheet->get_column( 'B' ). + lo_column->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). + lo_column = lo_worksheet->get_column( 'C' ). + lo_column->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). + lo_column = lo_worksheet->get_column( 'F' ). + lo_column->set_column_style_by_guid( ip_style_guid = lv_style_times11_guid ). lo_worksheet->set_cell( ip_column = 2 ip_row = 4 ip_value = 'The columns B,C and F are set to Times New Roman' ). lo_worksheet->set_cell( ip_column = 2 ip_row = 10 ip_value = 'All other cells in this sheet are set to font Arial, fontsize 20' ). diff --git a/src/zdemo_excel38.prog.abap b/src/zdemo_excel38.prog.abap index 553f151..a67772a 100644 --- a/src/zdemo_excel38.prog.abap +++ b/src/zdemo_excel38.prog.abap @@ -3,7 +3,7 @@ REPORT. DATA: lo_excel TYPE REF TO zcl_excel, lo_worksheet TYPE REF TO zcl_excel_worksheet, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_drawing TYPE REF TO zcl_excel_drawing. TYPES: BEGIN OF gty_icon, @@ -36,10 +36,10 @@ START-OF-SELECTION. " Get active sheet lo_worksheet = lo_excel->get_active_worksheet( ). lo_worksheet->set_title( ip_title = 'Demo Icons' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ). - lo_column_dimension->set_auto_size( 'X' ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( 'X' ). + lo_column = lo_worksheet->get_column( ip_column = 'A' ). + lo_column->set_auto_size( 'X' ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_auto_size( 'X' ). * Get all icons SELECT name diff --git a/src/zdemo_teched6.prog.abap b/src/zdemo_teched6.prog.abap index 9752085..f9f7a61 100644 --- a/src/zdemo_teched6.prog.abap +++ b/src/zdemo_teched6.prog.abap @@ -20,7 +20,7 @@ DATA: lo_style_title TYPE REF TO zcl_excel_style, lo_drawing TYPE REF TO zcl_excel_drawing, lo_range TYPE REF TO zcl_excel_range, lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lv_style_title_guid TYPE zexcel_cell_style, ls_key TYPE wwwdatatab. @@ -133,10 +133,10 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'C' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " Create xlsx stream CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. diff --git a/src/zdemo_teched7.prog.abap b/src/zdemo_teched7.prog.abap index a429c8f..5a7249c 100644 --- a/src/zdemo_teched7.prog.abap +++ b/src/zdemo_teched7.prog.abap @@ -20,7 +20,7 @@ DATA: lo_style_title TYPE REF TO zcl_excel_style, lo_drawing TYPE REF TO zcl_excel_drawing, lo_range TYPE REF TO zcl_excel_range, lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lv_style_title_guid TYPE zexcel_cell_style, ls_key TYPE wwwdatatab. @@ -136,10 +136,10 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'C' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " Create xlsx stream CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007. diff --git a/src/zdemo_teched8.prog.abap b/src/zdemo_teched8.prog.abap index 109064a..da49146 100644 --- a/src/zdemo_teched8.prog.abap +++ b/src/zdemo_teched8.prog.abap @@ -23,7 +23,7 @@ DATA: lo_style_title TYPE REF TO zcl_excel_style, lo_drawing TYPE REF TO zcl_excel_drawing, lo_range TYPE REF TO zcl_excel_range, lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_style_conditional TYPE REF TO zcl_excel_style_conditional, lv_style_title_guid TYPE zexcel_cell_style, lv_style_green_guid TYPE zexcel_cell_style, @@ -144,10 +144,10 @@ START-OF-SELECTION. lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'C' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " defne conditional styles lo_style_green = lo_excel->add_new_style( ). diff --git a/src/zdemo_teched9.prog.abap b/src/zdemo_teched9.prog.abap index c9b0ac8..0127c24 100644 --- a/src/zdemo_teched9.prog.abap +++ b/src/zdemo_teched9.prog.abap @@ -23,7 +23,7 @@ DATA: lo_style_title TYPE REF TO zcl_excel_style, lo_drawing TYPE REF TO zcl_excel_drawing, lo_range TYPE REF TO zcl_excel_range, lo_data_validation TYPE REF TO zcl_excel_data_validation, - lo_column_dimension TYPE REF TO zcl_excel_worksheet_columndime, + lo_column TYPE REF TO zcl_excel_column, lo_style_conditional TYPE REF TO zcl_excel_style_conditional, lv_style_title_guid TYPE zexcel_cell_style, lv_style_green_guid TYPE zexcel_cell_style, @@ -122,10 +122,10 @@ CONSTANTS: lv_default_file_name TYPE string VALUE 'TechEd01.xlsx'. lo_worksheet->set_cell( ip_row = 8 ip_column = 'C' ip_value = 'Select a value' ). " add autosize (column width) - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). - lo_column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ). - lo_column_dimension->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'B' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). + lo_column = lo_worksheet->get_column( ip_column = 'C' ). + lo_column->set_auto_size( ip_auto_size = abap_true ). " defne conditional styles lo_style_green = lo_excel->add_new_style( ).