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

标签 c# excel

我一直在尝试使用数据在 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 语句的图形的屏幕截图: GraphWithoutSetSourceData

这是启用了 SetSourceData 的图表截图: GraphWithSetSourceData

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

如有任何帮助,我们将不胜感激!

最佳答案

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

我将数据从 MySQL 读取到 DataTable 中,问题是我如何将数据保存在 sheet1 中。我将它们存储为字符串值。这就是为什么我从 sheet1 读取数据的部分没有将字符串值转换为数值。它只是将其视为 0。

上面的代码在其他情况下工作得很好。

愚蠢的错误! :)

关于c# - 如何使用 C# 在 Excel 中绘制数据点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36476201/

相关文章:

excel - 删除个人工作簿 (Excel for Mac) 中的 VBA 代码 - 无法取消隐藏

c# - 执行不返回任何结果的存储过程时抛出错误

c# - 货币格式: Remove insignificant Zeros

c# - Expander 结合 GridSplitter

excel - Excel 2010中的形状调整

java - 如何在 apache POI 中检查 excel 整数或非整数的单元格

c# - 保存计算的操作数

c# - 如何在 C# 中比较数组?

excel - 为什么 RANK 函数排名不正确?

r - countif 像 r 中的 excel 函数