Переключить строку / столбец (переключить оси) в диаграмме xlsio (синхронизация)

Я ищу способ переключаться между осями диаграммы, создаваемой с помощью библиотеки 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;
}

Любая помощь будет высоко ценится.


person Cyberpks    schedule 14.11.2014    source источник


Ответы (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;
}
person Cyberpks    schedule 14.11.2014