图表渲染

创建图表

Aspose.Cells API 支持创建真实的 Excel 图表,详见主题创建和自定义 Excel 图表.为了演示如何使用 Aspose.Cells API 以图像和 PDF 格式呈现图表,我们将按照以下代码段创建一个 Column 类型的图表。

     // Create a new workbook

	intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

	// Get first worksheet which is created by default

	intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

	// Adding sample values to cells

	worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);

	worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);

	worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);

	worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);

	worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);

	worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

	// Adding a chart to the worksheet

	int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Column, 5, 0, 20, 8);

	// Accessing the instance of the newly added chart

	intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

	// Adding SeriesCollection (chart data source) to the chart ranging from "A1" cell to "B3"

	chart->GetNISeries()->Add(new String("A1:B3"), true);

渲染图

Aspose.Cells API 支持将 Excel 图表转换为图像和 PDF 格式,无需任何其他工具或应用程序。为了提供渲染支持,Chart 类公开了具有大量重载的 ToImage 和 ToPdf 方法,以最好地满足应用程序的要求。

将图表渲染为图像

Chart.toImage 方法具有大量重载以支持简单和高级渲染。如果应用程序要求以默认尺寸呈现图表,我们建议您使用 Chart.toImage 方法,如下所示。

 // Output directory path

StringPtr outDir = new String("..\\Data\\02_OutputDirectory\\");

// Path of output image file

StringPtr outputChartImage = outDir->StringAppend(new String("out1image.png"));

// Saving the chart to image file

chart->ToImage(outputChartImage, Aspose::Cells::System::Drawing::Imaging::ImageFormat::GetPng());

渲染图到 PDF

为了将图表呈现为 PDF 格式,Aspose.Cells API 公开了 Chart.ToPdf 方法,能够将结果 PDF 存储在磁盘路径或流中。

 // Path of output pdf file

StringPtr outputPdfFile = outDir->StringAppend(new String("out1pdf.pdf"));

// Saving chart to PDF

chart->ToPdf(outputPdfFile);

支持的渲染图表类型

有一些图表类型当前不支持渲染。此类图表类型包含N支持下表的列。

图表类型 图表子类型 支持的
柱子 柱子 Y
列堆叠 Y
列 100% 堆叠 Y
Column3D簇状 Y
列 3D 堆叠 Y
Column3D100PercentStacked Y
立柱三维 Y
酒吧 酒吧 Y
酒吧堆叠 Y
Bar100Percent 堆叠 Y
Bar3DClustered Y
Bar3D堆叠 Y
Bar3D100PercentStacked Y
线 线 Y
线堆叠 Y
Line100Percent 堆叠 Y
带数据标记的线 Y
LineStackedWithDataMarkers Y
Line100PercentStackedWithDataMarkers Y
直线三维 Y
馅饼 馅饼 Y
Pie3D Y
派派 Y
馅饼爆炸 Y
饼图3D分解 Y
馅饼吧 Y
分散 分散 Y
ScatterConnectedByCurvesWithDataMarker Y
ScatterConnectedByCurvesWithoutDataMarker Y
ScatterConnectedByLinesWithDataMarker Y
ScatterConnectedByLinesWithoutDataMarker Y
区域 区域 Y
面积堆叠 Y
面积 100% 堆叠 Y
三维区域 Y
Area3D堆叠 Y
Area3D100PercentStacked Y
油炸圈饼 油炸圈饼 Y
甜甜圈爆炸 Y
雷达 雷达 Y
带数据标记的雷达 Y
雷达填充 Y
表面 Surface3D
表面线框3D
表面轮廓
表面轮廓线框
气泡 气泡 Y
泡泡3D
库存 股价高低收盘 Y
股票开高低收 Y
StockVolumeHighLow关闭 Y
StockVolumeOpenHighLowClose Y
圆柱 圆柱 Y
圆柱叠层 Y
圆柱100%堆叠 Y
圆柱棒 Y
圆柱形条堆叠 Y
CylindricalBar100PercentStacked Y
圆柱3D Y
锥体 锥体 Y
圆锥堆叠 Y
Cone100Percent堆叠 Y
锥形棒 Y
锥形条堆叠 Y
ConicalBar100PercentStacked Y
锥形柱3D Y
金字塔 金字塔 Y
金字塔堆叠 Y
金字塔100%堆积 Y
金字塔酒吧 Y
金字塔酒吧堆叠 Y
PyramidBar100PercentStacked Y
金字塔柱3D Y
盒须 盒须
漏斗 漏斗 Y
帕累托线 帕累托线 Y
森伯斯特 森伯斯特 Y
树形图 树形图 Y
瀑布 瀑布 Y
直方图 直方图
地图 地图 N