C# - 为什么直方图在Excel 2016中不起作用?

时间:2017-10-26 16:55:29

标签: c# vsto excel-charts

我在c#中使用excel 2016 vsto应用程序。我有一个图表控件,并希望将图表类型设置为直方图。我可以从excel中选择此图表,但我无法以编程方式设置此图表类型。 enter image description here

换句话说,我无法在XlChartType枚举中找到直方图图表类型。

2 个答案:

答案 0 :(得分:3)

在这种情况下,您应该始终在excel宏中打开对象浏览器并搜索您要查找的内容

histogram

从对象浏览器中可以看到,直方图的值为十六进制的11876。您可以通过定义常量

直接在代码中使用相同的内容

编辑-1:代码

调试下面的代码我发现了一个问题

Worksheet sheet1 = Globals.Factory.GetVstoObject(Globals.Sheet1.Application.Worksheets[1]);
//chartTest
Excel.ChartObject myChart = (Excel.ChartObject)sheet1.ChartObjects("chartTest");
myChart.Chart.SetSourceData(sheet1.Range["A1", "A51"]);
myChart.Chart.Type = 118;

您需要做的是将118分配给ChartType而不是Type。下面的代码对我来说很好

Worksheet sheet1 = Globals.Factory.GetVstoObject(Globals.Sheet1.Application.Worksheets[1]);
//chartTest
Excel.ChartObject myChart = (Excel.ChartObject)sheet1.ChartObjects("chartTest");
myChart.Chart.SetSourceData(sheet1.Range["A1", "A51"]);
Excel.XlChartType myType = (Excel.XlChartType)118;

myChart.Chart.ChartType = myType;

答案 1 :(得分:0)

在向工作表添加直方图时,只需录制宏。

停止录制并按Alt + F11以打开Visual Basic编辑器。打开重新编码的宏并将VBA转换/比较为C#代码。