2014-02-16 59 views
1

我有這樣的代碼。這是我創建的文件和設置值Excel中使用C#的線圖:seriesCollection無法正常工作

// Excel.Application xlApp; 
      Excel.Workbook xlWorkBook; 
      Excel.Worksheet xlWorkSheet; 
      object misValue = System.Reflection.Missing.Value; 
      Excel._Application xlApp = new Excel.Application(); 

      xlWorkBook = xlApp.Workbooks.Add(misValue); 
      xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

      //add data 
      xlWorkSheet.Cells[1, 1] = 13; 
      xlWorkSheet.Cells[1, 2] = 27; 
      xlWorkSheet.Cells[1, 3] = 22; 
      xlWorkSheet.Cells[1, 4] = 22; 

      xlWorkSheet.Cells[2, 1] = 42 ; 
      xlWorkSheet.Cells[2, 2] = 35; 
      xlWorkSheet.Cells[2, 3] = 22; 
      xlWorkSheet.Cells[2, 4] = 22; 

在這裏,我怎麼嘗試創建折線圖:

Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
     Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 250); 
     Excel.Chart chartPage = myChart.Chart; 
     myChart.Select(); 

     chartPage.ChartType = Excel.XlChartType.xlXYScatterLines; 
     Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application(); 
     Excel.SeriesCollection seriesCollection = chartPage.SeriesCollection(); 

     Excel.Series series1 = seriesCollection.NewSeries(); 
     series1.XValues = xlWorkSheet.get_Range("A1", "B1"); ; 
     series1.Values = xlWorkSheet.get_Range("C1", "D1"); 

     Excel.Series series2 = seriesCollection.NewSeries(); 
     series2.XValues = xlWorkSheet.get_Range("A2", "B2"); ; 
     series2.Values = xlWorkSheet.get_Range("C2", "D2"); 

     Excel.Series series3 = seriesCollection.NewSeries(); 
     series3.XValues = xlWorkSheet.get_Range("A3", "B3"); ; 
     series3.Values = xlWorkSheet.get_Range("C3", "D3"); 

我試圖做這在我的方式,但面對一些問題的SeriesCollection不`噸工作應該是,他畫三條線,但我只能看到最後一條,前兩條線變成了同一個點。

此外,我提供了VBA代碼,不看值有:

Sub Dot_chart() 

ActiveSheet.Shapes.AddChart2(240, xlXYScatterLines).Select 
ActiveWindow.SmallScroll Down:=6 
ActiveSheet.Shapes("Chart 2").IncrementLeft 120.8823622047 
ActiveSheet.Shapes("Chart 2").IncrementTop 132.3529133858 
ActiveChart.SeriesCollection.NewSeries 
ActiveChart.FullSeriesCollection(1).Name = "=List1!$B$23" 
ActiveChart.FullSeriesCollection(1).XValues = "=List1!$D$22:$D$23" 
ActiveChart.FullSeriesCollection(1).Values = "=List1!$D$24:$D$25" 
ActiveChart.SeriesCollection.NewSeries 
ActiveChart.FullSeriesCollection(2).Name = "=List1!$B$23" 
ActiveChart.FullSeriesCollection(2).XValues = "=List1!$E$22:$E$23" 
ActiveChart.FullSeriesCollection(2).Values = "=List1!$E$24:$E$25" 
ActiveChart.SeriesCollection.NewSeries 
ActiveChart.FullSeriesCollection(3).Name = "=List1!$B$28" 
ActiveChart.FullSeriesCollection(3).XValues = "=List1!$D$27:$D$28" 
ActiveChart.FullSeriesCollection(3).Values = "=List1!$D$29:$D$30" 
End Sub 

回答

2

此代碼爲應,最終我怎麼畫這個圖。

  Excel.Workbook xlWorkBook; 
      Excel.Worksheet xlWorkSheet; 
      object misValue = System.Reflection.Missing.Value; 
      Excel._Application xlApp = new Excel.Application(); 

      xlWorkBook = xlApp.Workbooks.Add(misValue); 
      xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

      //add data 
      xlWorkSheet.Cells[1, 1] = 13; 
      xlWorkSheet.Cells[1, 2] = 27; 
      xlWorkSheet.Cells[1, 3] = 22; 
      xlWorkSheet.Cells[1, 4] = 22; 

      xlWorkSheet.Cells[2, 1] = 42 ; 
      xlWorkSheet.Cells[2, 2] = 35; 
      xlWorkSheet.Cells[2, 3] = 22; 
      xlWorkSheet.Cells[2, 4] = 22; 

      xlWorkSheet.Cells[3, 1] = 1; 
      xlWorkSheet.Cells[3, 2] = 10; 
      xlWorkSheet.Cells[3, 3] = 4; 
      xlWorkSheet.Cells[3, 4] = 4; 


      Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); 
      Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 250); 
      Excel.Chart chartPage = myChart.Chart; 
      myChart.Select(); 

      chartPage.ChartType = Excel.XlChartType.xlXYScatterLines; 
      Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application(); 
      Excel.SeriesCollection seriesCollection = chartPage.SeriesCollection(); 

      Excel.Series series1 = seriesCollection.NewSeries(); 
      series1.XValues = xlWorkSheet.get_Range("A1", "B1"); ; 
      series1.Values = xlWorkSheet.get_Range("C1", "D1"); 

      Excel.Series series2 = seriesCollection.NewSeries(); 
      series2.XValues = xlWorkSheet.get_Range("A2", "B2"); ; 
      series2.Values = xlWorkSheet.get_Range("C2", "D2"); 

      Excel.Series series3 = seriesCollection.NewSeries(); 
      series3.XValues = xlWorkSheet.get_Range("A3", "B3"); ; 
      series3.Values = xlWorkSheet.get_Range("C3", "D3"); 



      xlWorkBook.SaveAs(@"C:\ProgramData\RadiolocationQ\Text.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
      xlWorkBook.Close(true, misValue, misValue); 
      xlApp.Quit(); 

      releaseObject(xlWorkSheet); 
      releaseObject(xlWorkBook); 
      releaseObject(xlApp); 


      Process.Start(@"C:\ProgramData\RadiolocationQ\Text.xls");