创建带引导线的饼图

为了演示使用 Aspose.Cells for .NET API 创建带引导线的饼图,我们首先将创建一个新的 Workbook 并输入一些数据作为系列数据源。一旦数据就位,我们将向图表集合中添加一个 Chart 类型的 ChartType.Pie 并设置其不同方面以获得所需的图表视图。

// 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 an instance of Workbook in XLSX format
Workbook workbook = new Workbook(FileFormatType.Xlsx);
// Access the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Add two columns of data
worksheet.Cells["A1"].PutValue("Retail");
worksheet.Cells["A2"].PutValue("Services");
worksheet.Cells["A3"].PutValue("Info & Communication");
worksheet.Cells["A4"].PutValue("Transport Equip");
worksheet.Cells["A5"].PutValue("Construction");
worksheet.Cells["A6"].PutValue("Other Products");
worksheet.Cells["A7"].PutValue("Wholesale");
worksheet.Cells["A8"].PutValue("Land Transport");
worksheet.Cells["A9"].PutValue("Air Transport");
worksheet.Cells["A10"].PutValue("Electric Appliances");
worksheet.Cells["A11"].PutValue("Securities");
worksheet.Cells["A12"].PutValue("Textiles & Apparel");
worksheet.Cells["A13"].PutValue("Machinery");
worksheet.Cells["A14"].PutValue("Metal Products");
worksheet.Cells["A15"].PutValue("Cash");
worksheet.Cells["A16"].PutValue("Banks");
worksheet.Cells["B1"].PutValue(10.4);
worksheet.Cells["B2"].PutValue(5.2);
worksheet.Cells["B3"].PutValue(6.4);
worksheet.Cells["B4"].PutValue(10.4);
worksheet.Cells["B5"].PutValue(7.9);
worksheet.Cells["B6"].PutValue(4.1);
worksheet.Cells["B7"].PutValue(3.5);
worksheet.Cells["B8"].PutValue(5.7);
worksheet.Cells["B9"].PutValue(3);
worksheet.Cells["B10"].PutValue(14.7);
worksheet.Cells["B11"].PutValue(3.6);
worksheet.Cells["B12"].PutValue(2.8);
worksheet.Cells["B13"].PutValue(7.8);
worksheet.Cells["B14"].PutValue(2.4);
worksheet.Cells["B15"].PutValue(1.8);
worksheet.Cells["B16"].PutValue(10.1);
// Create a pie chart and add it to the collection of charts
int id = worksheet.Charts.Add(ChartType.Pie, 3, 3, 23, 13);
// Access newly created Chart instance
Chart chart = worksheet.Charts[id];
// Set series data range
chart.NSeries.Add("B1:B16", true);
// Set category data range
chart.NSeries.CategoryData = "A1:A16";
// Turn off legend
chart.ShowLegend = false;
// Access data labels
DataLabels dataLabels = chart.NSeries[0].DataLabels;
// Turn on category names
dataLabels.ShowCategoryName = true;
// Turn on percentage format
dataLabels.ShowPercentage = true;
// Set position
dataLabels.Position = LabelPositionType.OutsideEnd;
// Set separator
dataLabels.SeparatorType = DataLabelsSeparatorType.Comma;

到目前为止,我们已经创建了饼图并设置了其不同的方面。现在我们将为图表打开引导线。请注意,为了显示引导线,我们必须稍微移动数据标签的位置。

以下代码片段打开了引导线,刷新了图表,然后计算数据标签的位置,以相应地移动它们。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Create an instance of Workbook in XLSX format
Workbook workbook = new Workbook(FileFormatType.Xlsx);
// Access the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Add two columns of data
worksheet.Cells["A1"].PutValue("Retail");
worksheet.Cells["A2"].PutValue("Services");
worksheet.Cells["A3"].PutValue("Info & Communication");
worksheet.Cells["A4"].PutValue("Transport Equip");
worksheet.Cells["A5"].PutValue("Construction");
worksheet.Cells["A6"].PutValue("Other Products");
worksheet.Cells["A7"].PutValue("Wholesale");
worksheet.Cells["A8"].PutValue("Land Transport");
worksheet.Cells["A9"].PutValue("Air Transport");
worksheet.Cells["A10"].PutValue("Electric Appliances");
worksheet.Cells["A11"].PutValue("Securities");
worksheet.Cells["A12"].PutValue("Textiles & Apparel");
worksheet.Cells["A13"].PutValue("Machinery");
worksheet.Cells["A14"].PutValue("Metal Products");
worksheet.Cells["A15"].PutValue("Cash");
worksheet.Cells["A16"].PutValue("Banks");
worksheet.Cells["B1"].PutValue(10.4);
worksheet.Cells["B2"].PutValue(5.2);
worksheet.Cells["B3"].PutValue(6.4);
worksheet.Cells["B4"].PutValue(10.4);
worksheet.Cells["B5"].PutValue(7.9);
worksheet.Cells["B6"].PutValue(4.1);
worksheet.Cells["B7"].PutValue(3.5);
worksheet.Cells["B8"].PutValue(5.7);
worksheet.Cells["B9"].PutValue(3);
worksheet.Cells["B10"].PutValue(14.7);
worksheet.Cells["B11"].PutValue(3.6);
worksheet.Cells["B12"].PutValue(2.8);
worksheet.Cells["B13"].PutValue(7.8);
worksheet.Cells["B14"].PutValue(2.4);
worksheet.Cells["B15"].PutValue(1.8);
worksheet.Cells["B16"].PutValue(10.1);
// Create a pie chart and add it to the collection of charts
int id = worksheet.Charts.Add(ChartType.Pie, 3, 3, 23, 13);
// Access newly created Chart instance
Chart chart = worksheet.Charts[id];
// Set series data range
chart.NSeries.Add("B1:B16", true);
// Set category data range
chart.NSeries.CategoryData = "A1:A16";
// Turn off legend
chart.ShowLegend = false;
// Access data labels
DataLabels dataLabels = chart.NSeries[0].DataLabels;
// Turn on category names
dataLabels.ShowCategoryName = true;
// Turn on percentage format
dataLabels.ShowPercentage = true;
// Set position
dataLabels.Position = LabelPositionType.OutsideEnd;
// Set separator
dataLabels.SeparatorType = DataLabelsSeparatorType.Comma;
// Turn on leader lines
chart.NSeries[0].HasLeaderLines = true;
// Calculete chart
chart.Calculate();
// You need to move DataLabels a little leftward or rightward depending on their position to show leader lines
int DELTA = 100;
for (int i = 0; i < chart.NSeries[0].Points.Count; i++)
{
int X = chart.NSeries[0].Points[i].DataLabels.X;
// If it is greater than 2000, then move the X position a little right otherwise move the X position a little left
if (X > 2000)
chart.NSeries[0].Points[i].DataLabels.X = X + DELTA;
else
chart.NSeries[0].Points[i].DataLabels.X = X - DELTA;
}

最后,以下代码将图表保存为图像格式,将工作簿保存为XLSX格式。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Create an instance of Workbook in XLSX format
Workbook workbook = new Workbook(FileFormatType.Xlsx);
// Access the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Add two columns of data
worksheet.Cells["A1"].PutValue("Retail");
worksheet.Cells["A2"].PutValue("Services");
worksheet.Cells["A3"].PutValue("Info & Communication");
worksheet.Cells["A4"].PutValue("Transport Equip");
worksheet.Cells["A5"].PutValue("Construction");
worksheet.Cells["A6"].PutValue("Other Products");
worksheet.Cells["A7"].PutValue("Wholesale");
worksheet.Cells["A8"].PutValue("Land Transport");
worksheet.Cells["A9"].PutValue("Air Transport");
worksheet.Cells["A10"].PutValue("Electric Appliances");
worksheet.Cells["A11"].PutValue("Securities");
worksheet.Cells["A12"].PutValue("Textiles & Apparel");
worksheet.Cells["A13"].PutValue("Machinery");
worksheet.Cells["A14"].PutValue("Metal Products");
worksheet.Cells["A15"].PutValue("Cash");
worksheet.Cells["A16"].PutValue("Banks");
worksheet.Cells["B1"].PutValue(10.4);
worksheet.Cells["B2"].PutValue(5.2);
worksheet.Cells["B3"].PutValue(6.4);
worksheet.Cells["B4"].PutValue(10.4);
worksheet.Cells["B5"].PutValue(7.9);
worksheet.Cells["B6"].PutValue(4.1);
worksheet.Cells["B7"].PutValue(3.5);
worksheet.Cells["B8"].PutValue(5.7);
worksheet.Cells["B9"].PutValue(3);
worksheet.Cells["B10"].PutValue(14.7);
worksheet.Cells["B11"].PutValue(3.6);
worksheet.Cells["B12"].PutValue(2.8);
worksheet.Cells["B13"].PutValue(7.8);
worksheet.Cells["B14"].PutValue(2.4);
worksheet.Cells["B15"].PutValue(1.8);
worksheet.Cells["B16"].PutValue(10.1);
// Create a pie chart and add it to the collection of charts
int id = worksheet.Charts.Add(ChartType.Pie, 3, 3, 23, 13);
// Access newly created Chart instance
Chart chart = worksheet.Charts[id];
// Set series data range
chart.NSeries.Add("B1:B16", true);
// Set category data range
chart.NSeries.CategoryData = "A1:A16";
// Turn off legend
chart.ShowLegend = false;
// Access data labels
DataLabels dataLabels = chart.NSeries[0].DataLabels;
// Turn on category names
dataLabels.ShowCategoryName = true;
// Turn on percentage format
dataLabels.ShowPercentage = true;
// Set position
dataLabels.Position = LabelPositionType.OutsideEnd;
// Set separator
dataLabels.SeparatorType = DataLabelsSeparatorType.Comma;
// In order to save the chart image, create an instance of ImageOrPrintOptions
ImageOrPrintOptions anOption = new ImageOrPrintOptions();
// Set image format
anOption.ImageType = Drawing.ImageType.Png;
// Set resolution
anOption.HorizontalResolution = 200;
anOption.VerticalResolution = 200;
// Render chart to image
chart.ToImage(dataDir + "output_out.png", anOption);
// Save the workbook to see chart inside the Excel
workbook.Save(dataDir + "output_out.xlsx");
结果饼图
todo:image_alt_text

高级主题

相关文章