Live Razor Page Samples

3D Cylinder Chart

This sample shows how to create a new workbook, add some values, add a cylinder chart, change 3D view settings, and stream it to Microsoft Excel.
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Website.Pages.Support.Samples.RazorPages.Charting
    public partial class ThreeDCylinderChartModel : PageModel
        public FileResult OnGet()
            // Create a new workbook.
            SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook();
            SpreadsheetGear.IWorksheet worksheet = workbook.Worksheets["Sheet1"];
            SpreadsheetGear.IWorksheetWindowInfo windowInfo = worksheet.WindowInfo;

            // Load some sample data.
            SpreadsheetGear.IRange dataRange = worksheet.Cells["A2:D5"];
            dataRange.Formula = "=INT(RAND() * 10 + 5)";

            // Add a chart to the worksheet's shape collection.
            // NOTE: Calculate the coordinates of the chart by converting row
            //       and column coordinates to points.  Use fractional row 
            //       and colum values to get coordinates anywhere in between 
            //       row and column boundaries.
            double left = windowInfo.ColumnToPoints(4.0);
            double top = windowInfo.RowToPoints(1.0);
            double right = windowInfo.ColumnToPoints(11.0);
            double bottom = windowInfo.RowToPoints(16.0);
            SpreadsheetGear.Charts.IChart chart =
                worksheet.Shapes.AddChart(left, top, right - left, bottom - top).Chart;

            // Set the chart's source data range, plotting series in columns.
            chart.SetSourceData(dataRange, SpreadsheetGear.Charts.RowCol.Columns);

            // Set the chart type.
            chart.ChartType = SpreadsheetGear.Charts.ChartType.CylinderColStacked;

            // Change 3D view properties.
            chart.DepthPercent = 200;
            chart.Elevation = 0;
            chart.Rotation = 30;
            chart.Perspective = 120;

            // Save workbook to stream using the Open XML (*.xlsx) file format compatible with Excel 2007 and later.
            System.IO.Stream workbookStream = workbook.SaveToStream(SpreadsheetGear.FileFormat.OpenXMLWorkbook);

            // Reset position to beginning of stream.
            workbookStream.Seek(0, System.IO.SeekOrigin.Begin);

            // Stream the Excel workbook to the client.
            var contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            var fileName = "SpreadsheetGear-Sample-3DCylinderChart.xlsx";
            return File(workbookStream, contentType, fileName);