2013-11-15 83 views
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,而不取決於記錄數。但是我不知道代碼有什麼問題。感謝幫助。

回答

0
chartPage.SetSourceData(chartRange, Microsoft.Office.Interop.Excel.XlRowCol.xlColumns); 

它的工作原理,然後...