我正在尝试使用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

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

注意,在X轴上,我想将T列中的值(或某些值)放入Y轴中,将U列中的值放入Y轴中。

我编写了以下代码来创建图表:
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;

这给了我以下结果:

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

最佳答案

这已经六个月大了,所以我想您已经继续前进,但是:

您已经获得了对图表的引用(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...];

关于c# - 使用C#在Excel中创建X x Y图表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11456638/

10-12 00:27
查看更多