如何使用C#在Excel中绘制数据点?

我一直在尝试使用数据在Excel工作表中创build图表。 我的数据源是相同的工作簿。 数据在工作表1中,我想在工作表2中创build图表。我几乎读完了所有的StackOverflow线程和其他Web资源。 我似乎无法find我出错的地方。 该图不显示任何东西,但正确缩放的轴。

我想绘制列A(X轴)对B,C,D和E在四个不同的线条/条形图。 我使用Microsoft.Office.Interop.Excel命名空间。

这是代码片段。

 Worksheet sheet2 = workBook.Worksheets[2]; ChartObjects chart = sheet2.ChartObjects(Type.Missing); ChartObject[] chartObj = {chart.Add(10, 10, 550, 300), chart.Add(580, 10, 550, 300), chart.Add(10, 350, 550, 300), chart.Add(580, 350, 550, 300) }; int[,] rangeVal = { { 0, 400 }, { 0, 100 }, { 0, 300 }, { 0, 5 } }; for (int col = 2; col <= colsCount; col++) { Chart myChart = chartObj[col-2].Chart; chartObj[col - 2].Select(); myChart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine; SeriesCollection seriesCollection = myChart.SeriesCollection(); Series series1 = seriesCollection.NewSeries(); series1.Name = sheet1.Cells[1,col].Value.ToString(); series1.XValues = sheet1.get_Range("A2","A" + (rowsCount + 1).ToString()); series1.Values = sheet1.get_Range((char)((int)'A' + col - 1) + "2", (char)((int)'A' + col - 1) + (rowsCount + 1).ToString()); series1.ChartType = XlChartType.xlLine; myChart.PlotBy = XlRowCol.xlRows; myChart.Axes(XlAxisType.xlValue).MinimumScale = rangeVal[col-2,0]; myChart.Axes(XlAxisType.xlValue).MaximumScale = rangeVal[col-2,1]; //myChart.SetSourceData(sheet1.get_Range((char)((int)'A' + col - 1) + "2", (char)((int)'A' + col - 1) + (rowsCount + 1).ToString())); } 

这是带有注释的SetSourceData语句的图的屏幕截图: GraphWithoutSetSourceData

这是启用了SetSourceData的graphics的屏幕截图: GraphWithSetSourceData

而我的数据集没有任何零值。

任何帮助,将不胜感激!

对于任何正在寻找答案的人。 这是我的场景:

我从MySQL读取数据到DataTable中,问题是我如何将数据保存在Sheet1中。 我将它们存储为string值。 这就是为什么我从sheet1读取数据的部分不会将string值转换为数值。 它只是把它作为0。

上面的代码完美无缺。

愚蠢的错误! 🙂