5

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 列の値を配置することに注意してください。

チャートを作成するために次のコードを作成しました。

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érie 1」というラベルを削除するにはどうすればよいですか?

4

1 に答える 1

4

これは生後 6 か月なので、すでに先に進んでいると思いますが、

グラフ ( 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...];
于 2013-01-03T21:19:01.860 に答える