Diagramm Arbeitsmappe

Diagrammdaten aus Arbeitsmappe festlegen

Aspose.Slides bietet die Methoden ReadWorkbookStream und WriteWorkbookStream, die es Ihnen ermöglichen, Diagrammdaten-Arbeitsmappen (die Diagrammdaten enthalten, die mit Aspose.Cells bearbeitet wurden) zu lesen und zu schreiben. Hinweis: Die Diagrammdaten müssen in der gleichen Weise organisiert sein oder eine ähnliche Struktur wie die Quelle haben.

Dieser Java-Code zeigt einen Beispielvorgang:

Presentation pres = new Presentation("chart.pptx");
try {
    Chart chart = (Chart) pres.getSlides().get_Item(0).getShapes().get_Item(0);
    IChartData data = chart.getChartData();

    byte[] stream = data.readWorkbookStream();

    data.getSeries().clear();
    data.getCategories().clear();

    data.writeWorkbookStream(stream);
} finally {
    if (pres != null) pres.dispose();
}

Arbeitsmappen-Zelle als Diagramm-Datenbeschriftung festlegen

  1. Erstellen Sie eine Instanz der Presentation Klasse.
  2. Erhalten Sie die Referenz einer Folie über ihren Index.
  3. Fügen Sie ein Blasendiagramm mit Daten hinzu.
  4. Greifen Sie auf die Diagrammserie zu.
  5. Legen Sie die Arbeitsmappen-Zelle als Datenbeschriftung fest.
  6. Speichern Sie die Präsentation.

Dieser Java-Code zeigt, wie Sie eine Arbeitsmappen-Zelle als Diagramm-Datenbeschriftung festlegen:

String lbl0 = "Label 0 Zellwert";
String lbl1 = "Label 1 Zellwert";
String lbl2 = "Label 2 Zellwert";

// Erstellt eine Instanz der Präsentationsklasse, die eine Präsentationsdatei darstellt
Presentation pres = new Presentation("chart2.pptx");
try {
    ISlide slide = pres.getSlides().get_Item(0);
    IChart chart = slide.getShapes().addChart(ChartType.Bubble, 50, 50, 600, 400, true);
    IChartSeriesCollection series = chart.getChartData().getSeries();
    
    IDataLabelCollection dataLabelCollection = series.get_Item(0).getLabels();
    dataLabelCollection.getDefaultDataLabelFormat().setShowLabelValueFromCell(true);

    IChartDataWorkbook wb = chart.getChartData().getChartDataWorkbook();

    dataLabelCollection.get_Item(0).setValueFromCell(wb.getCell(0, "A10", lbl0));
    dataLabelCollection.get_Item(1).setValueFromCell(wb.getCell(0, "A11", lbl1));
    dataLabelCollection.get_Item(2).setValueFromCell(wb.getCell(0, "A12", lbl2));

    pres.save("resultchart.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Arbeitsblätter verwalten

Dieser Java-Code demonstriert einen Vorgang, bei dem die Methode IChartDataWorkbook.Worksheets verwendet wird, um auf eine Arbeitsblattkollektion zuzugreifen:

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 500);
    IChartDataWorkbook wb =  chart.getChartData().getChartDataWorkbook();
    for (int i = 0; i < wb.getWorksheets().size(); i++)
        System.out.println(wb.getWorksheets().get_Item(i).getName());
} finally {
    if (pres != null) pres.dispose();
}

Datentyp für Datenquelle angeben

Dieser Java-Code zeigt Ihnen, wie Sie einen Typ für eine Datenquelle angeben:

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Column3D, 50, 50, 600, 400, true);
    IStringChartValue val = chart.getChartData().getSeries().get_Item(0).getName();

    val.setDataSourceType(DataSourceType.StringLiterals);
    val.setData("LiteralString");

    val = chart.getChartData().getSeries().get_Item(1).getName();
    val.setData(chart.getChartData().getChartDataWorkbook().getCell(0, "B1", "NewCell"));

    pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Externe Arbeitsmappe

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 Java-Code demonstriert den Prozess der Erstellung einer externen Arbeitsmappe:

Presentation pres = new Presentation();
try {
    final String workbookPath = "externalWorkbook1.xlsx";

    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 600);
    FileOutputStream fileStream = new FileOutputStream(workbookPath);
    try {
        byte[] workbookData = chart.getChartData().readWorkbookStream();
        fileStream.write(workbookData, 0, workbookData.length);
    } finally {
        if (fileStream != null) fileStream.close();
    }

    chart.getChartData().setExternalWorkbook(workbookPath);

    pres.save("externalWorkbook.pptx", SaveFormat.Pptx);
} catch (IOException e) {    
} finally {
    if (pres != null) pres.dispose();
}

Externe Arbeitsmappe festlegen

Mit der Methode setExternalWorkbook können Sie einer Diagramm ein externes Arbeitsblatt als Datenquelle zuweisen. Diese Methode kann auch verwendet werden, um einen Pfad zur externen Arbeitsmappe zu aktualisieren (wenn diese verschoben wurde).

Obwohl Sie die Daten in Arbeitsmappen, die an Remote-Standorten oder Ressourcen gespeichert sind, nicht bearbeiten können, können Sie solche Arbeitsmappen weiterhin als externe Datenquelle verwenden. Wenn der relative Pfad für eine externe Arbeitsmappe angegeben wird, wird er automatisch in einen vollständigen Pfad umgewandelt.

Dieser Java-Code zeigt Ihnen, wie Sie eine externe Arbeitsmappe festlegen:

// Erstellt eine Instanz der Präsentationsklasse
Presentation pres = new Presentation("chart.pptx");
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 600, false);
    IChartData chartData = chart.getChartData();

    chartData.setExternalWorkbook("externalWorkbook.xlsx");

    chartData.getSeries().add(chartData.getChartDataWorkbook().getCell(0, "B1"), ChartType.Pie);
    chartData.getSeries().get_Item(0).getDataPoints().addDataPointForPieSeries(chartData.getChartDataWorkbook().getCell(0, "B2"));
    chartData.getSeries().get_Item(0).getDataPoints().addDataPointForPieSeries(chartData.getChartDataWorkbook().getCell(0, "B3"));
    chartData.getSeries().get_Item(0).getDataPoints().addDataPointForPieSeries(chartData.getChartDataWorkbook().getCell(0, "B4"));

    chartData.getCategories().add(chartData.getChartDataWorkbook().getCell(0, "A2"));
    chartData.getCategories().add(chartData.getChartDataWorkbook().getCell(0, "A3"));
    chartData.getCategories().add(chartData.getChartDataWorkbook().getCell(0, "A4"));
    
    pres.save("Presentation_with_externalWorkbook.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Der ChartData-Parameter (unter der Methode setExternalWorkbook) wird verwendet, um anzugeben, ob eine Excel-Arbeitsmappe geladen wird oder nicht.

  • Wenn der Wert ChartData auf false gesetzt wird, wird nur der Arbeitsmappe-Pfad aktualisiert – die Diagrammdaten werden nicht aus der Zielarbeitsmappe geladen oder aktualisiert. Sie möchten diese Einstellung möglicherweise verwenden, wenn Sie sich in einer Situation befinden, in der die Zielarbeitsmappe nicht existiert oder nicht verfügbar ist.
  • Wenn der Wert ChartData auf true gesetzt wird, werden die Diagrammdaten aus der Zielarbeitsmappe aktualisiert.
// Erstellt eine Instanz der Präsentationsklasse
Presentation pres = new Presentation("chart.pptx");
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 600, true);
    IChartData chartData = chart.getChartData();

    ((ChartData)chartData).setExternalWorkbook("http://path/doesnt/exists", false);

    pres.save("Presentation_with_externalWorkbookWithUpdateChartData.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Pfad zur externen Datenquelle des Diagramms abrufen

  1. Erstellen Sie eine Instanz der Presentation Klasse.
  2. Erhalten Sie die Referenz einer Folie über ihren Index.
  3. Erstellen Sie ein Objekt für die Diagrammform.
  4. Erstellen Sie ein Objekt für den Quelltyp (ChartDataSourceType), das die Datenquelle des Diagramms darstellt.
  5. Geben Sie die entsprechende Bedingung an, basierend auf dem Quelltyp, der der externen Arbeitsmappen-Datenquelle entspricht.

Dieser Java-Code demonstriert den Vorgang:

// Erstellt eine Instanz der Präsentationsklasse
Presentation pres = new Presentation("chart.pptx");
try {
    ISlide slide = pres.getSlides().get_Item(1);
    IChart chart = (IChart)slide.getShapes().get_Item(0);
    int sourceType = chart.getChartData().getDataSourceType();
    
    if (sourceType == ChartDataSourceType.ExternalWorkbook)
    {
        String path = chart.getChartData().getExternalWorkbookPath();
    }
	
	// Speichert die Präsentation
    pres.save("result.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Diagrammdaten bearbeiten

Sie können die Daten in externen Arbeitsmappen auf die gleiche Weise bearbeiten, wie Sie Änderungen an den Inhalten interner Arbeitsmappen vornehmen. Wenn eine externe Arbeitsmappe nicht geladen werden kann, wird eine Ausnahme ausgelöst.

Dieser Java-Code ist eine Implementierung des beschriebenen Prozesses:

// Erstellt eine Instanz der Präsentationsklasse
Presentation pres = new Presentation("chart.pptx");
try {
    IChart chart = (IChart)pres.getSlides().get_Item(0).getShapes().get_Item(0);
    ChartData chartData = (ChartData)chart.getChartData();
    
    chartData.getSeries().get_Item(0).getDataPoints().get_Item(0).getValue().getAsCell().setValue(100);
    
    pres.save("presentation_out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}