饼图和圆环图是两种类似的图表,用于显示数据的百分比。这两个图表在视觉上都非常简洁,可以即时了解部分与整体的关系。在本文中,您将学习如何使用 Spire.XLS for C++ 在 Excel 中以编程方式创建饼图或圆环图。
安装 Spire.XLS for C++
有两种方法可以将 Spire.XLS for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire.XLS for C++ 集成到 C++ 程序中
在 Excel 中创建饼图
饼图是一种分为几个扇区的圆形图。要在工作表中添加饼图,可以使用 Spire.XLS for C++ 提供的 Worksheet->GetCharts()->Add(ExcelChartType::Pie) 方法。以下是详细的步骤。
- 创建 Workbook 对象。
- 使用 Workbook->GetWorksheets()->Get() 方法获取指定的工作表。
- 使用 Worksheet->GetCharts()->Add(ExcelChartType::Pie) 方法将饼图添加到工作表中。
- 向指定的单元格中添加一些数据并设置单元格样式。
- 使用Chart->SetDataRange() 方法设置图表的数据范围。
- 设置图表的位置和标题。
- 在图表中获取指定的系列,并使用ChartSerie->SetCategoryLabels() 和 ChartSerie->SetValues() 方法为该系列设置类别标签和值。
- 显示数据点的数据标签。
- 使用 Workbook->SaveToFile() 方法保存结果文件。
- C++
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定输出文件路径
std::wstring outputFile = L"Output\\饼状图.xlsx";
//创建工作簿对象
Workbook* workbook = new Workbook();
//获取第一个工作表并设置工作表名称
Worksheet* sheet = workbook->GetWorksheets()->Get(0);
sheet->SetName(L"饼状图");
//在工作表中添加饼图
Chart* chart = nullptr;
chart = sheet->GetCharts()->Add(ExcelChartType::Pie);
//设置图表数据
sheet->GetRange(L"A1")->SetValue(L"年份");
sheet->GetRange(L"A2")->SetValue(L"2018");
sheet->GetRange(L"A3")->SetValue(L"2019");
sheet->GetRange(L"A4")->SetValue(L"2020");
sheet->GetRange(L"A5")->SetValue(L"2021");
sheet->GetRange(L"B1")->SetValue(L"销售额");
sheet->GetRange(L"B2")->SetNumberValue(114000);
sheet->GetRange(L"B3")->SetNumberValue(126000);
sheet->GetRange(L"B4")->SetNumberValue(107000);
sheet->GetRange(L"B5")->SetNumberValue(208500);
//设置单元格样式
sheet->GetRange(L"A1:B1")->SetRowHeight(15);
sheet->GetRange(L"A1:B1")->GetStyle()->SetColor(Spire::Common::Color::GetBlack());
sheet->GetRange(L"A1:B1")->GetStyle()->GetFont()->SetColor(Spire::Common::Color::GetWhite());
sheet->GetRange(L"A1:B1")->GetStyle()->SetVerticalAlignment(VerticalAlignType::Center);
sheet->GetRange(L"A1:B1")->GetStyle()->SetHorizontalAlignment(HorizontalAlignType::Center);
//设置数字格式
sheet->GetRange(L"B2:C5")->GetStyle()->SetNumberFormat(L"\"¥\"#,##0");
//设置图表的数据范围
chart->SetDataRange(sheet->GetRange(L"B2:B5"));
chart->SetSeriesDataFromRange(false);
//设置图表的位置
chart->SetLeftColumn(1);
chart->SetTopRow(6);
chart->SetRightColumn(9);
chart->SetBottomRow(25);
//设置图表标题并设置其格式
chart->SetChartTitle(L"年度销售情况");
chart->GetChartTitleArea()->SetIsBold(true);
chart->GetChartTitleArea()->SetSize(12);
//在图表中获取指定的系列
ChartSerie* cs = chart->GetSeries()->Get(0);
//设置系列的类别标签
cs->SetCategoryLabels(sheet->GetRange(L"A2:A5"));
//设置系列值
cs->SetValues(sheet->GetRange(L"B2:B5"));
//显示数据点的数据标签
cs->GetDataPoints()->GetDefaultDataPoint()->GetDataLabels()->SetHasValue(true);
//保存结果文件
workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);
workbook->Dispose();
}
在 Excel 中创建圆环图
圆环图是饼图的变体。它的中心有一个孔,可以显示其他信息。以下是在 Excel 工作表中添加圆环图的步骤。
- 创建 Workbook对象。
- 使用 Workbook->GetWorksheets()->Get() 方法获取指定的工作表。
- 向指定的单元格中添加一些数据并设置单元格样式。
- 使用 Worksheet->GetCharts()->Add() 方法将图表添加到工作表中,然后使用 Chart->SetChartType(ExcelChartType::Doughnut) 方法将其类型设置为圆环图。
- 使用 Chart->SetDataRange() 方法设置图表的数据范围。
- 设置图表的位置和标题。
- 显示数据点的数据标签。
- 使用 Chart->GetLegend()->SetPosition() 方法设置图表的图例位置。
- 使用 Workbook->SaveToFile() 方法保存结果文件。
- C++
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//指定输出文件路径
std::wstring outputFile = L"Output\\圆环图.xlsx";
//创建工作簿对象
Workbook* workbook = new Workbook();
//获取第一个工作表
Worksheet* sheet = workbook->GetWorksheets()->Get(0);
//将数据插入指定的单元格
sheet->GetRange(L"A1")->SetValue(L"国家");
sheet->GetRange(L"A2")->SetValue(L"古巴");
sheet->GetRange(L"A3")->SetValue(L"墨西哥");
sheet->GetRange(L"A4")->SetValue(L"法国");
sheet->GetRange(L"A5")->SetValue(L"德国");
sheet->GetRange(L"B1")->SetValue(L"销售额");
sheet->GetRange(L"B2")->SetNumberValue(6000);
sheet->GetRange(L"B3")->SetNumberValue(8000);
sheet->GetRange(L"B4")->SetNumberValue(9000);
sheet->GetRange(L"B5")->SetNumberValue(8500);
//设置单元格样式
sheet->GetRange(L"A1:B1")->SetRowHeight(15);
sheet->GetRange(L"A1:B1")->GetStyle()->SetColor(Spire::Common::Color::GetBlack());
sheet->GetRange(L"A1:B1")->GetStyle()->GetFont()->SetColor(Spire::Common::Color::GetWhite());
sheet->GetRange(L"A1:B1")->GetStyle()->GetFont()->SetIsBold(true);
sheet->GetRange(L"A1:B1")->GetStyle()->SetVerticalAlignment(VerticalAlignType::Center);
sheet->GetRange(L"A1:B1")->GetStyle()->SetHorizontalAlignment(HorizontalAlignType::Center);
//在工作表中添加环形图
Chart* chart = sheet->GetCharts()->Add();
chart->SetChartType(ExcelChartType::Doughnut);
//设置图表的数据范围
chart->SetDataRange(sheet->GetRange(L"A1:B5"));
chart->SetSeriesDataFromRange(false);
//设置图表位置
chart->SetLeftColumn(4);
chart->SetTopRow(2);
chart->SetRightColumn(12);
chart->SetBottomRow(22);
//设置图表标题
chart->SetChartTitle(L"按国家划分的市场份额");
chart->GetChartTitleArea()->SetIsBold(true);
chart->GetChartTitleArea()->SetSize(12);
//显示数据点的数据标签
for (int i = 0; i < chart->GetSeries()->GetCount(); i++)
{
ChartSerie* cs = chart->GetSeries()->Get(i);
cs->GetDataPoints()->GetDefaultDataPoint()->GetDataLabels()->SetHasPercentage(true);
}
//设置图表的图例位置
chart->GetLegend()->SetPosition(LegendPositionType::Top);
//保存结果文件
workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);
workbook->Dispose();
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。