0
我有用C#写的显示excel线图的winform。我有基本的工作,但系列名称有一个小问题。Winform显示Excel与系列名称
我的图应该有4个系列(即4行),带有N个记录,这意味着excel是4 x N表。当然,我具有与轴名称一些额外的块用5×(N + 1)
这里结束是代码:(其中count
是记录数)
Microsoft.Office.Interop.Excel.Range chartRange;
Microsoft.Office.Interop.Excel.ChartObjects xlCharts = (Microsoft.Office.Interop.Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing);
Microsoft.Office.Interop.Excel.ChartObject myChart = (Microsoft.Office.Interop.Excel.ChartObject)xlCharts.Add(10, 80, 400, 350);
Microsoft.Office.Interop.Excel.Chart chartPage = myChart.Chart;
if (count == 0)
{
chartRange = xlWorkSheet.get_Range("A1", "E2");
}
else
{
chartRange = xlWorkSheet.get_Range("A1", "E" + (count + 1));
}
chartPage.SetSourceData(chartRange, misValue);
//X-Axis
if (count == 0)
{
chartRange = xlWorkSheet.get_Range("A2", "A2");
}
else
{
chartRange = xlWorkSheet.get_Range("A2", "A" + (count + 1));
}
Microsoft.Office.Interop.Excel.Axis xAxis = (Microsoft.Office.Interop.Excel.Axis)chartPage.Axes(Microsoft.Office.Interop.Excel.XlAxisType.xlCategory, Microsoft.Office.Interop.Excel.XlAxisGroup.xlPrimary);
xAxis.CategoryNames = chartRange;
chartPage.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
Microsoft.Office.Interop.Excel.SeriesCollection seriesCollection = chartPage.SeriesCollection();
Console.WriteLine("count "+seriesCollection.Count);
//Series name
if (count > 0)
{
for (int i = 1; i < 5; i++)
{
Microsoft.Office.Interop.Excel.Series series1 = chartPage.SeriesCollection(i);
switch (i)
{
case 1:
series1.Name = "Line1";
break;
case 2:
series1.Name = "Line2";
break;
case 3:
series1.Name = "Line3";
break;
case 4:
series1.Name = "Line4";
break;
}
}
}
该图没有N> = 4时(即数据库超过4条记录时),但显示错误时出现错误,因为seriesCollection.Count
< 4.我认为seriesCollection.Count
应始终为4,而不取决于记录数。但是我不知道代码有什么问题。感谢帮助。