abap2xlsx/ZA2X/PROG/ZDEMO_EXCEL34.slnk
Ivan fde89c9625 Several Fixes and Include Pull Request #350
Added the pull request #350 "Gradient Fill -> writer + demo programs 2 &
34" manually
Fixed ZEXCEL_DEMO report, bug after fix #345
Excel common has a bug, right now I used a quick and really dirty
solution
2015-01-09 18:07:01 -06:00

227 lines
11 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<PROG NAME="ZDEMO_EXCEL34" VARCL="X" SUBC="1" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" UCCHECK="X">
<textPool>
<language SPRAS="E">
<textElement ID="R" ENTRY="abap2xlsx Demo: Static Styles (Chess)" LENGTH="37 "/>
<textElement ID="S" KEY="P_PATH" ENTRY="D ." LENGTH="9 "/>
</language>
</textPool>
<source>*&amp;---------------------------------------------------------------------*
*&amp; Report ZDEMO_EXCEL2
*&amp; Test Styles for ABAP2XLSX
*&amp;---------------------------------------------------------------------*
*&amp;
*&amp;
*&amp;---------------------------------------------------------------------*
REPORT zdemo_excel34.
CONSTANTS: width TYPE f VALUE &apos;10.14&apos;.
CONSTANTS: height TYPE f VALUE &apos;57.75&apos;.
DATA: current_row TYPE i,
col TYPE i,
col_alpha TYPE zexcel_cell_column_alpha,
row TYPE i,
row_board TYPE i,
colorflag TYPE i,
color TYPE zexcel_style_color_argb,
column_dimension TYPE REF TO zcl_excel_worksheet_columndime,
row_dimension TYPE REF TO zcl_excel_worksheet_rowdimensi,
writing1 TYPE string,
writing2 TYPE string.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet.
CONSTANTS: gc_save_file_name TYPE string VALUE &apos;34_Static Styles_Chess.xlsx&apos;.
INCLUDE zdemo_excel_outputopt_incl.
START-OF-SELECTION.
&quot; Creates active sheet
CREATE OBJECT lo_excel.
&quot; Get active sheet
lo_worksheet = lo_excel-&gt;get_active_worksheet( ).
lo_worksheet-&gt;set_title( ip_title = &apos;Spassky_vs_Bronstein&apos; ).
* Header
current_row = 1.
ADD 1 TO current_row.
lo_worksheet-&gt;set_cell( ip_row = current_row ip_column = &apos;B&apos; ip_value = &apos;White&apos; ).
lo_worksheet-&gt;set_cell( ip_row = current_row ip_column = &apos;C&apos; ip_value = &apos;Spassky, Boris V -- wins in turn 23&apos; ).
ADD 1 TO current_row.
lo_worksheet-&gt;set_cell( ip_row = current_row ip_column = &apos;B&apos; ip_value = &apos;Black&apos; ).
lo_worksheet-&gt;set_cell( ip_row = current_row ip_column = &apos;C&apos; ip_value = &apos;Bronstein, David I&apos; ).
ADD 1 TO current_row.
* Set size of column + Writing above chessboard
DO 8 TIMES.
writing1 = zcl_excel_common=&gt;convert_column2alpha( sy-index ).
writing2 = sy-index .
row = current_row + sy-index.
col = sy-index + 1.
col_alpha = zcl_excel_common=&gt;convert_column2alpha( col ).
* Set size of column
column_dimension = lo_worksheet-&gt;get_column_dimension( col_alpha ).
column_dimension-&gt;set_width( width ).
* Set size of row
row_dimension = lo_worksheet-&gt;get_row_dimension( row ).
row_dimension-&gt;set_row_height( height ).
* Set writing on chessboard
lo_worksheet-&gt;set_cell( ip_row = row
ip_column = &apos;A&apos;
ip_value = writing2 ).
lo_worksheet-&gt;change_cell_style( ip_column = &apos;A&apos;
ip_row = row
ip_alignment_vertical = zcl_excel_style_alignment=&gt;c_vertical_center ).
lo_worksheet-&gt;set_cell( ip_row = row
ip_column = &apos;J&apos;
ip_value = writing2 ).
lo_worksheet-&gt;change_cell_style( ip_column = &apos;J&apos;
ip_row = row
ip_alignment_vertical = zcl_excel_style_alignment=&gt;c_vertical_center ).
row = current_row + 9.
lo_worksheet-&gt;set_cell( ip_row = current_row
ip_column = col_alpha
ip_value = writing1 ).
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = current_row
ip_alignment_horizontal = zcl_excel_style_alignment=&gt;c_horizontal_center ).
lo_worksheet-&gt;set_cell( ip_row = row
ip_column = col_alpha
ip_value = writing1 ).
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_alignment_horizontal = zcl_excel_style_alignment=&gt;c_horizontal_center ).
ENDDO.
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;A&apos; ).
column_dimension-&gt;set_auto_size( abap_true ).
column_dimension = lo_worksheet-&gt;get_column_dimension( &apos;J&apos; ).
column_dimension-&gt;set_auto_size( abap_true ).
* Set win-position
CONSTANTS: c_pawn TYPE string VALUE &apos;Pawn&apos;.
CONSTANTS: c_rook TYPE string VALUE &apos;Rook&apos;.
CONSTANTS: c_knight TYPE string VALUE &apos;Knight&apos;.
CONSTANTS: c_bishop TYPE string VALUE &apos;Bishop&apos;.
CONSTANTS: c_queen TYPE string VALUE &apos;Queen&apos;.
CONSTANTS: c_king TYPE string VALUE &apos;King&apos;.
row = current_row + 1.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;B&apos; ip_value = c_rook ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;F&apos; ip_value = c_rook ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;G&apos; ip_value = c_knight ).
row = current_row + 2.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;B&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;C&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;D&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;F&apos; ip_value = c_queen ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;H&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;I&apos; ip_value = c_king ).
row = current_row + 3.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;I&apos; ip_value = c_pawn ).
row = current_row + 4.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;D&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;F&apos; ip_value = c_knight ).
row = current_row + 5.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;E&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;F&apos; ip_value = c_queen ).
row = current_row + 6.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;C&apos; ip_value = c_bishop ).
row = current_row + 7.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;B&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;C&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;H&apos; ip_value = c_pawn ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;I&apos; ip_value = c_pawn ).
row = current_row + 8.
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;G&apos; ip_value = c_rook ).
lo_worksheet-&gt;set_cell( ip_row = row ip_column = &apos;H&apos; ip_value = c_king ).
* Set Chessboard
DO 8 TIMES.
IF sy-index &lt;= 3. &quot; Black
color = zcl_excel_style_color=&gt;c_black.
ELSE.
color = zcl_excel_style_color=&gt;c_white.
ENDIF.
row_board = sy-index.
row = current_row + sy-index.
DO 8 TIMES.
col = sy-index + 1.
col_alpha = zcl_excel_common=&gt;convert_column2alpha( col ).
TRY.
* Borders around outer limits
IF row_board = 1.
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_borders_top_style = zcl_excel_style_border=&gt;c_border_thick
ip_borders_top_color_rgb = zcl_excel_style_color=&gt;c_black ).
ENDIF.
IF row_board = 8.
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_borders_down_style = zcl_excel_style_border=&gt;c_border_thick
ip_borders_down_color_rgb = zcl_excel_style_color=&gt;c_black ).
ENDIF.
IF col = 2.
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_borders_left_style = zcl_excel_style_border=&gt;c_border_thick
ip_borders_left_color_rgb = zcl_excel_style_color=&gt;c_black ).
ENDIF.
IF col = 9.
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_borders_right_style = zcl_excel_style_border=&gt;c_border_thick
ip_borders_right_color_rgb = zcl_excel_style_color=&gt;c_black ).
ENDIF.
* Style for writing
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_font_color_rgb = color
ip_font_bold = &apos;X&apos;
ip_font_size = 16
ip_alignment_horizontal = zcl_excel_style_alignment=&gt;c_horizontal_center
ip_alignment_vertical = zcl_excel_style_alignment=&gt;c_vertical_center
ip_fill_filltype = zcl_excel_style_fill=&gt;c_fill_solid ).
* Color of field
colorflag = ( row + col ) MOD 2.
IF colorflag = 0.
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_fill_fgcolor_rgb = &apos;FFB5866A&apos;
ip_fill_filltype = zcl_excel_style_fill=&gt;c_fill_gradient_diagonal135 ).
ELSE.
lo_worksheet-&gt;change_cell_style( ip_column = col_alpha
ip_row = row
ip_fill_fgcolor_rgb = &apos;FFF5DEBF&apos;
ip_fill_filltype = zcl_excel_style_fill=&gt;c_fill_gradient_diagonal45 ).
ENDIF.
CATCH zcx_excel .
ENDTRY.
ENDDO.
ENDDO.
*** Create output
lcl_output=&gt;output( lo_excel ).</source>
</PROG>