Créer un graphique dans une présentation Microsoft PowerPoint
Création d’un graphique
Les exemples de code ci-dessous décrivent le processus d’ajout d’un graphique à barres groupées 3D simple en utilisant VSTO. Vous créez une instance de présentation, y ajoutez un graphique par défaut. Ensuite, utilisez Microsoft Excel pour accéder et modifier les données du graphique ainsi que pour définir les propriétés du graphique. Enfin, enregistrez la présentation.
Exemple VSTO
En utilisant VSTO, les étapes suivantes sont effectuées :
- Créer une instance d’une présentation Microsoft PowerPoint.
- Ajouter une diapositive vierge à la présentation.
- Ajouter un graphique à barres groupées 3D et y accéder.
- Créer une nouvelle instance de Microsoft Excel Workbook et charger les données du graphique.
- Accéder à la feuille de calcul des données du graphique en utilisant l’instance de Microsoft Excel Workbook.
- Définir la plage du graphique dans la feuille de calcul et supprimer les séries 2 et 3 du graphique.
- Modifier les données de catégories du graphique dans la feuille de calcul des données du graphique.
- Modifier les données de la série 1 dans la feuille de calcul des données du graphique.
- Maintenant, accéder au titre du graphique et définir les propriétés de police.
- Accéder à l’axe des valeurs du graphique et définir l’unité principale, les unités mineures, la valeur maximale et les valeurs minimales.
- Accéder à la profondeur du graphique ou à l’axe de série et le supprimer car dans cet exemple, une seule série est utilisée.
- Maintenant, définir les angles de rotation du graphique dans les directions X et Y.
- Enregistrer la présentation.
- Fermer les instances de Microsoft Excel et PowerPoint.
La présentation de sortie, créée avec VSTO
EnsurePowerPointIsRunning(true, true); | |
//Instantiate slide object | |
Microsoft.Office.Interop.PowerPoint.Slide objSlide = null; | |
//Access the first slide of presentation | |
objSlide = objPres.Slides[1]; | |
//Select firs slide and set its layout | |
objSlide.Select(); | |
objSlide.Layout = Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutBlank; | |
//Add a default chart in slide | |
objSlide.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xl3DColumn, 20F, 30F, 400F, 300F); | |
//Access the added chart | |
Microsoft.Office.Interop.PowerPoint.Chart ppChart = objSlide.Shapes[1].Chart; | |
//Access the chart data | |
Microsoft.Office.Interop.PowerPoint.ChartData chartData = ppChart.ChartData; | |
//Create instance to Excel workbook to work with chart data | |
Microsoft.Office.Interop.Excel.Workbook dataWorkbook = (Microsoft.Office.Interop.Excel.Workbook)chartData.Workbook; | |
//Accessing the data worksheet for chart | |
Microsoft.Office.Interop.Excel.Worksheet dataSheet = dataWorkbook.Worksheets[1]; | |
//Setting the range of chart | |
Microsoft.Office.Interop.Excel.Range tRange = dataSheet.Cells.get_Range("A1", "B5"); | |
//Applying the set range on chart data table | |
Microsoft.Office.Interop.Excel.ListObject tbl1 = dataSheet.ListObjects["Table1"]; | |
tbl1.Resize(tRange); | |
//Setting values for categories and respective series data | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A2"))).FormulaR1C1 = "Bikes"; | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A3"))).FormulaR1C1 = "Accessories"; | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A4"))).FormulaR1C1 = "Repairs"; | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A5"))).FormulaR1C1 = "Clothing"; | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B2"))).FormulaR1C1 = "1000"; | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B3"))).FormulaR1C1 = "2500"; | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B4"))).FormulaR1C1 = "4000"; | |
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B5"))).FormulaR1C1 = "3000"; | |
//Setting chart title | |
ppChart.ChartTitle.Font.Italic = true; | |
ppChart.ChartTitle.Text = "2007 Sales"; | |
ppChart.ChartTitle.Font.Size = 18; | |
ppChart.ChartTitle.Font.Color = Color.Black.ToArgb(); | |
ppChart.ChartTitle.Format.Line.Visible = Microsoft.Office.Core.MsoTriState.msoTrue; | |
ppChart.ChartTitle.Format.Line.ForeColor.RGB = Color.Black.ToArgb(); | |
//Accessing Chart value axis | |
Microsoft.Office.Interop.PowerPoint.Axis valaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlValue, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary); | |
//Setting values axis units | |
valaxis.MajorUnit = 2000.0F; | |
valaxis.MinorUnit = 1000.0F; | |
valaxis.MinimumScale = 0.0F; | |
valaxis.MaximumScale = 4000.0F; | |
//Accessing Chart Depth axis | |
Microsoft.Office.Interop.PowerPoint.Axis Depthaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlSeriesAxis, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary); | |
Depthaxis.Delete(); | |
//Setting chart rotation | |
ppChart.Rotation = 20; //Y-Value | |
ppChart.Elevation = 15; //X-Value | |
ppChart.RightAngleAxes = false; | |
// Save the presentation as a PPTX | |
objPres.SaveAs("C:\\VSTOSampleChart", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue); | |
//objPres.SaveAs(@"..\..\..\VSTOSampleChart", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue); | |
//Close Workbook and presentation | |
dataWorkbook.Application.Quit(); | |
objPres.Application.Quit(); | |
public static void EnsurePowerPointIsRunning(bool blnAddPresentation) | |
{ | |
EnsurePowerPointIsRunning(blnAddPresentation, false); | |
} | |
public static void EnsurePowerPointIsRunning() | |
{ | |
EnsurePowerPointIsRunning(false, false); | |
} | |
public static void EnsurePowerPointIsRunning(bool blnAddPresentation, bool blnAddSlide) | |
{ | |
string strName = null; | |
// | |
//Try accessing the name property. If it causes an exception then | |
//start a new instance of PowerPoint | |
try | |
{ | |
strName = objPPT.Name; | |
} | |
catch (Exception ex) | |
{ | |
StartPowerPoint(); | |
} | |
// | |
//blnAddPresentation is used to ensure there is a presentation loaded | |
if (blnAddPresentation == true) | |
{ | |
try | |
{ | |
strName = objPres.Name; | |
} | |
catch (Exception ex) | |
{ | |
objPres = objPPT.Presentations.Add(MsoTriState.msoTrue); | |
} | |
} | |
// | |
//BlnAddSlide is used to ensure there is at least one slide in the | |
//presentation | |
if (blnAddSlide) | |
{ | |
try | |
{ | |
strName = objPres.Slides[1].Name; | |
} | |
catch (Exception ex) | |
{ | |
Microsoft.Office.Interop.PowerPoint.Slide objSlide = null; | |
Microsoft.Office.Interop.PowerPoint.CustomLayout objCustomLayout = null; | |
objCustomLayout = objPres.SlideMaster.CustomLayouts[1]; | |
objSlide = objPres.Slides.AddSlide(1, objCustomLayout); | |
objSlide.Layout = Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutText; | |
objCustomLayout = null; | |
objSlide = null; | |
} | |
} | |
} |
Exemple Aspose.Slides pour PHP via Java
En utilisant Aspose.Slides pour PHP via Java, les étapes suivantes sont effectuées :
- Créer une instance d’une présentation Microsoft PowerPoint.
- Ajouter une diapositive vierge à la présentation.
- Ajouter un graphique à barres groupées 3D et y accéder.
- Accéder à la feuille de calcul des données du graphique en utilisant une instance de Microsoft Excel Workbook.
- Supprimer les séries inutilisées 2 et 3.
- Accéder aux catégories de graphiques et modifier les étiquettes.
- Accéder à la série 1 et modifier les valeurs de série.
- Maintenant, accéder au titre du graphique et définir les propriétés de la police.
- Accéder à l’axe des valeurs du graphique et définir l’unité principale, les unités mineures, la valeur maximale et les valeurs minimales.
- Maintenant, définir les angles de rotation du graphique dans les directions X et Y.
- Enregistrer la présentation au format PPTX.
La présentation de sortie, créée avec Aspose.Slides
//Create empty presentation | |
Presentation pres = new Presentation(); | |
//Accessing first slide | |
ISlide slide = pres.getSlides().get_Item(0); | |
//Addding default chart | |
IChart ppChart = slide.getShapes().addChart(ChartType.ClusteredColumn3D, 20F, 30F, 400F, 300F); | |
//Getting Chart data | |
IChartData chartData = ppChart.getChartData(); | |
//Removing Extra default series | |
chartData.getSeries().removeAt(1); | |
chartData.getSeries().removeAt(1); | |
//Modifying chart categories names | |
chartData.getCategories().get_Item(0).getAsCell().setValue("Bikes"); | |
chartData.getCategories().get_Item(1).getAsCell().setValue("Accessories"); | |
chartData.getCategories().get_Item(2).getAsCell().setValue("Repairs"); | |
chartData.getCategories().get_Item(3).getAsCell().setValue("Clothing"); | |
//Setting the index of chart data sheet | |
int defaultWorksheetIndex = 0; | |
//Getting the chart data worksheet | |
IChartDataWorkbook fact = ppChart.getChartData().getChartDataWorkbook(); | |
//Modifying chart series values for first category | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 1, 1, 1000)); | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 2500)); | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 4000)); | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 4, 1, 3000)); | |
//Setting Chart title | |
ppChart.hasTitle(true); | |
ppChart.getChartTitle().addTextFrameForOverriding("2007 Sales"); | |
IPortionFormat format = ppChart.getChartTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat(); | |
format.setFontItalic(NullableBool.True); | |
format.setFontHeight(18); | |
format.getFillFormat().setFillType(FillType.Solid); | |
format.getFillFormat().getSolidFillColor().setColor(java.awt.Color.BLACK); | |
////Setting Axis values | |
ppChart.getAxes().getVerticalAxis().isAutomaticMaxValue(false); | |
ppChart.getAxes().getVerticalAxis().isAutomaticMinValue(false); | |
ppChart.getAxes().getVerticalAxis().isAutomaticMajorUnit(false); | |
ppChart.getAxes().getVerticalAxis().isAutomaticMinorUnit(false); | |
ppChart.getAxes().getVerticalAxis().setMaxValue(4000.0F); | |
ppChart.getAxes().getVerticalAxis().setMinValue(0.0F); | |
ppChart.getAxes().getVerticalAxis().setMajorUnit(2000.0F); | |
ppChart.getAxes().getVerticalAxis().setMinorUnit(1000.0F); | |
ppChart.getAxes().getVerticalAxis().setTickLabelPosition(TickLabelPositionType.NextTo); | |
//Setting Chart rotation | |
ppChart.getRotation3D().setRotationX((byte)15); | |
ppChart.getRotation3D().setRotationY(20); | |
//Saving Presentation | |
pres.save("c:\\data\\AsposeSampleChart.pptx",com.aspose.slides.SaveFormat.Pptx); |