Excel处理控件Aspose.Cells教程:使用C#在Excel中创建环形图
<p><img src="https://image.evget.com/attachment/keditor/image/20251209/093628_6.png"></p><p>可视化比例数据(例如市场份额、费用分布或调查结果)时,通常最好使用环形图。本文将介绍如何使用 C# 和<strong>Aspose.Cells for .NET</strong>在 Excel 中创建环形图。本指南提供了两个完整的、可直接运行的代码示例:一个基本的单系列环形图和一个带有自定义颜色和图例设置的多系列环形图,方便您立即将强大的可视化功能集成到任何 .NET 应用程序中。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Aspose.Cells官方试用版免费下载,请联系Aspose官方授权代理商慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。</em></strong></span></p>
<h2 id="csharp-excel-library">用于创建环形图的 C# Excel 库</h2>
<p><strong>Aspose.Cells for .NET</strong>是一个功能全面的 Excel 自动化库,使开发人员无需 Microsoft Office 即可创建、修改和渲染 Excel 文件。它包含丰富的图表 API,支持<strong>所有 Excel 原生图表类型</strong>,包括环形图。</p>
<p><strong>Aspose.Cells</strong>之所以成为图表生成的首选工具,其关键功能包括:</p>
<ul>
<li><strong>支持所有图表类型</strong>——从简单的柱形图到高级的瀑布图和环形图。</li>
<li><strong>精细化自定义</strong>- 控制系列类型、颜色、标记、数据标签、图例、坐标轴等。</li>
<li><strong>高性能</strong>——在服务器端环境中高效处理大型工作簿。</li>
<li><strong>跨平台兼容性</strong>– 可在 .NET Framework、.NET Core、.NET 5/6/7+ 和 .NET Standard 上运行。</li>
</ul>
<h3 id="getting-started">入门</h3>
<ol>
<li>
<p><strong>从慧都网</strong><strong>下载</strong>最新<strong>的 Aspose.Cells for .NET</strong> 二进制文件。</p>
</li>
<li>
<p><strong>安装</strong>NuGet 包:</p>
<pre class="prettyprint highlighter-hljs"><code>PM> Install-Package Aspose.Cells</code></pre>
</li>
<li>
<p><strong>Aspose.Cells</strong>在你的 C# 项目中<strong>添加</strong>对它的引用。</p>
</li>
</ol>
<p>现在你已经准备好通过编程方式创建环形图了。</p>
<h2 id="create-doughnut-chart-in-excel">使用 C# 在 Excel 中创建环形图</h2>
<h3 id="how-to-create-a-simple-singleseries-doughnut-chart">如何创建简单的单系列环形图</h3>
<p>以下示例演示了添加环形图所需的最少步骤,该环形图显示了四个产品类别的销售分布情况。</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>// 1. Create a new workbook and obtain the first worksheet.
var workbook = new Workbook();
var sheet = workbook.Worksheets;
// ------------------------------------------------------------
// 2. Populate worksheet with sample data.
// ------------------------------------------------------------
// A B
// 1 Category Sales
// 2 Electronics35000
// 3 Clothing 21000
// 4 Groceries 15000
// 5 Furniture 12000
// ------------------------------------------------------------
sheet.Cells["A1"].Value = "Category";
sheet.Cells["B1"].Value = "Sales";
string[] categories = { "Electronics", "Clothing", "Groceries", "Furniture" };
double[] sales = { 35000, 21000, 15000, 12000 };
for (int i = 0; i < categories.Length; i++)
{
sheet.Cells.Value = categories;
sheet.Cells.Value = sales;
}
// ------------------------------------------------------------
// 3. Add a Doughnut chart object.
// ------------------------------------------------------------
// Parameters: (ChartType, upper left row, upper left column, lower right row, lower right column)
int chartIndex = sheet.Charts.Add(ChartType.Doughnut, 5, 0, 20, 8);
Chart chart = sheet.Charts;
chart.Title.Text = "Sales Distribution by Category";
// ------------------------------------------------------------
// 4. Add the data series ¨C the range includes only the numeric values.
// ------------------------------------------------------------
// The first argument is the data range for the series.
// The second argument (true) indicates that the series will have a name.
int seriesIndex = chart.NSeries.Add("=Sheet1!$B$2:$B$5", true);
chart.NSeries.Name = "Sales";
// ------------------------------------------------------------
// 5. Bind category (X) labels.
// ------------------------------------------------------------
chart.NSeries.CategoryData = "=Sheet1!$A$2:$A$5";
// ------------------------------------------------------------
// 6. Optional customizations.
// ------------------------------------------------------------
// Show data labels (percentage) inside the doughnut.
chart.NSeries.DataLabels.Position = LabelPositionType.InsideBase;
chart.NSeries.DataLabels.ShowPercentage = true;
// Set the doughnut hole size (percentage of the chart area).
chart.NSeries.DoughnutHoleSize = 50; // 0 ¨C 100
// ------------------------------------------------------------
// 7. Save the workbook.
// ------------------------------------------------------------
string outputPath = "DoughnutChart_Simple.xlsx";
workbook.Save(outputPath);
Console.WriteLine($"Workbook saved to {outputPath}");</code></pre>
<p><strong>关键步骤说明</strong></p>
<table>
<thead>
<tr>
<th>步</th>
<th>目的</th>
</tr>
</thead>
<tbody>
<tr>
<td>2</td>
<td>请在工作表中填写类别名称和数值。</td>
</tr>
<tr>
<td>3</td>
<td>添加一个图表类型ChartType.Doughnut。</td>
</tr>
<tr>
<td>4</td>
<td>创建一个指向数值数据范围的序列。</td>
</tr>
<tr>
<td>5</td>
<td>将系列链接到类别(标签)范围。</td>
</tr>
<tr>
<td>6</td>
<td>启用显示百分比的数据标签并调整孔径。</td>
</tr>
<tr>
<td>7</td>
<td>将工作簿保存到 XLSX 文件。</td>
</tr>
</tbody>
</table>
<p>运行该程序会生成<em>DoughnutChart_Simple.xlsx,</em>其中包含一个类似于以下屏幕截图的单系列环形图(此纯文本文档中省略了屏幕截图)。</p>
<h3 id="how-to-create-a-multiseries-doughnut-chart-with-custom-colors">如何创建带有自定义颜色的多系列环形图</h3>
<p>环形图也可以包含多个系列。下面的示例创建了一个图表,显示了三个部门的季度费用分布情况。每个系列都应用了自定义颜色,以便更好地区分。</p>
<pre class="prettyprint lang-cs highlighter-hljs"><code>// 1. Initialize workbook and sheet.
var workbook = new Workbook();
var sheet = workbook.Worksheets;
// ------------------------------------------------------------
// 2. Write sample data.
// ------------------------------------------------------------
// A B C D
// 1 Category Q1 Q2 Q3
// 2 Marketing5000 7000 6000
// 3 R&D 8000 9000 8500
// 4 Operations 6500 6200 7100
// ------------------------------------------------------------
sheet.Cells["A1"].Value = "Category";
sheet.Cells["B1"].Value = "Q1";
sheet.Cells["C1"].Value = "Q2";
sheet.Cells["D1"].Value = "Q3";
string[] categories = { "Marketing", "R&D", "Operations" };
double[,] values = {
{ 5000, 7000, 6000 },
{ 8000, 9000, 8500 },
{ 6500, 6200, 7100 }
};
for (int r = 0; r < categories.Length; r++)
{
sheet.Cells.Value = categories;
for (int c = 0; c < 3; c++)
{
sheet.Cells.Value = values;
}
}
// 3. Add a multi?series Doughnut chart.
int chartIdx = sheet.Charts.Add(ChartType.Doughnut, 6, 0, 25, 10);
Chart chart = sheet.Charts;
chart.Title.Text = "Quarterly Expenses by Department";
chart.NSeries.CategoryData = "=Sheet1!$A$2:$A$4";
// 4. Add three series ¨C one for each quarter.
// Series 1 (Q1)
int s1 = chart.NSeries.Add("=Sheet1!$B$2:$B$4", true);
chart.NSeries.Name = "Q1";
chart.NSeries.DoughnutHoleSize = 60;
chart.NSeries.DataLabels.ShowPercentage = true;
chart.NSeries.Border.Color = Color.DarkBlue;
chart.NSeries.Area.ForegroundColor = Color.LightBlue;
// Series 2 (Q2)
int s2 = chart.NSeries.Add("=Sheet1!$C$2:$C$4", true);
chart.NSeries.Name = "Q2";
chart.NSeries.DoughnutHoleSize = 50;
chart.NSeries.DataLabels.ShowPercentage = true;
chart.NSeries.Border.Color = Color.DarkGreen;
chart.NSeries.Area.ForegroundColor = Color.LightGreen;
// Series 3 (Q3)
int s3 = chart.NSeries.Add("=Sheet1!$D$2:$D$4", true);
chart.NSeries.Name = "Q3";
chart.NSeries.DoughnutHoleSize = 40;
chart.NSeries.DataLabels.ShowPercentage = true;
chart.NSeries.Border.Color = Color.DarkRed;
chart.NSeries.Area.ForegroundColor = Color.LightCoral;
// 5. Adjust chart appearance.
chart.Legend.Position = LegendPositionType.Right;
chart.PlotArea.Area.Formatting = FormattingType.None; // Transparent plot area.
// 6. Save the workbook.
string output = "DoughnutChart_MultiSeries.xlsx";
workbook.Save(output);
Console.WriteLine($"Workbook with multi?series Doughnut chart saved to {output}");</code></pre>
<p><strong>这段代码演示了什么</strong></p>
<ul>
<li>在单个甜甜圈图中添加<strong>多个系列(每个季度为一个系列)。</strong></li>
<li>每个系列只设置一次<strong>类别数据</strong>,以便重复使用相同的标签。</li>
<li>为每个系列自定义<strong>边框</strong>和<strong>填充颜色</strong>,以提高可读性。</li>
<li>为每个数据序列启用<strong>百分比数据标签</strong>。</li>
<li>将图例放置在图表的右侧。</li>
</ul>
<p>运行该程序后,生成的<em>DoughnutChart_MultiSeries.xlsx</em>文件将包含一个由三个同心圆环组成的环形图,每个圆环代表一个季度的支出。</p>
<h2 id="conclusion">结论</h2>
<p><strong>使用Aspose.Cells for .NET</strong> ,在 Excel 中创建美观的环形图非常简单。该库流畅的 API 允许您填充数据、添加图表、自定义系列颜色、显示百分比,并将结果导出为 XLSX、PDF 或图像格式——所有操作均无需 Microsoft Office。通过将提供的代码片段集成到您的项目中,您可以快速可靠地交付专业且数据驱动的可视化效果。</p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong>Aspose.Cells官方试用版免费下载,请联系Aspose官方授权代理商慧都科技</strong></span></p>
<p style="text-align: center"><span style="color: rgba(230, 126, 35, 1)"><strong><em>加入Aspose技术交流QQ群(1041253375),与更多小伙伴一起探讨提升开发技能。</em></strong></span></p><br><br>
来源:https://www.cnblogs.com/software-Development/p/19325300
頁:
[1]