使用C#在Excel中创建X x Y图表

5

我正在尝试使用C#在Excel中创建图表。到目前为止,我已经用需要绘制的数据填充了一个Excel电子表格。我的电子表格上有这样的数据:

T    U
10  10
20  5
30  3,333333333
40  2,5
50  2
60  1,666666667
70  1,428571429
80  1,25
90  1,111111111
100 1
110 0,909090909
120 0,833333333
130 0,769230769
140 0,714285714
150 0,666666667
160 0,625

我有从第一行到第40行的数据。我想在Excel中创建一个如下所示的图表:

enter image description here

请注意,在X轴上,我想放置来自T列的值(或其中一些值),而在Y轴上,是U列的值。

我编写了以下代码来创建图表:

object misValue = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application();
Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
Worksheet ws = (Worksheet)xla.ActiveSheet;

Microsoft.Office.Interop.Excel.Range chartRange;
Microsoft.Office.Interop.Excel.ChartObjects xlCharts = (Microsoft.Office.Interop.Excel.ChartObjects)ws.ChartObjects(Type.Missing);
Microsoft.Office.Interop.Excel.ChartObject myChart = (Microsoft.Office.Interop.Excel.ChartObject)xlCharts.Add(240, 90, 468, 315);
Microsoft.Office.Interop.Excel.Chart chartPage = myChart.Chart;
chartRange = ws.get_Range("U1", "U40");
chartPage.SetSourceData(chartRange, misValue);
chartPage.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;

在我得到以下结果:

enter image description here

这已经非常接近我的需求了,但是我无法为X轴设置值。请问有人能告诉我如何将T1到T40范围内的值分配给X轴吗? 如果可能的话,如何从图表中删除“Série 1”标签?


1
我通常的做法是手动制作一个csv文件,然后在Excel中打开它,使用Excel将csv文件转换回微软使用的格式,但这是一种hack方法。.csv很简单。只需将Excel电子表格另存为.csv文件,然后在记事本中打开它。你会明白我的意思。 - Sam I am says Reinstate Monica
1个回答

4

这篇文章已经有六个月的历史了,所以我想你可能已经转移阵地了,但是:

你已经拥有了图表的引用(chartPage),所以设置x轴值和删除图例应该很简单。你只需要一个对系列本身的引用。

Excel.Series ser = (Excel.Series)chartPage.SeriesCollection(1);

ser.xValues = ws.Range[ws.cells[row,col],ws.cells[row,col]];
chartPage.hasLegend = false;

本文假设您已经像这样别名了 Microsoft.Office.Interop.Excel

using Excel = Microsoft.Office.Interop.Excel;

你正在处理的系列实际上是第一个。你也可以通过设置y值来代替设置源数据。

ser.Values = ws.Range[etc...];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接