使用Aspose Slide绘制图形

时间:2012-11-28 09:53:20

标签: c# asp.net aspose

我是使用aspose.slides的新手,想知道是否可以创建此镜头描述中给出的条形图。

我想要更新的图表的y轴从-100到100,而0和条形图上的x轴应该在正面向上或负面向下。

以下代码显示常规条形图如下所示

// Instantiate PresentationEx class that represents PPTX file
PresentationEx pres = new PresentationEx("D:\\AsposeChart.pptx");

// Access first slide
SlideEx sld = pres.Slides[0];

// Add chart with default data
ChartEx chart = (ChartEx)sld.Shapes[0];

// Setting the index of chart data sheet 
int defaultWorksheetIndex = 0;

// Getting the chart data worksheet
ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;

// Take first chart series
ChartSeriesEx series = chart.ChartData.Series[0];

// Now updating series data
fact.GetCell(defaultWorksheetIndex, 0, 1, "New_Series1");//modifying series name
series.Values[0].Value = 90;
series.Values[1].Value = 123;
series.Values[2].Value =44;

// Take Second chart series
series = chart.ChartData.Series[1];

// Now updating series data
fact.GetCell(defaultWorksheetIndex, 0, 2, "New_Series2");//modifying series name           
series.Values[0].Value = 23;
series.Values[1].Value = 67;
series.Values[2].Value = 99;

// Now, Adding a new series
chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 3, "Series 3"), chart.Type);

// Take 3rd chart series
series = chart.ChartData.Series[2];

// Now populating series data
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 3, 20));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 3, 50));
series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 3, 30));

chart.Type = ChartTypeEx.ClusteredCylinder;

// Save presentation with chart
pres.Write(@"D:\AsposeChartMoodified.pptx");

1 个答案:

答案 0 :(得分:0)

我已观察到您的要求,并希望分享您可以使用以下代码段来生成所需图表。我已经分享了可以在负区域呈现系列的示例代码。但是,存在一个小问题,即当呈现负值或小于水平比例值的值时,将删除其填充颜色。

这是由于Aspose.Slides中缺少属性而我创建了ID SLIDESNET-33821 的问题(您可以在Aspose.Slides产品支持论坛中跟踪此问题的状态超过this link )以提供功能支持。我还分享了突出显示缺失特征的图像,并且取消选中环绕的值将填充未填充的系列值。在我看来,如果你使用模板图表,那么这个问题甚至可能不会发生。但是你可以在最后验证这一点。

public static void addBarChart()
{
    PresentationEx pres = new PresentationEx();
    ChartEx chart = pres.Slides[0].Shapes.AddChart(ChartTypeEx.ClusteredColumn, 20, 20, 500, 400);
    //Setting values of Y-axis or Value axis
    chart.ValueAxis.IsAutomaticMaxValue = false;
    chart.ValueAxis.IsAutomaticMinValue = false;
    chart.ValueAxis.CrossType = CrossesTypeEx.Custom;
    chart.ValueAxis.MinValue = 0;
    chart.ValueAxis.MaxValue = 400;
    chart.ValueAxis.CrossAt = 100f;

    chart.ChartData.Series.Clear();
    int defaultWorksheetIndex = 0;
    //Getting the chart data worksheet
    ChartDataCellFactory fact = chart.ChartData.ChartDataCellFactory;

    //Adding new series
    int id=chart.ChartData.Series.Add(fact.GetCell(defaultWorksheetIndex, 0, 1, "Series 1"), chart.Type);
    ChartSeriesEx series = chart.ChartData.Series[id];


    //Now populating series data

    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 1, 1, 30));
    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 2, 1, 150));
    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 3, 1, 320));
    series.Values.Add(fact.GetCell(defaultWorksheetIndex, 4, 1, 80));

    series.Format.Fill.FillType = FillTypeEx.Solid;
    series.Format.Fill.SolidFillColor.Color = Color.Red;
    series.IsColorVaried = false;
    pres.Write("D:\\Aspose Data\\SampleChart.pptx");

}

PS,我的名字是Nayyer,我是Aspose的开发人员传播者。