2017-07-10 3 views
0

J'ai un VSTO addin qui reçoit un diagramme Excel (en tableau d'octets) sur un réseau à partir d'un serveur. Je voudrais coller ce graphique sur une diapositive Powerpoint par programme sans avoir à enregistrer le graphique sur le disque d'abord.Comment intégrer directement un graphique Excel de la mémoire sur une diapositive Powerpoint?

Cependant, quand je regarde tous les .Add* methods exposed by Microsoft.Office.Interop.PowerPoint.Shapes, ils semblent tous avoir besoin d'un chemin de fichier dans string. En d'autres termes, je devrais convertir les données binaires dans un fichier dans un format pris en charge sur le système et obtenir son chemin avant que je puisse utiliser ces fonctions.

Existe-t-il un moyen d'utiliser directement ces données binaires et de les coller sur la diapositive Powerpoint sans avoir à les enregistrer en tant que fichier sur le système en premier?

+0

votre question est sur le point de coller graphique, pourquoi les données binaires sont-elles importantes? Si les données proviennent d'un format texte, allez-vous facilement accomplir votre tâche? –

+0

Les données binaires @ LeiYang sont importantes parce que c'est le format du graphique que mon application a reçu sur le réseau via le protocole TCP d'une autre application. Même si c'est dans un format texte, j'aurais encore du mal à le coller directement sur la diapositive car toutes les méthodes à incorporer dans la diapositive powerpoint exposée par Microsoft.Office.Interop.PowerPoint.Shapes n'acceptent que le chemin * du fichier dans la chaîne * - pas le fichier lui-même - comme paramètre pour accéder au fichier requis ... si je ne me trompe pas. – Mark

+0

donc en fait vous n'avez pas besoin de souligner le type de source de données dans cette question. votre plus gros problème se situe ailleurs. –

Répondre

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 
} 

remplir les données que vous le souhaitez (vous pouvez le remplir avec une boucle et remplir la colonne $"a{i}" avec le numéro de l'entrée (i))

See this Article for further Information