C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: VSTOを使用してのExcelグラフ作成


(過去ログ 25 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■11244 / inTopicNo.1)  VSTOを使用してのExcelグラフ作成
  
□投稿者/ kou (6回)-(2007/12/10(Mon) 20:02:44)

分類:[C#] 

こんにちは、いつも参考にさせていただいております。

今回どうしても解決できない課題がありまして、質問させていただきます。

開発言語:C#(VisualStudio2005)

現在、C#のGUIアプリケーション上で表示している散布図を、VSTOを使用してExcelグラフとして
出力する機能を開発しております。

単純に1データ(1シリーズ)のグラフをExcelグラフとして出力するところまではできたのですが、
下記例のように、データのプロット幅?が異なる場合の出力が上手くいきません。
例)
  X軸の値  データ1(Y軸の値) データ2(Y軸の値)
     0              2                3
     1              
     2                               2
     3              3
     4                               1 
     5                              
     6              4                3

所々がデータがない歯抜け状態なのですが、このデータをデータ範囲を一括で指定し表示をすると
マーカーは表示されるのですが、データ間の線が表示されません。(ちなみにソースではget_Range
メソッドを使用して一括で範囲指定したRangeオブジェクトを取得し、SetSourceDataで範囲を設定
しております。)

〜ソース抜粋〜
xlBooks = (Excel._Workbook)xlSheet.Parent;
xlChart = (Excel._Chart)xlBooks.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value); 
xlChart.ChartType = Excel.XlChartType.xlXYScatter;
xlRang = xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[7, 3]);
xlChart.SetSourceData(xlRang, Excel.XlRowCol.xlColumns);
〜ここまで〜

そこで、各データ毎に(X軸1,データ1値)、(X軸2,データ2値)というように、系列毎に範囲を指定し
ようと考えているのですが、実現方法を見つけることができませんでした。

どなたか、ご存知の方がおられましたらご教授願います。

乱文で申し訳ありません。不足な情報がございましたらご指摘ください。

よろしくお願いいたします。

引用返信 編集キー/
■11269 / inTopicNo.2)  Re[1]: VSTOを使用してのExcelグラフ作成
□投稿者/ kou (8回)-(2007/12/11(Tue) 12:08:40)
No11244 (kou さん) に返信

こんにちは、とりあえず、解決できましたのでご報告いたします。

歯抜けとなるデータをセルに追加した後、DispalyBlanksAsプロパティにxlInterpolatedを設定する
ことで、線が引かれることを確認いたしました。

xlChart.DisplayBlanksAs = Microsoft.Office.Interop.Excel.XlDisplayBlanksAs.xlInterpolated;

ありがとうございました。

PS.系列毎にデータを指定する方法はまだわかりません。ご存知の方がおられましたらご教授願います。

> こんにちは、いつも参考にさせていただいております。
>
> 今回どうしても解決できない課題がありまして、質問させていただきます。
>
> 開発言語:C#(VisualStudio2005)
>
> 現在、C#のGUIアプリケーション上で表示している散布図を、VSTOを使用してExcelグラフとして
> 出力する機能を開発しております。
>
> 単純に1データ(1シリーズ)のグラフをExcelグラフとして出力するところまではできたのですが、
> 下記例のように、データのプロット幅?が異なる場合の出力が上手くいきません。
> 例)
>   X軸の値  データ1(Y軸の値) データ2(Y軸の値)
> 0 2 3
> 1
> 2 2
> 3 3
> 4 1
> 5
> 6 4 3
>
> 所々がデータがない歯抜け状態なのですが、このデータをデータ範囲を一括で指定し表示をすると
> マーカーは表示されるのですが、データ間の線が表示されません。(ちなみにソースではget_Range
> メソッドを使用して一括で範囲指定したRangeオブジェクトを取得し、SetSourceDataで範囲を設定
> しております。)
>
> 〜ソース抜粋〜
> xlBooks = (Excel._Workbook)xlSheet.Parent;
> xlChart = (Excel._Chart)xlBooks.Charts.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
> xlChart.ChartType = Excel.XlChartType.xlXYScatter;
> xlRang = xlSheet.get_Range(xlSheet.Cells[1, 1], xlSheet.Cells[7, 3]);
> xlChart.SetSourceData(xlRang, Excel.XlRowCol.xlColumns);
> 〜ここまで〜
>
> そこで、各データ毎に(X軸1,データ1値)、(X軸2,データ2値)というように、系列毎に範囲を指定し
> ようと考えているのですが、実現方法を見つけることができませんでした。
>
> どなたか、ご存知の方がおられましたらご教授願います。
>
> 乱文で申し訳ありません。不足な情報がございましたらご指摘ください。
>
> よろしくお願いいたします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -