x 轴上带有多级标签的图表
Chart with multi-level labels on x-axis
我正在创建一个 VSTO 加载项,除其他外,它应该为某些年度数据创建折线图。此数据包含每周的数据点。我希望水平轴以月为单位进行分组,如下所示:
但是我在 VSTO 文档中找不到任何关于这是否可能的信息。据我所知,Series 仅采用 X 轴值的一维数组。有人有这方面的经验吗?
没错,PowerPoint 缺少此功能。
创建具有 2 个 x 轴系列的图表的技巧 labels/ticks(多级类别标签)是数据的布局。您需要将 Years 和 Month 值放在不同的列中。
问题是 Excel 支持多级分类标签,Powerpoint 不支持:
我能够在 Excel 中创建图表并使用剪贴板对象将其复制到 PowerPoint 中。
在 Microsoft 论坛的帮助下,我找到了解决方案 (MSDN Thread)。
对于任何想知道如何做到这一点的人,这就是我最终得到的:
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:$C";
series.XValues = "=Sheet1!$A:$B";
我正在创建一个 VSTO 加载项,除其他外,它应该为某些年度数据创建折线图。此数据包含每周的数据点。我希望水平轴以月为单位进行分组,如下所示:
但是我在 VSTO 文档中找不到任何关于这是否可能的信息。据我所知,Series 仅采用 X 轴值的一维数组。有人有这方面的经验吗?
没错,PowerPoint 缺少此功能。
创建具有 2 个 x 轴系列的图表的技巧 labels/ticks(多级类别标签)是数据的布局。您需要将 Years 和 Month 值放在不同的列中。
问题是 Excel 支持多级分类标签,Powerpoint 不支持:
我能够在 Excel 中创建图表并使用剪贴板对象将其复制到 PowerPoint 中。
在 Microsoft 论坛的帮助下,我找到了解决方案 (MSDN Thread)。
对于任何想知道如何做到这一点的人,这就是我最终得到的:
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:$C";
series.XValues = "=Sheet1!$A:$B";