Erstellt ein Diagramm
Contents
[
Hide
]
Die folgenden Codebeispiele beschreiben den Prozess, ein einfaches 3D gruppiertes Säulendiagramm mit VSTO hinzuzufügen. Sie erstellen eine Präsentationsinstanz, fügen ein Standarddiagramm hinzu. Dann verwenden Sie die Microsoft Excel-Arbeitsmappe, um auf die Diagrammdaten zuzugreifen und diese zu ändern sowie die Diagrammeigenschaften festzulegen. Schließlich speichern Sie die Präsentation.
VSTO
Mit VSTO werden die folgenden Schritte ausgeführt:
- Erstellen Sie eine Instanz einer Microsoft PowerPoint-Präsentation.
- Fügen Sie eine leere Folie zur Präsentation hinzu.
- Fügen Sie ein 3D gruppiertes Säulendiagramm hinzu und greifen Sie darauf zu.
- Erstellen Sie eine neue Microsoft Excel-Arbeitsmappeninstanz und laden Sie die Diagrammdaten.
- Greifen Sie auf das Diagrammdatenarbeitsblatt über die Microsoft Excel-Arbeitsmappeninstanz zu.
- Legen Sie den Diagrammbereich im Arbeitsblatt fest und entfernen Sie die Serien 2 und 3 aus dem Diagramm.
- Ändern Sie die Kategoriedaten des Diagramms im Diagrammdatenarbeitsblatt.
- Ändern Sie die Daten der Diagrammserie 1 im Diagrammdatenarbeitsblatt.
- Greifen Sie nun auf den Diagrammtitel zu und legen Sie die Schriftart-bezogenen Eigenschaften fest.
- Greifen Sie auf die Wertachse des Diagramms zu und legen Sie die Haupt- und Nebenwerte, den Maximal- und Minimalwert fest.
- Greifen Sie auf die Tiefen- oder Serienachse des Diagramms zu und entfernen Sie diese, da in diesem Beispiel nur eine Serie verwendet wird.
- Legen Sie nun die Rotationswinkel des Diagramms in X- und Y-Richtung fest.
- Speichern Sie die Präsentation.
- Schließen Sie die Instanzen von Microsoft Excel und PowerPoint.
//Globale Variablen
public static Microsoft.Office.Interop.PowerPoint.Application objPPT;
public static Microsoft.Office.Interop.PowerPoint.Presentation objPres;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
GEN_VSTO_Chart();
}
public static void GEN_VSTO_Chart()
{
EnsurePowerPointIsRunning(true, true);
//Instanziiere das Folienobjekt
Microsoft.Office.Interop.PowerPoint.Slide objSlide = null;
//Greifen Sie auf die erste Folie der Präsentation zu
objSlide = objPres.Slides[1];
//Wählen Sie die erste Folie aus und legen Sie ihr Layout fest
objSlide.Select();
objSlide.Layout = Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutBlank;
//Fügen Sie ein Standarddiagramm in die Folie ein
objSlide.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xl3DColumn, 20F, 30F, 400F, 300F);
//Greifen Sie auf das hinzugefügte Diagramm zu
Microsoft.Office.Interop.PowerPoint.Chart ppChart = objSlide.Shapes[1].Chart;
//Greifen Sie auf die Diagrammdaten zu
Microsoft.Office.Interop.PowerPoint.ChartData chartData = ppChart.ChartData;
//Erstellen Sie eine Instanz der Excel-Arbeitsmappe, um mit den Diagrammdaten zu arbeiten
Microsoft.Office.Interop.Excel.Workbook dataWorkbook = (Microsoft.Office.Interop.Excel.Workbook)chartData.Workbook;
//Zugriff auf das Datenarbeitsblatt für das Diagramm
Microsoft.Office.Interop.Excel.Worksheet dataSheet = dataWorkbook.Worksheets[1];
//Festlegen des Bereichs des Diagramms
Microsoft.Office.Interop.Excel.Range tRange = dataSheet.Cells.get_Range("A1", "B5");
//Anwenden des festgelegten Bereichs auf die Diagrammdaten
Microsoft.Office.Interop.Excel.ListObject tbl1 = dataSheet.ListObjects["Table1"];
tbl1.Resize(tRange);
//Festlegen der Werte für Kategorien und entsprechende Seriendaten
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A2"))).FormulaR1C1 = "Fahrräder";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A3"))).FormulaR1C1 = "Zubehör";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A4"))).FormulaR1C1 = "Reparaturen";
((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A5"))).FormulaR1C1 = "Kleidung";
((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";
//Festlegen des Diagrammtitels
ppChart.ChartTitle.Font.Italic = true;
ppChart.ChartTitle.Text = "Verkäufe 2007";
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();
//Zugriff auf die Wertachse des Diagramms
Microsoft.Office.Interop.PowerPoint.Axis valaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlValue, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);
//Festlegen der Werte für die Achsen
valaxis.MajorUnit = 2000.0F;
valaxis.MinorUnit = 1000.0F;
valaxis.MinimumScale = 0.0F;
valaxis.MaximumScale = 4000.0F;
//Zugriff auf die Tiefenachse des Diagramms
Microsoft.Office.Interop.PowerPoint.Axis Depthaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlSeriesAxis, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);
Depthaxis.Delete();
//Festlegen der Diagrammrotation
ppChart.Rotation = 20; //Y-Wert
ppChart.Elevation = 15; //X-Wert
ppChart.RightAngleAxes = false;
// Speichern Sie die Präsentation als PPTX
objPres.SaveAs("VSTOSampleChart", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue);
//Schließen Sie die Arbeitsmappe und die Präsentation
dataWorkbook.Application.Quit();
objPres.Application.Quit();
}
//Zusätzliche Methoden
public static void StartPowerPoint()
{
objPPT = new Microsoft.Office.Interop.PowerPoint.Application();
objPPT.Visible = MsoTriState.msoTrue;
// objPPT.WindowState = PowerPoint.PpWindowState.ppWindowMaximized
}
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;
//
//Versuchen Sie, auf die Namenseigenschaft zuzugreifen. Wenn dies eine Ausnahme verursacht,
//starten Sie eine neue Instanz von PowerPoint
try
{
strName = objPPT.Name;
}
catch (Exception ex)
{
StartPowerPoint();
}
//
//blnAddPresentation wird verwendet, um sicherzustellen, dass eine Präsentation geladen ist
if (blnAddPresentation == true)
{
try
{
strName = objPres.Name;
}
catch (Exception ex)
{
objPres = objPPT.Presentations.Add(MsoTriState.msoTrue);
}
}
//
//BlnAddSlide wird verwendet, um sicherzustellen, dass sich mindestens eine Folie in der
//Präsentation befindet
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
Mit Aspose.Slides für .NET werden die folgenden Schritte ausgeführt:
- Erstellen Sie eine Instanz einer Microsoft PowerPoint-Präsentation.
- Fügen Sie eine leere Folie zur Präsentation hinzu.
- Fügen Sie ein 3D gruppiertes Säulendiagramm hinzu und greifen Sie darauf zu.
- Greifen Sie auf das Diagrammdatenarbeitsblatt über eine Microsoft Excel-Arbeitsmappeninstanz zu.
- Entfernen Sie die ungenutzten Serien 2 und 3.
- Greifen Sie auf die Diagrammkategorien zu und ändern Sie die Beschriftungen.
- Greifen Sie auf die Serie 1 zu und ändern Sie die Serienwerte.
- Greifen Sie nun auf den Diagrammtitel zu und legen Sie die Schriftarteigenschaften fest.
- Greifen Sie auf die Wertachse des Diagramms zu und legen Sie die Haupt- und Nebenwerte, den Maximal- und Minimalwert fest.
- Legen Sie nun die Rotationswinkel des Diagramms in X- und Y-Richtung fest.
- Speichern Sie die Präsentation im PPTX-Format.
public static void GEN_ASPOSE_Chart()
{
//Erstellen Sie eine leere Präsentation
using (PresentationEx pres = new PresentationEx())
{
//Zugriff auf die erste Folie
SlideEx slide = pres.Slides[0];
//Hinzufügen des Standarddiagramms
ChartEx ppChart = slide.Shapes.AddChart(ChartTypeEx.ClusteredColumn3D, 20F, 30F, 400F, 300F);
//Diagrammdaten abrufen
ChartDataEx chartData = ppChart.ChartData;
//Entfernen zusätzlicher Standardserien
chartData.Series.RemoveAt(1);
chartData.Series.RemoveAt(1);
//Ändern der Namen der Diagrammkategorien
chartData.Categories[0].ChartDataCell.Value = "Fahrräder";
chartData.Categories[1].ChartDataCell.Value = "Zubehör";
chartData.Categories[2].ChartDataCell.Value = "Reparaturen";
chartData.Categories[3].ChartDataCell.Value = "Kleidung";
//Ändern der Diagrammserienwerte für die erste Kategorie
chartData.Series[0].Values[0].Value = 1000;
chartData.Series[0].Values[1].Value = 2500;
chartData.Series[0].Values[2].Value = 4000;
chartData.Series[0].Values[3].Value = 3000;
//Festlegen des Diagrammtitels
ppChart.HasTitle = true;
ppChart.ChartTitle.Text.Text = "Verkäufe 2007";
PortionFormatEx format = ppChart.ChartTitle.Text.Paragraphs[0].Portions[0].PortionFormat;
format.FontItalic = NullableBool.True;
format.FontHeight = 18;
format.FillFormat.FillType = FillTypeEx.Solid;
format.FillFormat.SolidFillColor.Color = Color.Black;
//Festlegen der Achswerte
ppChart.ValueAxis.IsAutomaticMaxValue = false;
ppChart.ValueAxis.IsAutomaticMinValue = false;
ppChart.ValueAxis.IsAutomaticMajorUnit = false;
ppChart.ValueAxis.IsAutomaticMinorUnit = false;
ppChart.ValueAxis.MaxValue = 4000.0F;
ppChart.ValueAxis.MinValue = 0.0F;
ppChart.ValueAxis.MajorUnit = 2000.0F;
ppChart.ValueAxis.MinorUnit = 1000.0F;
ppChart.ValueAxis.TickLabelPosition = TickLabelPositionType.NextTo;
//Festlegen der Diagrammrotation
ppChart.Rotation3D.RotationX = 15;
ppChart.Rotation3D.RotationY = 20;
//Speichern der Präsentation
pres.Write("AsposeSampleChart.pptx");
}