abap2xlsx/ZA2X/PROG/ZDEMO_EXCEL31.slnk
oliver-huetkoeper a74220e25f Add sheet for merged cells
I have added a new sheet to demonstrate that merged cells are ignored when using auto-size (MS Excel like behaviour).
2014-11-14 09:35:57 +01:00

167 lines
7.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<PROG NAME="ZDEMO_EXCEL31" VARCL="X" SUBC="1" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" UCCHECK="X">
<textPool>
<language SPRAS="E">
<textElement ID="R" ENTRY="abap2xlsx Demo: Autosize Column with different Font sizes" LENGTH="58 "/>
<textElement ID="S" KEY="P_PATH" ENTRY="D ." LENGTH="9 "/>
</language>
</textPool>
<source>*&amp;---------------------------------------------------------------------*
*&amp; Report ZDEMO_EXCEL1
*&amp;
*&amp;---------------------------------------------------------------------*
*&amp;
*&amp;
*&amp;---------------------------------------------------------------------*
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 &apos;31_AutosizeWithDifferentFontSizes.xlsx&apos;.
INCLUDE zdemo_excel_outputopt_incl.
START-OF-SELECTION.
CREATE OBJECT lo_excel.
&quot; Use active sheet
lo_worksheet = lo_excel-&gt;get_active_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Regular Font&apos; ).
style_column_a = lo_excel-&gt;add_new_style( ).
style_column_a-&gt;font-&gt;size = 32. &quot; quite large
style_column_a_guid = style_column_a-&gt;get_guid( ).
style_column_c = lo_excel-&gt;add_new_style( ).
style_column_c-&gt;font-&gt;size = 16. &quot; not so large
style_column_c_guid = style_column_c-&gt;get_guid( ).
DO 20 TIMES.
row = sy-index.
CLEAR fieldval.
DO sy-index TIMES.
CONCATENATE fieldval &apos;X&apos; INTO fieldval.
ENDDO.
lo_worksheet-&gt;set_cell( ip_column = &apos;A&apos; ip_row = row ip_value = fieldval ip_style = style_column_a_guid ).
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = row ip_value = fieldval ).
lo_worksheet-&gt;set_cell( ip_column = &apos;C&apos; ip_row = row ip_value = fieldval ip_style = style_column_c_guid ).
ENDDO.
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;A&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;B&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;C&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
&quot; Add sheet
lo_worksheet = lo_excel-&gt;add_new_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Bold Font&apos; ).
style_column_a = lo_excel-&gt;add_new_style( ).
style_column_a-&gt;font-&gt;size = 32. &quot; quite large
style_column_a-&gt;font-&gt;bold = abap_true.
style_column_a_guid = style_column_a-&gt;get_guid( ).
style_column_b = lo_excel-&gt;add_new_style( ).
style_column_b-&gt;font-&gt;bold = abap_true.
style_column_b_guid = style_column_b-&gt;get_guid( ).
style_column_c = lo_excel-&gt;add_new_style( ).
style_column_c-&gt;font-&gt;size = 16. &quot; not so large
style_column_c-&gt;font-&gt;bold = abap_true.
style_column_c_guid = style_column_c-&gt;get_guid( ).
DO 20 TIMES.
row = sy-index.
CLEAR fieldval.
DO sy-index TIMES.
CONCATENATE fieldval &apos;X&apos; INTO fieldval.
ENDDO.
lo_worksheet-&gt;set_cell( ip_column = &apos;A&apos; ip_row = row ip_value = fieldval ip_style = style_column_a_guid ).
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = row ip_value = fieldval ip_style = style_column_b_guid ).
lo_worksheet-&gt;set_cell( ip_column = &apos;C&apos; ip_row = row ip_value = fieldval ip_style = style_column_c_guid ).
ENDDO.
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;A&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;B&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;C&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
&quot; Add sheet
lo_worksheet = lo_excel-&gt;add_new_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Italic Font&apos; ).
style_column_a = lo_excel-&gt;add_new_style( ).
style_column_a-&gt;font-&gt;size = 32. &quot; quite large
style_column_a-&gt;font-&gt;italic = abap_true.
style_column_a_guid = style_column_a-&gt;get_guid( ).
style_column_b = lo_excel-&gt;add_new_style( ).
style_column_b-&gt;font-&gt;italic = abap_true.
style_column_b_guid = style_column_b-&gt;get_guid( ).
style_column_c = lo_excel-&gt;add_new_style( ).
style_column_c-&gt;font-&gt;size = 16. &quot; not so large
style_column_c-&gt;font-&gt;italic = abap_true.
style_column_c_guid = style_column_c-&gt;get_guid( ).
DO 20 TIMES.
row = sy-index.
CLEAR fieldval.
DO sy-index TIMES.
CONCATENATE fieldval &apos;X&apos; INTO fieldval.
ENDDO.
lo_worksheet-&gt;set_cell( ip_column = &apos;A&apos; ip_row = row ip_value = fieldval ip_style = style_column_a_guid ).
lo_worksheet-&gt;set_cell( ip_column = &apos;B&apos; ip_row = row ip_value = fieldval ip_style = style_column_b_guid ).
lo_worksheet-&gt;set_cell( ip_column = &apos;C&apos; ip_row = row ip_value = fieldval ip_style = style_column_c_guid ).
ENDDO.
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;A&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;B&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;C&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
&quot; Add sheet for merged cells
lo_worksheet = lo_excel-&gt;add_new_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Merged cells&apos; ).
lo_worksheet-&gt;set_cell( ip_column = &apos;A&apos; ip_row = 1 ip_value = &apos;This is a very long header text&apos; ).
lo_worksheet-&gt;set_cell( ip_column = &apos;A&apos; ip_row = 2 ip_value = &apos;Some data&apos; ).
lo_worksheet-&gt;set_cell( ip_column = &apos;A&apos; ip_row = 3 ip_value = &apos;Some more data&apos; ).
lo_worksheet-&gt;set_merge(
EXPORTING
ip_column_start = &apos;A&apos;
ip_column_end = &apos;C&apos;
ip_row = 1 ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;A&apos; ).
column_dimension-&gt;set_auto_size( ip_auto_size = abap_true ).
lo_excel-&gt;set_active_sheet_index( i_active_worksheet = 1 ).
*** Create output
lcl_output=&gt;output( lo_excel ).</source>
</PROG>