我一直在尝试使用数据在 Excel 工作表中创建图表。我的数据源是同一个工作簿。数据在工作表 1 中,我想在工作表 2 中创建图表。我已经阅读了几乎所有的 StackOverflow 线程和其他网络资源。我似乎找不到我哪里出错了。该图只显示正确缩放的轴。
我想在四个不同的折线图/条形图中针对 B、C、D 和 E 绘制列 A(X 轴)。我使用 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
语句的图形的屏幕截图:
这是启用了 SetSourceData
的图表截图:
而且我的数据集没有任何零值。
如有任何帮助,我们将不胜感激!
最佳答案
对于任何正在寻找答案的人。这是我的场景:
我将数据从 MySQL 读取到 DataTable 中,问题是我如何将数据保存在 sheet1 中。我将它们存储为字符串值。这就是为什么我从 sheet1 读取数据的部分没有将字符串值转换为数值。它只是将其视为 0。
上面的代码在其他情况下工作得很好。
愚蠢的错误! :)
关于c# - 如何使用 C# 在 Excel 中绘制数据点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36476201/