mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 16:36:12 +08:00
158 lines
6.4 KiB
ABAP
158 lines
6.4 KiB
ABAP
*&---------------------------------------------------------------------*
|
|
*& Report ZDEMO_EXCEL1
|
|
*&
|
|
*&---------------------------------------------------------------------*
|
|
*&
|
|
*&
|
|
*&---------------------------------------------------------------------*
|
|
|
|
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.
|
|
|
|
|
|
DATA: fieldval TYPE text80,
|
|
row TYPE i,
|
|
style_column_a TYPE REF TO zcl_excel_style,
|
|
style_column_a_guid TYPE zexcel_cell_style,
|
|
style_column_b TYPE REF TO zcl_excel_style,
|
|
style_column_b_guid TYPE zexcel_cell_style,
|
|
style_column_c TYPE REF TO zcl_excel_style,
|
|
style_column_c_guid TYPE zexcel_cell_style,
|
|
style_font TYPE REF TO zcl_excel_style_font.
|
|
|
|
CONSTANTS: gc_save_file_name TYPE string VALUE '31_AutosizeWithDifferentFontSizes.xlsx'.
|
|
INCLUDE zdemo_excel_outputopt_incl.
|
|
|
|
|
|
START-OF-SELECTION.
|
|
|
|
CREATE OBJECT lo_excel.
|
|
" Use active sheet
|
|
lo_worksheet = lo_excel->get_active_worksheet( ).
|
|
lo_worksheet->set_title( ip_title = 'Regular Font' ).
|
|
|
|
style_column_a = lo_excel->add_new_style( ).
|
|
style_column_a->font->size = 32. " quite large
|
|
style_column_a_guid = style_column_a->get_guid( ).
|
|
|
|
style_column_c = lo_excel->add_new_style( ).
|
|
style_column_c->font->size = 16. " not so large
|
|
style_column_c_guid = style_column_c->get_guid( ).
|
|
|
|
|
|
DO 20 TIMES.
|
|
row = sy-index.
|
|
CLEAR fieldval.
|
|
DO sy-index TIMES.
|
|
CONCATENATE fieldval 'X' INTO fieldval.
|
|
ENDDO.
|
|
lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ).
|
|
lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ).
|
|
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 ).
|
|
|
|
" Add sheet
|
|
lo_worksheet = lo_excel->add_new_worksheet( ).
|
|
lo_worksheet->set_title( ip_title = 'Bold Font' ).
|
|
|
|
style_column_a = lo_excel->add_new_style( ).
|
|
style_column_a->font->size = 32. " quite large
|
|
style_column_a->font->bold = abap_true.
|
|
style_column_a_guid = style_column_a->get_guid( ).
|
|
|
|
style_column_b = lo_excel->add_new_style( ).
|
|
style_column_b->font->bold = abap_true.
|
|
style_column_b_guid = style_column_b->get_guid( ).
|
|
|
|
style_column_c = lo_excel->add_new_style( ).
|
|
style_column_c->font->size = 16. " not so large
|
|
style_column_c->font->bold = abap_true.
|
|
style_column_c_guid = style_column_c->get_guid( ).
|
|
|
|
DO 20 TIMES.
|
|
row = sy-index.
|
|
CLEAR fieldval.
|
|
DO sy-index TIMES.
|
|
CONCATENATE fieldval 'X' INTO fieldval.
|
|
ENDDO.
|
|
lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ).
|
|
lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ).
|
|
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 ).
|
|
|
|
" Add sheet
|
|
lo_worksheet = lo_excel->add_new_worksheet( ).
|
|
lo_worksheet->set_title( ip_title = 'Italic Font' ).
|
|
|
|
style_column_a = lo_excel->add_new_style( ).
|
|
style_column_a->font->size = 32. " quite large
|
|
style_column_a->font->italic = abap_true.
|
|
style_column_a_guid = style_column_a->get_guid( ).
|
|
|
|
style_column_b = lo_excel->add_new_style( ).
|
|
style_column_b->font->italic = abap_true.
|
|
style_column_b_guid = style_column_b->get_guid( ).
|
|
|
|
style_column_c = lo_excel->add_new_style( ).
|
|
style_column_c->font->size = 16. " not so large
|
|
style_column_c->font->italic = abap_true.
|
|
style_column_c_guid = style_column_c->get_guid( ).
|
|
|
|
DO 20 TIMES.
|
|
row = sy-index.
|
|
CLEAR fieldval.
|
|
DO sy-index TIMES.
|
|
CONCATENATE fieldval 'X' INTO fieldval.
|
|
ENDDO.
|
|
lo_worksheet->set_cell( ip_column = 'A' ip_row = row ip_value = fieldval ip_style = style_column_a_guid ).
|
|
lo_worksheet->set_cell( ip_column = 'B' ip_row = row ip_value = fieldval ip_style = style_column_b_guid ).
|
|
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 ).
|
|
|
|
" Add sheet for merged cells
|
|
lo_worksheet = lo_excel->add_new_worksheet( ).
|
|
lo_worksheet->set_title( ip_title = 'Merged cells' ).
|
|
|
|
lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'This is a very long header text' ).
|
|
lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = 'Some data' ).
|
|
lo_worksheet->set_cell( ip_column = 'A' ip_row = 3 ip_value = 'Some more data' ).
|
|
|
|
lo_worksheet->set_merge(
|
|
EXPORTING
|
|
ip_column_start = 'A'
|
|
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_excel->set_active_sheet_index( i_active_worksheet = 1 ).
|
|
|
|
*** Create output
|
|
lcl_output=>output( lo_excel ).
|