在xlsio图表中切换行/列(切换轴)(syncfusion)

时间:2014-11-14 08:19:17

标签: c# asp.net syncfusion excel-charts

我正在寻找一种方法来切换使用Syncfusion XlsIO库生成的图表的轴。我无法找到任何解决方案,因为该库是商业化的,使用较少,知识库非常有限。

基本上,我使用excel模板来创建新工作表并相应地填充一些数据。我能够做任何事情,但不知何故,轴不按我想要的方式出现。我想要一种方法来简单地执行enter image description here(Excel.exe中的切换行/列按钮)对生成的图表(即图表的切换轴)所做的操作。或者可以以编程方式控制轴,并使用代码在X轴和Y轴之间切换。

虽然,我有一个解决方案,我们可以为我正在生成的Transpose生成图表的数据,但它似乎是一个非常大的交易,因为维护的应用程序是实时的,它是现在几乎不可能改变数据的方向(转置)。

这是我的代码:

IChartShapes cs = ws.Charts; // ws is the worksheet being generated
foreach (IChart cs1 in cs)
{
    string strCName = cs1.Name;
    IRange rngs = ws.Range[cs1.Name]; //chart name and named range are the same
    cs1.PrimaryValueAxis.Font.Size = 4;
    cs1.PrimaryCategoryAxis.Font.Size = 4;
    cs1.DisplayBlanksAs = ExcelChartPlotEmpty.NotPlotted;
    cs1.DataRange = rngs;
    IChartCategoryAxis csa = cs1.PrimaryCategoryAxis;
    csa.CategoryLabels.WrapText = true;
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

得到了答案!这太简单了。虽然似乎没有人对这个问题感兴趣,但是如果有人碰巧遇到这样的问题,这可能对他/她有帮助。

基本上,答案只是将图表IsSeriesInRows的属性默认为True设置为False,并在将范围添加到图表后调用此方法。

所以这是更正后的代码。

IChartShapes cs = ws.Charts; // ws is the worksheet being generated
foreach (IChart cs1 in cs)
{
    string strCName = cs1.Name;
    IRange rngs = ws.Range[cs1.Name]; //chart name and named range are the same
    cs1.PrimaryValueAxis.Font.Size = 4;
    cs1.PrimaryCategoryAxis.Font.Size = 4;
    cs1.DisplayBlanksAs = ExcelChartPlotEmpty.NotPlotted;
    cs1.DataRange = rngs;

    //// Answer added here ////
    cs1.IsSeriesInRows = false; //This tells the chart that the series are to be picked from the row itself.

    //// Answer ends here ////
    IChartCategoryAxis csa = cs1.PrimaryCategoryAxis;
    csa.CategoryLabels.WrapText = true;
}