我需要帮助以编程方式绘制比单个Excel系列中更多的点.
根据http://office.microsoft.com/en-us/excel/HP100738491033.aspx,Excel 2007图表上可显示的最大点数为256000.鉴于每个系列的最高点为32000点,需要8个系列绘制全部256000点.由于我们使用的大型数据集,我的客户需要绘制每个图表的最大点数.
我对C#/ Excel互操作有一定的经验,所以我认为以编程方式创建工作表然后循环遍历每组32000点并将它们作为一个系列添加到图形中,在数据完全绘制时停止或8系列是很容易的被绘制.如果颜色合适,8系列在视觉上与单个系列无法区分.
不幸的是我在这里.我遇到的主要问题是:
(完整大小) 在二维图表的数据系列中可以使用的最大数据点数是32,000 ... http://img14.imageshack.us/img14/9630/errormessagen.png
奇怪的是,当我执行该行时,会出现这个弹出窗口:
并附有:
来自HRESULT的异常:0x800AC472 http://img21.imageshack.us/img21/5153/exceptionb.png
在我甚至指定要绘制的数据之前,我不明白如何生成这样的弹出/警告/异常.Excel在这里试图变得聪明吗?
作为临时解决方法,我将chart.ChartType = chartType语句放入try-catch块中,这样我就可以继续了.
如下所示,我的"分块"代码按预期工作,但在尝试向图表添加数据时仍遇到同样的问题.Excel表示,当我显然不是时,我试图绘制太多的点.
带有观察窗口的(全尺寸图像) 代码块http://img12.imageshack.us/img12/5360/snippet.png
我知道我可能没有正确地将X值与每个系列相关联,但是我想在我走得更远之前让它工作.
任何帮助将不胜感激.
这是完整的代码:
public void DrawScatterGraph(string xColumnLetter, string yColumnLetterStart, string yColumnLetterStop, string xAxisLabel, string yAxisLabel, string chartTitle, Microsoft.Office.Interop.Excel.XlChartType chartType, bool includeTrendline, bool includeLegend)
{
int totalRows = dataSheet.UsedRange.Rows.Count; //dataSheet is a private class variable that
//is already properly set to the worksheet
//we want to graph from
if (totalRows < 2) throw …Run Code Online (Sandbox Code Playgroud)