饼图和圆环图是两种类似的图表,用于显示数据的百分比。这两个图表在视觉上都非常简洁,可以即时了解部分与整体的关系。在本文中,您将学习如何使用 spire.xls for c 在 excel 中以编程方式创建饼图或圆环图。
安装 spire.xls for c
有两种方法可以将 spire.xls for c 集成到您的应用程序中。一种方法是通过 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 nuget 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
在 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 天的临时许可证。