5

次の図のようなグラフを追加したいと思います。

エクセルチャート

このチャートには 3 つの系列 (黒、赤、青) があります。

以下は、チャート上に「1 つの」系列を作成するコード ブロックです。

Excel._Workbook oWorkbook = (Excel._Workbook)oSheet.Parent;
Excel._Chart oChart = (Excel._Chart)oWorkbook.Charts.Add(oSheet, Type.Missing, Type.Missing, Type.Missing);

// Y axis data
Excel.Range oRange = oSheet.get_Range(yRange, Type.Missing);

// Creates a chart
oChart.ChartWizard(oRange, chartType, 2, Excel.XlRowCol.xlColumns, Type.Missing, Type.Missing, false, title, xAxisTitle, yAxisTitle, Type.Missing);

// Sets X axis category
Excel.Series oSeries = (Excel.Series)oChart.SeriesCollection(1);    
oSeries.XValues = oSheet.get_Range(xRange, Type.Missing);
oChart.Name = chartName;

MSDN API はあまり役に立たず、この問題に関するチュートリアルや例はほとんど見つかりません。(または、私はそれらを検索するのが得意ではないかもしれません)
誰かが私に解決策を教えていただければ幸いです。

4

2 に答える 2

3

この問題は非常に簡単な解決策で解決できました。
yRange (oRange) を正しく設定すると、「ChartWizard」メソッドが自動的にグラフを作成します。
したがって、「A2:A100」を含む範囲の代わりに、「A2:A100,C2:C100」は 1 つのグラフに 2 つの線 (シリーズ) を生成し、データ範囲に見出し (またはシリーズ ラベル) が含まれる場合、「ChartWizard」は凡例にシリーズ名が自動的に表示されます。

于 2011-11-21T02:04:44.357 に答える
-1

私はC#にあまり精通していませんが、

Excel.Range NewRangeObject = oSheet.get_Range(SecondyRange, Type.Missing);        

oChart.NewSeries
oChart.SeriesCollection(2).Name = "New Series"
oChart.SeriesCollection(2).Value = NewRangeObject

明確にするために、私はVBAコードがどのように見えるかに基づいて一種の推測をしています。

より高いレベルの解決策は、チャートを希望どおりに設定することで、Excelでマクロを直接記録することです。次に、コードをC#に移植します。ほとんどのコマンドは似ていますが、わずかに異なるsnytaxにラップされているようです。

于 2011-11-18T16:00:33.013 に答える