abap2xlsx/ZA2X/PROG/ZDEMO_EXCEL39.slnk
Alessandro Iannacci f73376b3e0 #236: Chart creation in a worksheet from ABAP
Added:
- Labels management
- Serie name

TODO: Multiple series and bar charts

git-svn-id: https://subversion.assembla.com/svn/abap2xlsx/trunk@383 b7d68dce-7c3c-4a99-8ce0-9ea847f5d049
2012-12-04 15:15:40 +00:00

100 lines
3.6 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<PROG NAME="ZDEMO_EXCEL39" VARCL="X" SUBC="1" RSTAT="T" RMAND="001" RLOAD="E" FIXPT="X" UCCHECK="X">
<textPool>
<language SPRAS="E">
<textElement ID="R" ENTRY="abap2xlsx Demo: Drawings" LENGTH="25 "/>
<textElement ID="S" KEY="POBJTYPE" ENTRY="D ." LENGTH="9 "/>
<textElement ID="S" KEY="P_CLASS" ENTRY="D ." LENGTH="9 "/>
<textElement ID="S" KEY="P_OBJID" ENTRY="D ." LENGTH="9 "/>
<textElement ID="S" KEY="P_PATH" ENTRY="D ." LENGTH="9 "/>
</language>
</textPool>
<source>*&amp;---------------------------------------------------------------------*
*&amp; Report ZDEMO_EXCEL16
*&amp;
*&amp;---------------------------------------------------------------------*
*&amp;
*&amp;
*&amp;---------------------------------------------------------------------*
REPORT zdemo_excel39.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_drawing TYPE REF TO zcl_excel_drawing.
DATA lv_value TYPE i.
DATA: ls_io TYPE skwf_io.
DATA: ls_upper TYPE zexcel_drawing_location,
ls_lower TYPE zexcel_drawing_location.
DATA lo_bar TYPE REF TO zcl_excel_graph_bars.
DATA lo_pie TYPE REF TO zcl_excel_graph_pie.
DATA lv_media TYPE xstring.
CONSTANTS: gc_save_file_name TYPE string VALUE &apos;39_Charts.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( &apos;Sheet1&apos; ).
&quot; Set labels for chart
lv_value = 1.
lo_worksheet-&gt;set_cell( ip_column = &apos;K&apos; ip_row = 1 ip_value = &apos;One&apos; ).
lv_value = 2.
lo_worksheet-&gt;set_cell( ip_column = &apos;K&apos; ip_row = 2 ip_value = &apos;Two&apos; ).
lv_value = 3.
lo_worksheet-&gt;set_cell( ip_column = &apos;K&apos; ip_row = 3 ip_value = &apos;Three&apos; ).
&quot; Set values for chart
lv_value = 1.
lo_worksheet-&gt;set_cell( ip_column = &apos;J&apos; ip_row = 1 ip_value = lv_value ).
lv_value = 2.
lo_worksheet-&gt;set_cell( ip_column = &apos;J&apos; ip_row = 2 ip_value = lv_value ).
lv_value = 3.
lo_worksheet-&gt;set_cell( ip_column = &apos;J&apos; ip_row = 3 ip_value = lv_value ).
&quot; Create a pie chart and assign value range
CREATE OBJECT lo_pie.
lo_pie-&gt;ref = &apos;Sheet1!$J$1:$J$3&apos;. &quot;VALUE RANGE FOR CHART
lo_pie-&gt;lbl = &apos;Sheet1!$K$1:$K$3&apos;. &quot;VALUE RANGE FOR CHART
lo_pie-&gt;sername = &apos;My serie&apos;. &quot;Serie name
&quot; Create global drawing, set type as pie chart, assign chart, set position and media type
lo_drawing = lo_worksheet-&gt;excel-&gt;add_new_drawing(
ip_type = zcl_excel_drawing=&gt;type_chart
ip_title = &apos;CHART TITLE&apos; ).
lo_drawing-&gt;graph = lo_pie.
lo_drawing-&gt;graph_type = zcl_excel_drawing=&gt;c_graph_pie.
&quot;Set chart position (anchor 2 cells)
ls_lower-row = 22.
ls_lower-col = 11.
lo_drawing-&gt;set_position2(
EXPORTING
ip_from = ls_upper
ip_to = ls_lower ).
lo_drawing-&gt;set_media(
EXPORTING
ip_media = lv_media &quot;used for template (binary content)
ip_media_type = &apos;xml&apos;
ip_width = 0 &quot;used only for image types, not for charts
ip_height = 0 ). &quot;used only for image types, not for charts
lo_worksheet-&gt;add_drawing( lo_drawing ).
*** Create output
lcl_output=&gt;output( lo_excel ).</source>
</PROG>