Manipulate Position Size and Designer Chart

Chart Position and Size

Sometimes, you want to change the position or size of the new or existing chart inside the worksheet. Aspose.Cells provides the Chart.ChartObject property to achieve this. You can use its sub-properties to re-size the chart with new height and width or re-position it with new X and Y coordinates.

Controlling Chart Position and Size

To change the chart’s position (X, Y coordinates) or size (height, width), use these properties:

  1. Chart.ChartObject.X
  2. Chart.ChartObject.Y
  3. Chart.ChartObject.Height
  4. Chart.ChartObject.Width

The following example explains the usage of the above APIs, it loads the existing workbook which contains a chart in its first worksheet. Then it re-sizes and re-positions the chart using Aspose.Cells.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Workbook workbook = new Workbook(dataDir + "chart.xls");
Worksheet worksheet = workbook.Worksheets[1];
// Load the chart from source worksheet
Chart chart = worksheet.Charts[0];
// Resize the chart
chart.ChartObject.Width = 400;
chart.ChartObject.Height = 300;
// Reposition the chart
chart.ChartObject.X = 250;
chart.ChartObject.Y = 150;
// Output the file
workbook.Save(dataDir + "chart.out.xls");

Manipulating Designer Charts

There are times when you need to manipulate or modify charts in designer template files. Aspose.Cells fully supports manipulating designer chart contents and elements. The data, chart contents, background image, and formattings can be preserved with accuracy.

Manipulating Designer Charts in Template Files

To manipulate designer charts in template files, use the chart related API. For example, you may use the Worksheet.Charts property to get the existing charts collection in the template file.

Creating a Chart

The following example shows how to create a pyramid chart. We will manipulate this chart later on.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create directory if it is not already present.
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
System.IO.Directory.CreateDirectory(dataDir);
// Instantiating a Workbook object
Workbook workbook = new Workbook();
// Adding a new worksheet to the Excel object
int sheetIndex = workbook.Worksheets.Add();
// Obtaining the reference of the newly added worksheet by passing its sheet index
Worksheet worksheet = workbook.Worksheets[sheetIndex];
// Adding sample values to cells
worksheet.Cells["A1"].PutValue(50);
worksheet.Cells["A2"].PutValue(100);
worksheet.Cells["A3"].PutValue(150);
worksheet.Cells["B1"].PutValue(4);
worksheet.Cells["B2"].PutValue(20);
worksheet.Cells["B3"].PutValue(50);
// Adding a chart to the worksheet
int chartIndex = worksheet.Charts.Add(Aspose.Cells.Charts.ChartType.Pyramid, 5, 0, 15, 5);
// Accessing the instance of the newly added chart
Aspose.Cells.Charts.Chart chart = worksheet.Charts[chartIndex];
// Adding SeriesCollection (chart data source) to the chart ranging from "A1" cell to "B3"
chart.NSeries.Add("A1:B3", true);
// Saving the Excel file
workbook.Save(dataDir + "book1.out.xls");

Manipulating the Chart

The following example shows how to manipulate the existing chart. In this example, we modify the chart created above. In the generated output, note that the date label of one data point has been set to ‘United Kingdom, 30K’.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Open the existing file.
Workbook workbook = new Workbook(dataDir + "piechart.xls");
// Get the designer chart in the second sheet.
Worksheet sheet = workbook.Worksheets[1];
Aspose.Cells.Charts.Chart chart = sheet.Charts[0];
// Get the data labels in the data series of the third data point.
Aspose.Cells.Charts.DataLabels datalabels = chart.NSeries[0].Points[2].DataLabels;
// Change the text of the label.
datalabels.Text = "Unided Kingdom, 400K ";
// Save the excel file.
workbook.Save(dataDir + "output.xls");

Manipulating a Line Chart in the Designer Template

In this example, we will manipulate a line chart. We will add some data series to the existing chart and change their line colors.

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Open the existing file.
Workbook workbook = new Workbook(dataDir + "Book1.xlsx");
// Get the designer chart in the first worksheet.
Aspose.Cells.Charts.Chart chart = workbook.Worksheets[0].Charts[0];
// Add the third data series to it.
chart.NSeries.Add("{60, 80, 10}", true);
// Add another data series (fourth) to it.
chart.NSeries.Add("{0.3, 0.7, 1.2}", true);
// Plot the fourth data series on the second axis.
chart.NSeries[3].PlotOnSecondAxis = true;
// Change the Border color of the second data series.
chart.NSeries[1].Border.Color = Color.Green;
// Change the Border color of the third data series.
chart.NSeries[2].Border.Color = Color.Red;
// Make the second value axis visible.
chart.SecondValueAxis.IsVisible = true;
// Save the excel file.
workbook.Save(dataDir + "output.xls");