如何创build使用c#的Excel中的圆点图,折线图?

我使用这些命名空间: Excel = Microsoft.Office.Interop.Excel;Microsoft.Office.Tools.Excel;

我需要创build一个包含很多短线的折线图,这些线都与x轴平行。

我已经写了所有需要的点,应该用线连接。

在这里输入图像描述

这几种types的行的y轴值是相同的,不是数字,而是一种名称。 最终这应该是这样的: 在这里输入图像描述

我试图用我的方式做到这一点,但面对一些问题seriesCollection收集不应该如此,他画三条线,但我只能看到最后一个,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"); 

不知道如何解决这个问题。 我觉得y轴不能是文字,只有数字。 我想每一行都应该是另外一个系列

PS号码可以用任何必要的方式表示,以简化工作。

UPD:这是我创build这个点图的过程,我录制了macros

 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 

列表1的名称。

经过几天的search,我find了解决scheme,希望对某人有用。

  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");