Подтвердить что ты не робот

Диаграмма с многоуровневыми метками по оси x

Я создаю надстройку VSTO, которая, помимо прочего, должна создавать линейную диаграмму для некоторых годовых данных. Эти данные содержат данные по еженедельной основе. Я хотел бы, чтобы горизонтальная ось была сгруппирована в месяцах, как показано здесь:

введите описание изображения здесь

Однако я не могу найти что-либо в документах VSTO о том, возможно ли это или нет. Насколько я могу сказать, Series принимает только 1-мерный массив значений для оси X. Кто-нибудь имеет опыт с этим?

4b9b3361

Ответ 1

С помощью форумов Microsoft я выяснил решение (Тема MSDN).

Для кого-то еще интересно, как это сделать, это то, с чем я закончил:

Chart chart = slide.Shapes.AddChart(XlChartType.xlLine).Chart;

Excel.Workbook wb = (Excel.Workbook) chart.ChartData.Workbook;
Excel.Worksheet ws = wb.Worksheets[1];

ws.ListObjects["Table1"].Resize(ws.Range["A1:C13"]);
ws.Range["B1"].Value = "X";
ws.Range["A2"].Value = "2015";
ws.Range["A3:A7"].ClearContents();
ws.Range["A8"].Value = "2016";
ws.Range["A9:A13"].ClearContents();
ws.Range["B2"].Value = "7/15/2015";
ws.Range["B3"].Value = "8/15/2015";
ws.Range["B2:B3"].AutoFill(Destination: ws.Range["B2:B13"]);
ws.Range["B2:B13"].NumberFormat = "d-mmm";
ws.Range["C1"].Value = "Y";
ws.Range["C2"].Value = "100";
ws.Range["C3"].Value = "150";
ws.Range["C2:C3"].AutoFill(Destination: ws.Range["C2:C13"]);
(chart.SeriesCollection(1) as Series).Delete();
Series series = chart.SeriesCollection(1) as Series;
series.Values = "=Sheet1!$C$2:$C$13";
series.XValues = "=Sheet1!$A$2:$B$13";

Ответ 2

Вы правы, PowerPoint не хватает этой функции.

Трюк создания диаграммы с 2 сериями меток/тиков оси x (многоуровневые метки категорий) является компоновкой данных. Вам нужно указать значения Years and Month в разных столбцах.

Проблема заключается в том, что, хотя Excel поддерживает многоуровневые метки категорий, Powerpoint не выполняет:

введите описание изображения здесь

Я смог сделать это, создав диаграмму в Excel и используя объект Clipboard, чтобы скопировать его в PowerPoint.