0

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

基本上,我使用 excel 模板来创建新工作表并相应地填充一些数据。我什么都能做,但不知何故,轴并没有按我想要的方式出现。我想要一种方法来简单地执行在此处输入图像描述(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;
}

任何帮助都感激不尽。

4

1 回答 1

1

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

基本上,答案只是将默认情况下的图表属性设置为IsSeriesInRows,并在将范围添加到图表后调用它。TrueFalse

所以这里是更正的代码。

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;
}
于 2014-11-14T10:11:28.033 回答