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

Xul*_*ltz 5 c#

我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)

我有第 1 行到第 40 行的数据。我想在 Excel 中创建一个这样的图表:

在此处输入图片说明

请注意,在 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;
Run Code Online (Sandbox Code Playgroud)

这让我得到以下结果:

在此处输入图片说明

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

Chr*_*and 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;
Run Code Online (Sandbox Code Playgroud)

这是假设您已使用Microsoft.Office.Interop.Excel如下别名而编写的:

using Excel = Microsoft.Office.Interop.Excel;
Run Code Online (Sandbox Code Playgroud)

并且您正在制作的系列实际上是第一个。您还可以以相同的方式设置 y 值,而不是设置源数据。

ser.Values = ws.Range[etc...];
Run Code Online (Sandbox Code Playgroud)