Diagramm-Arbeitsmappen in Präsentationen in .NET verwalten
Diagrammdaten aus einer Arbeitsmappe lesen und schreiben
Aspose.Slides stellt die Methoden ReadWorkbookStream und WriteWorkbookStream bereit, mit denen Sie Diagramm‑Datenarbeitsmappen lesen und schreiben können (die Diagrammdaten, die mit Aspose.Cells bearbeitet wurden). Hinweis: Die Diagrammdaten müssen auf die gleiche Weise organisiert sein oder eine Struktur haben, die der Quelle ähnlich ist.
Dieser C#‑Code demonstriert eine Beispieloperation:
using (Presentation pres = new Presentation("chart.pptx"))
{
Chart chart = (Chart) pres.Slides[0].Shapes[0];
IChartData data = chart.ChartData;
MemoryStream stream = data.ReadWorkbookStream();
data.Series.Clear();
data.Categories.Clear();
stream.Position = 0;
data.WriteWorkbookStream(stream);
}
Eine Arbeitsmappenzelle als Diagrammdatenbeschriftung festlegen
- Erstellen Sie eine Instanz der Presentation Klasse.
- Rufen Sie die Referenz einer Folie über ihren Index ab.
- Fügen Sie ein Bubble‑Diagramm mit einigen Daten hinzu.
- Greifen Sie auf die Diagrammserie zu.
- Setzen Sie die Arbeitsmappenzelle als Datenbeschriftung.
- Speichern Sie die Präsentation.
Dieser C#‑Code zeigt, wie Sie eine Arbeitsmappenzelle als Diagrammdatenbeschriftung festlegen:
string lbl0 = "Label 0 cell value";
string lbl1 = "Label 1 cell value";
string lbl2 = "Label 2 cell value";
// Instanziiert eine Präsentationsklasse, die eine Präsentationsdatei darstellt
using (Presentation pres = new Presentation("chart2.pptx"))
{
ISlide slide = pres.Slides[0];
IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Bubble, 50, 50, 600, 400, true);
IChartSeriesCollection series = chart.ChartData.Series;
series[0].Labels.DefaultDataLabelFormat.ShowLabelValueFromCell = true;
IChartDataWorkbook wb = chart.ChartData.ChartDataWorkbook;
series[0].Labels[0].ValueFromCell = wb.GetCell(0, "A10", lbl0);
series[0].Labels[1].ValueFromCell = wb.GetCell(0, "A11", lbl1);
series[0].Labels[2].ValueFromCell = wb.GetCell(0, "A12", lbl2);
pres.Save("resultchart.pptx", Aspose.Slides.Export.SaveFormat.Pptx);
}
Arbeitsblätter verwalten
Dieser C#‑Code demonstriert einen Vorgang, bei dem die Eigenschaft IChartDataWorkbook.Worksheets verwendet wird, um auf eine Arbeitsblattsammlung zuzugreifen:
using (Presentation pres = new Presentation())
{
IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Pie, 50, 50, 400, 500);
IChartDataWorkbook wb = chart.ChartData.ChartDataWorkbook;
for (int i = 0; i < wb.Worksheets.Count; i++)
Console.WriteLine(wb.Worksheets[i].Name);
}
Den Datentyp der Datenquelle angeben
Dieser C#‑Code zeigt, wie Sie einen Typ für eine Datenquelle angeben:
using (Presentation pres = new Presentation())
{
IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Column3D, 50, 50, 600, 400, true);
IStringChartValue val = chart.ChartData.Series[0].Name;
val.DataSourceType = DataSourceType.StringLiterals;
val.Data = "LiteralString";
val = chart.ChartData.Series[1].Name;
val.Data = chart.ChartData.ChartDataWorkbook.GetCell(0, "B1", "NewCell");
pres.Save("pres.pptx", SaveFormat.Pptx);
}
Externe Arbeitsmappe
Eine externe Arbeitsmappe erstellen
Mit den Methoden ReadWorkbookStream und SetExternalWorkbook können Sie entweder eine externe Arbeitsmappe von Grund auf neu erstellen oder eine interne Arbeitsmappe extern machen.
Dieser C#‑Code demonstriert den Erstellungsprozess einer externen Arbeitsmappe:
using (Presentation pres = new Presentation())
{
const string workbookPath = "externalWorkbook1.xlsx";
IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Pie, 50, 50, 400, 600);
using (FileStream fileStream = new FileStream(workbookPath, FileMode.Create))
{
byte[] workbookData = chart.ChartData.ReadWorkbookStream().ToArray();
fileStream.Write(workbookData, 0, workbookData.Length);
}
chart.ChartData.SetExternalWorkbook(Path.GetFullPath(workbookPath));
pres.Save("externalWorkbook.pptx", SaveFormat.Pptx);
}
Eine externe Arbeitsmappe festlegen
Mit der Methode SetExternalWorkbook können Sie einer Diagramm ein externes Arbeitsbuch als Datenquelle zuweisen. Diese Methode kann auch verwendet werden, um den Pfad zum externen Arbeitsbuch zu aktualisieren (falls letzteres verschoben wurde).
Obwohl Sie die Daten in Arbeitsmappen, die an entfernten Speicherorten oder Ressourcen gespeichert sind, nicht bearbeiten können, können Sie solche Arbeitsmappen dennoch als externe Datenquelle verwenden. Wird ein relativer Pfad für eine externe Arbeitsmappe angegeben, wird er automatisch in einen vollständigen Pfad konvertiert.
Dieser C#‑Code zeigt, wie Sie eine externe Arbeitsmappe festlegen:
// Der Pfad zum Dokumentenverzeichnis.
using (Presentation pres = new Presentation())
{
IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Pie, 50, 50, 400, 600, false);
IChartData chartData = chart.ChartData;
chartData.SetExternalWorkbook(Path.GetFullPath("externalWorkbook.xlsx"));
chartData.Series.Add(chartData.ChartDataWorkbook.GetCell(0, "B1"), ChartType.Pie);
chartData.Series[0].DataPoints.AddDataPointForPieSeries(chartData.ChartDataWorkbook.GetCell(0, "B2"));
chartData.Series[0].DataPoints.AddDataPointForPieSeries(chartData.ChartDataWorkbook.GetCell(0, "B3"));
chartData.Series[0].DataPoints.AddDataPointForPieSeries(chartData.ChartDataWorkbook.GetCell(0, "B4"));
chartData.Categories.Add(chartData.ChartDataWorkbook.GetCell(0, "A2"));
chartData.Categories.Add(chartData.ChartDataWorkbook.GetCell(0, "A3"));
chartData.Categories.Add(chartData.ChartDataWorkbook.GetCell(0, "A4"));
pres.Save("Presentation_with_externalWorkbook.pptx", SaveFormat.Pptx);
}
Der Parameter ChartData (unter der Methode SetExternalWorkbook) wird verwendet, um anzugeben, ob eine Excel‑Arbeitsmappe geladen werden soll oder nicht.
- Wenn
ChartDataauffalsegesetzt ist, wird nur der Pfad zur Arbeitsmappe aktualisiert – die Diagrammdaten werden nicht aus der Zielarbeitsmappe geladen oder aktualisiert. Diese Einstellung kann nützlich sein, wenn die Zielarbeitsmappe nicht existiert oder nicht verfügbar ist. - Wenn
ChartDataauftruegesetzt ist, werden die Diagrammdaten aus der Zielarbeitsmappe aktualisiert.
using (Presentation pres = new Presentation())
{
IChart chart = pres.Slides[0].Shapes.AddChart(ChartType.Pie, 50, 50, 400, 600, true);
IChartData chartData = chart.ChartData;
(chartData as ChartData).SetExternalWorkbook("http://path/doesnt/exists", false);
pres.Save("SetExternalWorkbookWithUpdateChartData.pptx", SaveFormat.Pptx);
}
Den Pfad der externen Datenquellen‑Arbeitsmappe eines Diagramms abrufen
- Erstellen Sie eine Instanz der Presentation‑Klasse.
- Rufen Sie die Referenz einer Folie über ihren Index ab.
- Erstellen Sie ein Objekt für die Diagrammform.
- Erstellen Sie ein Objekt für den Quelltyp (
ChartDataSourceType), das die Datenquelle des Diagramms darstellt. - Geben Sie die passende Bedingung an, basierend darauf, dass der Quelltyp dem Typ der externen Arbeitsmappen‑Datenquelle entspricht.
Dieser C#‑Code demonstriert den Vorgang:
using (Presentation pres = new Presentation("pres.pptx"))
{
ISlide slide = pres.Slides[1];
IChart chart = (IChart)slide.Shapes[0];
ChartDataSourceType sourceType = chart.ChartData.DataSourceType;
if (sourceType == ChartDataSourceType.ExternalWorkbook)
{
string path = chart.ChartData.ExternalWorkbookPath;
}
// Speichert die Präsentation
pres.Save("Result.pptx", SaveFormat.Pptx);
}
Diagrammdaten bearbeiten
Sie können die Daten in externen Arbeitsmappen auf dieselbe Weise bearbeiten, wie Sie Änderungen an internen Arbeitsmappen vornehmen. Wenn eine externe Arbeitsmappe nicht geladen werden kann, wird eine Ausnahme ausgelöst.
using (Presentation pres = new Presentation("presentation.pptx"))
{
IChart chart = pres.Slides[0].Shapes[0] as IChart;
ChartData chartData = (ChartData)chart.ChartData;
chartData.Series[0].DataPoints[0].Value.AsCell.Value = 100;
pres.Save("presentation_out.pptx", SaveFormat.Pptx);
}
FAQ
Kann ich feststellen, ob ein bestimmtes Diagramm mit einer externen oder eingebetteten Arbeitsmappe verknüpft ist?
Ja. Ein Diagramm verfügt über einen Datenquellentyp und einen Pfad zu einer externen Arbeitsmappe; ist die Quelle eine externe Arbeitsmappe, können Sie den vollständigen Pfad auslesen, um sicherzustellen, dass eine externe Datei verwendet wird.
Werden relative Pfade zu externen Arbeitsmappen unterstützt und wie werden sie gespeichert?
Ja. Wenn Sie einen relativen Pfad angeben, wird er automatisch in einen absoluten Pfad umgewandelt. Das ist praktisch für die Portabilität von Projekten; beachten Sie jedoch, dass die Präsentation den absoluten Pfad in der PPTX‑Datei speichert.
Kann ich Arbeitsmappen verwenden, die sich auf Netzwerkressourcen/Freigaben befinden?
Ja, solche Arbeitsmappen können als externe Datenquelle verwendet werden. Das direkte Bearbeiten von entfernten Arbeitsmappen über Aspose.Slides wird jedoch nicht unterstützt – sie können nur als Quelle dienen.
Überschreibt Aspose.Slides die externe XLSX beim Speichern der Präsentation?
Nein. Die Präsentation speichert einen Link zur externen Datei und verwendet ihn zum Lesen von Daten. Die externe Datei selbst wird beim Speichern der Präsentation nicht verändert.
Was soll ich tun, wenn die externe Datei durch ein Passwort geschützt ist?
Aspose.Slides akzeptiert kein Passwort beim Verknüpfen. Ein gängiger Ansatz ist, den Schutz im Voraus zu entfernen oder eine entschlüsselte Kopie vorzubereiten (z. B. mit Aspose.Cells) und auf diese Kopie zu verlinken.
Können mehrere Diagramme dieselbe externe Arbeitsmappe referenzieren?
Ja. Jedes Diagramm speichert seinen eigenen Link. Wenn alle auf dieselbe Datei verweisen, wird eine Aktualisierung dieser Datei beim nächsten Laden der Daten in jedem Diagramm berücksichtigt.