First implementation for issue #484

This commit is contained in:
Ivan Femia 2017-05-19 00:11:31 +02:00
parent 240c61dbd7
commit 68b2c66edd
29 changed files with 884 additions and 807 deletions

View File

@ -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' ).

View File

@ -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.

View File

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Worksheet Column</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
<TPOOL/>
<DESCRIPTIONS>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>AUTO_SIZE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Auto size?</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>COLLAPSED</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Collapsed?</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>COLUMN_INDEX</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Column index</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>EXCEL</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Excel creator</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>GET_COLUMN_STYLE_GUID</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Get guid of column style</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>OUTLINE_LEVEL</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Outline level</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>SET_COLUMN_STYLE_BY_GUID</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Set column style by style guid</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>STYLE_GUID</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Style identifier</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>VISIBLE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Visible?</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>WIDTH</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Column width</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>WORKSHEET</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Worksheet</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMN</CLSNAME>
<CMPNAME>XF_INDEX</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Index to cellXf</DESCRIPT>
</SEOCOMPOTX>
</DESCRIPTIONS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -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.

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Ranges collection</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
<TPOOL/>
<DESCRIPTIONS>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>ADD</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Adds an Element to the Collection</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>CLEAR</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Initializes the Collection</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>CONSTRUCTOR</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>CONSTRUCTOR</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>GET</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Gets Element</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>GET_ITERATOR</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Returns an iterator</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>IS_EMPTY</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Checks whether elements are contained</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>REMOVE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Deletes an Element from the Collection</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_COLUMNS</CLSNAME>
<CMPNAME>SIZE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Specifies number of contained elements</DESCRIPT>
</SEOCOMPOTX>
</DESCRIPTIONS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -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: <fs_tab> type any table.
FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE.
assign wo_data->* to <fs_tab> .
ASSIGN wo_data->* TO <fs_tab> .
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 <fs_tab> 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 <fs_tab> 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 = <fs_tab>
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 <fs_sfcat>-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 <fs_sfcat>-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 <fs_sfcat>-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 <fs_sfcat>-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 <fs_sfcat>-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.

View File

@ -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.

View File

@ -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: <column_dimension> LIKE LINE OF column_dimensions.
FIELD-SYMBOLS: <auto_size> LIKE LINE OF auto_sizes.
column_dimensions[] = me->get_column_dimensions( ).
LOOP AT column_dimensions ASSIGNING <column_dimension>.
auto_size = <column_dimension>-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 <auto_size>.
<auto_size>-col_index = <column_dimension>-column_dimension->get_column_index( ).
<auto_size>-col_index = lo_column->get_column_index( ).
<auto_size>-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 <auto_size>.
* col_alpha = zcl_excel_common=>convert_column2alpha( <auto_size>-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 = <auto_size>-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 = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column
ip_row = count ).
* End of change # issue 139 - Dateretention of cellstyles
IF width > <auto_size>-width.
<auto_size>-width = width.
ENDIF.
width = calculate_cell_width( ip_column = <auto_size>-col_index " issue #155 - less restrictive typing for ip_column
ip_row = count ).
IF width > <auto_size>-width.
<auto_size>-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( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column
column_dimension->set_width( <auto_size>-width ).
lo_column = me->get_column( <auto_size>-col_index ). " issue #155 - less restrictive typing for ip_column
lo_column->set_width( <auto_size>-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: <fs_column_dimension> 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 <fs_column_dimension>
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 <fs_column_dimension> 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 <fs_column_dimension>.
<fs_column_dimension>-column = lv_column_alpha. " issue #155 - less restrictive typing for ip_column
<fs_column_dimension>-column_dimension = r_column_dimension.
ELSE.
r_column_dimension = <fs_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.

View File

@ -88,6 +88,12 @@
<LANGU>I</LANGU>
<DESCRIPT>Add drawing to the sheet</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>ADD_NEW_COLUMN</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Create a new column</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>ADD_NEW_CONDITIONAL_STYLE</CMPNAME>
@ -210,15 +216,15 @@
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>COLUMN_DIMENSIONS</CMPNAME>
<CMPNAME>COLUMNS</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Collection of column dimensions</DESCRIPT>
<DESCRIPT>Ranges collection</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>COLUMN_DIMENSIONS</CMPNAME>
<LANGU>I</LANGU>
<DESCRIPT>Collection of column dimensions</DESCRIPT>
<CMPNAME>COLUMN_DEFAULT</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Worksheet ColumnDimension</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
@ -292,18 +298,6 @@
<LANGU>I</LANGU>
<DESCRIPT>Data validations collection</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>DEFAULT_COLUMN_DIMENSION</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Worksheet ColumnDimension</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>DEFAULT_COLUMN_DIMENSION</CMPNAME>
<LANGU>I</LANGU>
<DESCRIPT>Worksheet ColumnDimension</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>DEFAULT_EXCEL_DATE_FORMAT</CMPNAME>
@ -444,27 +438,21 @@
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>GET_COLUMN_DIMENSION</CMPNAME>
<CMPNAME>GET_COLUMN</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Get column dimension at a specific column</DESCRIPT>
<DESCRIPT>Get column object at a specific column</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>GET_COLUMN_DIMENSION</CMPNAME>
<LANGU>I</LANGU>
<DESCRIPT>Get column dimension at a specific column</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>GET_COLUMN_DIMENSIONS</CMPNAME>
<CMPNAME>GET_COLUMNS</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Get column dimensions</DESCRIPT>
<DESCRIPT>Get columns</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>GET_COLUMN_DIMENSIONS</CMPNAME>
<LANGU>I</LANGU>
<DESCRIPT>Get column dimensions</DESCRIPT>
<CMPNAME>GET_COLUMNS_ITERATOR</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Get columns iterator</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
@ -504,15 +492,9 @@
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>GET_DEFAULT_COLUMN_DIMENSION</CMPNAME>
<CMPNAME>GET_DEFAULT_COLUMN</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Get column dimension at a specific column</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>GET_DEFAULT_COLUMN_DIMENSION</CMPNAME>
<LANGU>I</LANGU>
<DESCRIPT>Get column dimension at a specific column</DESCRIPT>
<DESCRIPT>Get column at a specific column</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
@ -542,7 +524,7 @@
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>
<CMPNAME>GET_DEFAULT_ROW_DIMENSION</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Get column dimension at a specific column</DESCRIPT>
<DESCRIPT>Get column at a specific column</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_EXCEL_WORKSHEET</CLSNAME>

View File

@ -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: <ls_sheet_content> TYPE zexcel_s_cell_data,
<fs_range_merge> LIKE LINE OF lt_range_merge,
<column_dimension> TYPE zexcel_s_worksheet_columndime,
<row_dimension> TYPE zexcel_s_worksheet_rowdimensio,
<ls_row_outline> 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 <row_dimension>.
* IF <row_dimension>-row_dimension->get_outline_level( ) > outline_level_row.
* outline_level_row = <row_dimension>-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 <column_dimension>.
IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col.
outline_level_col = <column_dimension>-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 <column_dimension>.
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>-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>-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>-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>-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>-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>-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>-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>-column_dimension->get_outline_level( ) > 0.
lv_value = <column_dimension>-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>-column_dimension->get_xf_index( ). "del issue #157 - set column style
lv_style_guid = <column_dimension>-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 <column_dimension>.
lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-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 <row_dimension>.
* IF sy-subrc = 0 AND <row_dimension>-row > lv_last_row.
* lv_last_row = <row_dimension>-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 <ls_row_outline>.
* IF <ls_row_outline>-collapsed = 'X'.
* lv_current_row = <ls_row_outline>-row_to + 1. " collapsed-status may be set on following row
* ELSE.
* lv_current_row = <ls_row_outline>-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 <ls_sheet_content>.
* 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 <ls_sheet_content>.
* ENDIF.
*
* IF ls_last_row-cell_row NE <ls_sheet_content>-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 = <ls_sheet_content>-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( <ls_sheet_content>-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 = <ls_sheet_content>-cell_coords ).
*
** begin of change issue #157 - allow column cellstyle
** if no cellstyle is set, look into column, then into sheet
* IF <ls_sheet_content>-cell_style IS NOT INITIAL.
* lv_style_guid = <ls_sheet_content>-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 <= <ls_sheet_content>-cell_row
* AND bottom >= <ls_sheet_content>-cell_row
* AND left <= <ls_sheet_content>-cell_column
* AND right >= <ls_sheet_content>-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( <ls_sheet_content>-cell_column ).
* READ TABLE column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>.
* IF sy-subrc = 0.
* lv_style_guid = <column_dimension>-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 <ls_sheet_content>-cell_style IS NOT INITIAL.
** READ TABLE styles_mapping INTO ls_style_mapping WITH KEY guid = <ls_sheet_content>-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 <ls_sheet_content>-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 = <ls_sheet_content>-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 <ls_sheet_content>-cell_value IS NOT INITIAL "cell can have just style or formula
* AND <ls_sheet_content>-cell_value <> lc_dummy_cell_content.
* IF <ls_sheet_content>-data_type IS NOT INITIAL.
* IF <ls_sheet_content>-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 = <ls_sheet_content>-data_type ).
* ENDIF.
* ENDIF.
*
* " value node
* lo_element_4 = lo_document->create_simple_element( name = lc_xml_node_v
* parent = lo_document ).
*
* IF <ls_sheet_content>-data_type EQ 's' OR <ls_sheet_content>-data_type EQ 's_leading_blanks'.
* lv_value = me->get_shared_string_index( <ls_sheet_content>-cell_value ).
* CONDENSE lv_value.
* lo_element_4->set_value( value = lv_value ).
* ELSE.
* lv_value = <ls_sheet_content>-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 = <ls_sheet_content>.
* 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: <ls_sheet_content> TYPE zexcel_s_cell_data,
<column_dimension> TYPE zexcel_s_worksheet_columndime,
<row_dimension> TYPE zexcel_s_worksheet_rowdimensio,
<ls_row_outline> 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( <ls_sheet_content>-cell_column ).
READ TABLE it_column_dimensions WITH KEY column = lv_column_p ASSIGNING <column_dimension>.
IF sy-subrc = 0.
lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ).
lv_style_guid = io_worksheet->zif_excel_sheet_properties~get_style( ).
lo_column ?= io_worksheet->get_column( <ls_sheet_content>-cell_column ).
IF lo_column->get_column_index( ) = <ls_sheet_content>-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
*--------------------------------------------------------------------*

View File

@ -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:
<sheet_content> TYPE zexcel_s_cell_data,
<range_merge> LIKE LINE OF lt_range_merge,
<column_dimension> TYPE zexcel_s_worksheet_columndime,
<row_dimension> TYPE zexcel_s_worksheet_rowdimensio,
<col> TYPE lty_column,
<row> 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 <column_dimension>.
IF <column_dimension>-column_dimension->get_outline_level( ) > outline_level_col.
l_worksheet-outlinelevelcol = <column_dimension>-column_dimension->get_outline_level( ).
ENDIF.
ENDLOOP.
*
* Set column information (width, style, ...)
*
LOOP AT column_dimensions ASSIGNING <column_dimension>.
APPEND INITIAL LINE TO l_worksheet-cols ASSIGNING <col>.
<col>-min = <col>-max = <column_dimension>-column_dimension->get_column_index( ).
<col>-width = <column_dimension>-column_dimension->get_width( ).
IF <col>-width < 0.
<col>-width = lc_default_col_width.
ENDIF.
IF <column_dimension>-column_dimension->get_visible( ) = abap_false.
<col>-hidden = lc_true.
ENDIF.
IF <column_dimension>-column_dimension->get_auto_size( ) = abap_true.
<col>-bestfit = lc_true.
ENDIF.
IF default_col_dimension IS BOUND.
IF <column_dimension>-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 <col>.
<col>-min = <col>-max = lo_column->get_column_index( ).
<col>-width = lo_column->get_width( ).
IF <col>-width < 0.
<col>-width = lc_default_col_width.
ENDIF.
IF lo_column->get_visible( ) = abap_false.
<col>-hidden = lc_true.
ENDIF.
IF lo_column->get_auto_size( ) = abap_true.
<col>-bestfit = lc_true.
ENDIF.
IF lo_column_default IS BOUND.
IF lo_column->get_width( ) <> lo_column_default->get_width( ).
<col>-customwidth = lc_true.
ENDIF.
ELSE.
<col>-customwidth = lc_true.
ENDIF.
ELSE.
<col>-customwidth = lc_true.
ENDIF.
IF <column_dimension>-column_dimension->get_collapsed( ) = abap_true.
<col>-collapsed = lc_true.
ENDIF.
<col>-outlinelevel = <column_dimension>-column_dimension->get_outline_level( ).
lv_style_guid = <column_dimension>-column_dimension->get_column_style_guid( ).
<col>-style = me->excel->get_style_index_in_styles( lv_style_guid ) - 1.
ENDLOOP.
IF lo_column->get_collapsed( ) = abap_true.
<col>-collapsed = lc_true.
ENDIF.
<col>-outlinelevel = lo_column->get_outline_level( ).
lv_style_guid = lo_column->get_column_style_guid( ).
<col>-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 <column_dimension>.
lv_column = zcl_excel_common=>convert_column2int( <column_dimension>-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 <col>.
<col>-min = missing_column-first_column.
<col>-max = missing_column-last_column.
IF default_col_dimension IS BOUND AND default_col_dimension->get_width( ) >= 0.
<col>-width = default_col_dimension->get_width( ).
IF lo_column_default IS BOUND AND lo_column_default->get_width( ) >= 0.
<col>-width = lo_column_default->get_width( ).
ELSE.
<col>-width = lc_default_col_width.
ENDIF.

View File

@ -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'.

View File

@ -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: <day_name> 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

View File

@ -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 ).

View File

@ -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

View File

@ -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 ).

View File

@ -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

View File

@ -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

View File

@ -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'.

View File

@ -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'.

View File

@ -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 ).

View File

@ -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 ).

View File

@ -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'.

View File

@ -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' ).

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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( ).

View File

@ -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( ).