2011-04-06 10 views
5

私はExcelを使用してC#からグラフを描画していますが、2つの系列ではなく、互いに関連する1つの系列になる必要があります(2列のデータを持つ範囲を選択すると)
1つのヘルプ: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); 

おかげ

+0

私はあなたがしようとしていることに混乱しています。 –

+0

Excelでデータを列にしてグラフを選択してグラフを挿入すると、チャートの列の系列を生成することができます。または、列の1列目がx列であるかのように、 2番目はy軸ですが、私はコードでこれを行う必要があります私が言及したようにトウシリーズではない – Abd

答えて

11

私は少しのコードをクリーンアップし、これは自分自身で実行する必要がありますので、ランダムデータの生成を追加しました。

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; 
+0

それは働いてくれてありがとう:) – Abd

+2

+1!あなたのコードを試してみましたが、この行にCOM例外があります。 'SeriesCollection seriesCollection = xlChart.SeriesCollection();' – GETah

+0

@GETah - あなたがチャートをインストールしなかったか、またはchartObjを正しく作成しなかった可能性があります。これに助けが必要な場合は、詳細(何が例外なのか、何をしているのか)を提供し、別の質問をする必要があります。 –