Erstelle ein Diagramm in einer Microsoft PowerPoint-Präsentation

Erstellen eines Diagramms

Die folgenden Codebeispiele beschreiben den Prozess des Hinzufügens eines einfachen 3D gruppierten Säulendiagramms mit VSTO. Sie erstellen eine Präsentationsinstanz, fügen ein Standarddiagramm hinzu und verwenden dann eine Microsoft Excel-Arbeitsmappe, um auf die Diagrammdaten zuzugreifen und diese zu bearbeiten sowie die Diagrammeigenschaften einzustellen. Schließlich speichern Sie die Präsentation.

VSTO Beispiel

Mit VSTO werden die folgenden Schritte ausgeführt:

  1. Erstellen Sie eine Instanz einer Microsoft PowerPoint-Präsentation.
  2. Fügen Sie der Präsentation eine leere Folie hinzu.
  3. Fügen Sie ein 3D gruppiertes Säulendiagramm hinzu und greifen Sie darauf zu.
  4. Erstellen Sie eine neue Microsoft Excel-Arbeitsmappe und laden Sie die Diagrammdaten.
  5. Greifen Sie auf das Diagrammdaten-Arbeitsblatt über die Microsoft Excel-Arbeitsmappeninstanz zu.
  6. Setzen Sie den Diagrammbereich im Arbeitsblatt und entfernen Sie die Serien 2 und 3 aus dem Diagramm.
  7. Ändern Sie die Kategoriedaten des Diagramms im Diagrammdaten-Arbeitsblatt.
  8. Ändern Sie die Daten der Diagrammserie 1 im Diagrammdaten-Arbeitsblatt.
  9. Greifen Sie nun auf den Diagrammtitel zu und setzen Sie die schriftdverwandten Eigenschaften.
  10. Greifen Sie auf die Wertachse des Diagramms zu und setzen Sie die Haupteinheit, die Untereinheiten, den Maximalwert und den Minimalwert.
  11. Greifen Sie auf die Tiefen- oder Serienachse des Diagramms zu und entfernen Sie diese, da in diesem Beispiel nur eine Serie verwendet wird.
  12. Setzen Sie jetzt die Rotationswinkel des Diagramms in X- und Y-Richtung.
  13. Speichern Sie die Präsentation.
  14. Schließen Sie die Instanzen von Microsoft Excel und PowerPoint.

Die Ausgabepräsentation, erstellt mit VSTO

todo:image_alt_text

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;
}
}
}

Aspose.Slides für Android über Java Beispiel

Mit Aspose.Slides für Android über Java werden die folgenden Schritte ausgeführt:

  1. Erstellen Sie eine Instanz einer Microsoft PowerPoint-Präsentation.
  2. Fügen Sie der Präsentation eine leere Folie hinzu.
  3. Fügen Sie ein 3D gruppiertes Säulendiagramm hinzu und greifen Sie darauf zu.
  4. Greifen Sie auf das Diagrammdaten-Arbeitsblatt über eine Microsoft Excel-Arbeitsmappeninstanz zu.
  5. Entfernen Sie die ungenutzten Serien 2 und 3.
  6. Greifen Sie auf die Diagrammkategorien zu und ändern Sie die Beschriftungen.
  7. Greifen Sie auf die Serie 1 zu und ändern Sie die Serienwerte.
  8. Greifen Sie nun auf den Diagrammtitel zu und setzen Sie die Schriftarten-Eigenschaften.
  9. Greifen Sie auf die Wertachse des Diagramms zu und setzen Sie die Haupteinheit, die Untereinheiten, den Maximalwert und den Minimalwert.
  10. Setzen Sie jetzt die Rotationswinkel des Diagramms in X- und Y-Richtung.
  11. Speichern Sie die Präsentation im PPTX-Format.

Die Ausgabepräsentation, erstellt mit Aspose.Slides

todo:image_alt_text

//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);