Enhance report ZDEMO_EXCEL31 to show better autosize function from issue:

#310 More sophisticated calculation of cell widths
This commit is contained in:
Gregor Wolf 2014-05-02 22:08:26 +02:00
parent 1409cf8741
commit 7dcee8edeb

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-2"?>
<PROG NAME="ZDEMO_EXCEL31" VARCL="X" SUBC="1" CNAM="BCUSER" CDAT="20110929" UNAM="K2_SCHMOECK" UDAT="20120324" VERN="000039" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" SDATE="20120324" STIME="112316" IDATE="20120324" ITIME="112316" UCCHECK="X">
<?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 "/>
@ -26,8 +26,11 @@ 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_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.
@ -35,17 +38,17 @@ INCLUDE zdemo_excel_outputopt_incl.
START-OF-SELECTION.
&quot; Creates active sheet
CREATE OBJECT lo_excel.
&quot; Use active sheet
lo_worksheet = lo_excel-&gt;get_active_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Sheet1&apos; ).
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-&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-&gt;font-&gt;size = 16. &quot; not so large
style_column_c_guid = style_column_c-&gt;get_guid( ).
@ -67,8 +70,79 @@ START-OF-SELECTION.
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 ).
lo_excel-&gt;set_active_sheet_index( i_active_worksheet = 1 ).
*** Create output
lcl_output=&gt;output( lo_excel ).</source>