2017-07-10 17 views
0

私はVSTO addinを持っていて、サーバからネットワーク上で(バイト配列の)エクセルチャートを受け取っています。私は最初にチャートをディスクに保存することなく、このチャートをプログラムでパワーポイントスライドに貼り付けたいと思います。エクセルチャートをメモリからパワーポイントスライドに直接埋め込む方法は?

しかし、すべて.Add* methods exposed by Microsoft.Office.Interop.PowerPoint.Shapesを調べると、すべてファイルパスがstringになっているようです。言い換えれば、バイナリデータをシステム上でサポートされている形式のファイルに変換し、それらの機能を使用する前にそのパスを取得する必要があります。

このバイナリデータを直接使用してPowerpointスライドに貼り付ける方法はありますか?最初にシステムにファイルとして保存する必要はありませんか?

+0

あなたの質問が貼り付けについてですチャート、バイナリデータが重要な理由データが何らかのテキスト形式のものであれば、簡単にあなたの仕事を達成できますか? –

+0

@LeiYangバイナリデータは、私のアプリが別のアプリケーションからTCPプロトコル経由でネットワーク経由で受け取ったチャートの形式なので重要です。テキスト形式であっても、 'Microsoft.Office.Interop.PowerPoint.Shapes'で公開されているpowerpointスライドに埋め込むすべてのメソッドは、ファイルの*パスのみを受け入れるため、スライドに直接貼り付けるのは難しいでしょう文字列*で - ファイル自体ではなく - 必要なファイルにアクセスするためのパラメータとして...私が間違っていない場合。 – Mark

+0

実際には、この質問でデータソースタイプを強調する必要はありません。あなたの最大の問題はどこかにある。 –

答えて

0
using Microsoft.Office.Interop.Excel; 

void CreateChart() 
{ 
    ChartData gChartData; 
    Workbook gWorkBook; 
    Worksheet gWorkSheet; 
    // Create the chart and set a reference to the chart data. 
    var myChart = ActivePresentation.Slides[1].Shapes.AddChart() as Microsoft.Office.Interop.PowerPoint.Chart; 
    gChartData = myChart.ChartData; 
    // Set the Workbook and Worksheet references. 
    gWorkBook = gChartData.Workbook; 
    gWorkSheet = gWorkBook.Worksheets[1]; 
    // Add the data to the workbook. 
    gWorkSheet.ListObjects["Table1"].Resize(gWorkSheet.Range["A1:B5"]); 

    gWorkSheet.Range["Table1[[#Headers],[Series 1]]"].Value = "Items"; 

    gWorkSheet.Range["a2"].Value = "Coffee"; 
    gWorkSheet.Range["a3"].Value = "Soda"; 
    gWorkSheet.Range["a4"].Value = "Tea"; 
    gWorkSheet.Range["a5"].Value = "Water"; 
    gWorkSheet.Range["b2"].Value = "1000"; 
    gWorkSheet.Range["b3"].Value = "2500"; 
    gWorkSheet.Range["b4"].Value = "4000"; 
    gWorkSheet.Range["b5"].Value = "3000"; 

    //ToDo: Style 
} 

好きなようにデータを記入(あなたがforループでそれを記入し、エントリ(i)の数で$"a{i}"欄を埋めること)

See this Article for further Information

関連する問題