Excel图表+;C#

Excel图表+;C#,c#,excel,charts,C#,Excel,Charts,我正在使用excel从c#中绘制图表,但我需要图表是一个相互关联的系列,而不是两个系列(当我选择一个包含两列数据的范围时) 有人能帮忙吗 xla.Visible = true; Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet); Worksheet ws = (Worksheet)xla.ActiveSheet; // Now create the chart.

我正在使用excel从c#中绘制图表,但我需要图表是一个相互关联的系列,而不是两个系列(当我选择一个包含两列数据的范围时)
有人能帮忙吗

        xla.Visible = true; 
        Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);
        Worksheet ws = (Worksheet)xla.ActiveSheet;

        // Now create the chart.
        ChartObjects chartObjs = (ChartObjects)ws.ChartObjects(Type.Missing);
        ChartObject chartObj = chartObjs.Add(100, 20, 300, 300);
        Chart xlChart = chartObj.Chart;
        Range rg = ws.get_Range("B2", "C17");
        xlChart.SetSourceData(chartRange, XlRowCol.xlColumns);

谢谢

我对代码进行了一些清理,并添加了随机数据的生成,因此它应该能够独立运行

Random random = new Random();
Microsoft.Office.Interop.Excel.Application xla = new Microsoft.Office.Interop.Excel.Application();
xla.Visible = true;
Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet);

Worksheet ws = (Worksheet)xla.ActiveSheet;

// Now create the chart.
ChartObjects chartObjs = (ChartObjects)ws.ChartObjects();
ChartObject chartObj = chartObjs.Add(150, 20, 300, 300);
Chart xlChart = chartObj.Chart;

// generate some random data
for (int row = 0; row < 16; row++)
{
    ws.Cells[row + 2, 2] = row + 1;
    ws.Cells[row + 2, 3] = random.Next(100);
}

Range xValues = ws.Range["B2", "B17"];
Range values = ws.Range["C2", "C17"];

SeriesCollection seriesCollection = xlChart.SeriesCollection();

Series series1 = seriesCollection.NewSeries();
series1.XValues = xValues;
series1.Values = values; 
Random Random=new Random();
应用程序XLA=新建微软.Office .Inop.Excel应用程序();
XL.可见=真;
工作簿WB= XLA.工作簿.Addit(XLSEETType .xLWorkTabl);
工作表ws=(工作表)xla.ActiveSheet;
//现在创建图表。
ChartObjects chartObjs=(ChartObjects)ws.ChartObjects();
ChartObject chartObj=chartObjs.Add(150,20,300,300);
图表xlChart=图表对象图表;
//生成一些随机数据
对于(int行=0;行<16;行++)
{
ws.Cells[row+2,2]=row+1;
ws.Cells[row+2,3]=random.Next(100);
}
范围xValues=ws.范围[“B2”,“B17”];
范围值=宽度范围[“C2”、“C17”];
SeriesCollection SeriesCollection=xlChart.SeriesCollection();
Series series1=seriecollection.NewSeries();
series1.XValues=XValues;
系列1.数值=数值;

我不明白您想做什么。当您在excel中有两列数据并选择它们并插入图表时,它可以在图表中生成两个系列的线,或者可以生成一个系列(即:线),该系列相对于两列,就像第一列是x轴,第二列是y轴一样,我需要在代码中这样做,而不是像我提到的+1!尝试了您的代码,但在此行出现COM异常
SeriesCollection SeriesCollection=xlChart.SeriesCollection()@GETah-这可能意味着您没有安装图表或没有正确创建chartObj。如果你想得到这方面的帮助,你需要提供更多的细节(什么例外,你在做什么),并提出一个单独的问题。谢谢你的快速回复。我实际上在一个独立的VSTO应用程序中使用了您的代码helps@GETah-代码未在VSTO应用程序中编写或测试。你应该能够做一些类似的事情,但会有所不同。