Diagram munkafüzetek kezelése prezentációkban Python segítségével
Áttekintés
Ez a cikk elmagyarázza, hogyan dolgozhatunk diagrammunnevekkel (chart workbooks) az Aspose.Slides-ben. Bemutatja, hogyan lehet olvasni és írni diagramadatokat munkafüzet‑folyamokon keresztül, a munkafüzet‑cellákat diagramadat‑címkeként használni, a munkalap‑gyűjteményekhez hozzáférni, valamint a diagramértékek adatforrás‑típusát megadni.
Továbbá kitér a külső munkafüzetek diagramadat‑forrásként való használatára. A példák bemutatják, hogyan hozhatunk létre és rendelhetünk hozzá egy külső munkafüzetet, hogyan kérhetjük le egy diagramhoz csatolt külső munkafüzet útvonalát, és hogyan szerkeszthetünk diagramadatokat, ha a munkafüzet elérhető.
Diagramadatok olvasása és írása munkafüzetből
Az Aspose.Slides módszereket biztosít a diagramadat‑munkafüzetek (amelyek Aspose.Cells‑szel szerkesztett diagramadatokat tartalmaznak) olvasására és írására. Megjegyzés: A diagramadatoknak ugyanúgy kell szervezve lenniük, vagy hasonló struktúrával kell rendelkezniük, mint a forrás.
Az alábbi Python‑kód egy minta műveletet mutat be:
import aspose.slides as slides
with slides.Presentation("chart.pptx") as presentation:
chart = presentation.slides[0].shapes[0]
data_stream = chart.chart_data.read_workbook_stream()
chart.chart_data.series.clear()
chart.chart_data.categories.clear()
data_stream.seek(0)
chart.chart_data.write_workbook_stream(data_stream)
WorkBook cellát beállítani diagramadat‑címkeként
Néha olyan diagramcímkékre van szükség, amelyek közvetlenül a mögöttes adatmunkafüzet celláiból származnak. Az Aspose.Slides lehetővé teszi, hogy adatcímkéket konkrét munkafüzet‑cellákhoz kötve a címke szövege mindig a cella értékét tükrözze. Az alábbi példa megmutatja, hogyan engedélyezhetők cella‑érték‑címkék, és hogyan irányíthatók a kiválasztott címkék egyéni cellákra a diagram munkafüzetében.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen hivatkozást a diára index alapján.
- Adjon hozzá egy buborékdiagramot mintaadatokkal.
- Hozzáférés a diagram sorozatokhoz.
- Használjon munkafüzet‑cellát adatcímkeként.
- Mentse el a prezentációt.
Az alábbi Python‑kód megmutatja, hogyan állítható be egy munkafüzet‑cellát diagramadat‑címkeként:
import aspose.slides as slides
import aspose.slides.charts as charts
# Létrehozza a Presentation osztályt, amely egy prezentációs fájlt képvisel.
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.BUBBLE, 50, 50, 600, 400, True)
series = chart.chart_data.series[0]
series.labels.default_data_label_format.show_label_value_from_cell = True
workbook = chart.chart_data.chart_data_workbook
series.labels[0].value_from_cell = workbook.get_cell(0, "A10", "Label 0")
series.labels[1].value_from_cell = workbook.get_cell(0, "A11", "Label 1")
series.labels[2].value_from_cell = workbook.get_cell(0, "A12", "Label 2")
presentation.save("chart.pptx", slides.export.SaveFormat.PPTX)
Munkalapok kezelése
Az alábbi Python‑kód bemutatja, hogyan használhatja a worksheets tulajdonságot a munkalap‑gyűjtemény eléréséhez:
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.PIE, 50, 50, 400, 500)
workbook = chart.chart_data.chart_data_workbook
for i in range(len(workbook.worksheets)):
print(workbook.worksheets[i].name)
Az adatforrás típusának megadása
Az alábbi Python‑kód megmutatja, hogyan adható meg egy adatforrás‑típus:
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.COLUMN_3D, 50, 50, 600, 400, True)
series_name = chart.chart_data.series[0].name
series_name.data_source_type = slides.charts.DataSourceType.STRING_LITERALS
series_name.data = "LiteralString"
series_name = chart.chart_data.series[1].name
series_name.data = chart.chart_data.chart_data_workbook.get_cell(0, "B1", "NewCell")
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Nem támogatott beágyazott munkafüzet‑formátumok felismerése
Az Aspose.Slides nem támogatja az Excel bináris munkafüzet (.xlsb) formátumot, amely néhány diagramba beágyazható. Használhatja az embedded_workbook_type tulajdonságot a ChartData osztályon, együtt a WorkbookType felsorolással, hogy felismerje a nem támogatott formátumokat, és kihagyja az érintett diagramokat.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if not isinstance(shape, charts.Chart):
continue
chart = shape
chart_data = chart.chart_data
if (chart_data.data_source_type == charts.ChartDataSourceType.INTERNAL_WORKBOOK and
chart_data.embedded_workbook_type == charts.WorkbookType.WORKBOOK_BINARY_MACRO):
# Beágyazott munkafüzet .xlsb formátumban van, amely nem támogatott.
continue
# Itt olvassa vagy módosíthatja a diagram munkafüzet adatait.
Külső munkafüzetek
Az Aspose.Slides támogatja a külső munkafüzetek diagramok adatforrásként való használatát.
Külső munkafüzetek beállítása
A ChartData.set_external_workbook metódus használatával egy külső munkafüzetet rendelhet egy diagramhoz adatforrásként. Ez a metódus frissítheti a külső munkafüzet útvonalát is, ha az áthelyezésre kerül.
Bár nem szerkesztheti a távoli helyeken vagy erőforrásokban tárolt munkafüzetek adatait, továbbra is használhatja ezeket külső adatforrásként. Ha relatív útvonalat ad meg egy külső munkafüzethez, az automatikusan teljes útvonallá konvertálódik.
Az alábbi Python‑kód megmutatja, hogyan állítható be egy külső munkafüzet:
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.PIE, 50, 50, 400, 600, False)
chart.chart_data.set_external_workbook("external_workbook.xlsx")
presentation.save("chart_with_external_workbook.pptx", slides.export.SaveFormat.PPTX)
A update_chart_data paraméter a set_external_workbook metódusban határozza meg, hogy az Excel‑munkafüzet betöltődjön‑e.
- Ha
update_chart_dataértékeFalse, csak a munkafüzet útvonala frissül; a diagramadatok nem töltődnek be vagy frissülnek a célmunkafüzetből. Ezt a beállítást akkor használja, ha a célmunkafüzet nem létezik vagy nem érhető el. - Ha
update_chart_dataértékeTrue, a diagramadatok beolvasásra és frissítésre kerülnek a célmunkafüzetből.
Külső munkafüzetek létrehozása
A read_workbook_stream és a set_external_workbook metódusok használatával vagy egy új külső munkafüzetet hozhat létre teljesen vagy egy belső munkafüzetet alakíthat át külsővé.
Ez a Python‑kód bemutatja a külső munkafüzet létrehozási folyamatát:
import pathlib
import aspose.slides as slides
import aspose.slides.charts as charts
workbook_path = "external_workbook.xlsx"
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.PIE, 50, 50, 400, 600)
workbook_data = chart.chart_data.read_workbook_stream().read()
with open(workbook_path, "wb") as file_stream:
file_stream.write(workbook_data)
full_path = str(pathlib.Path(workbook_path).resolve())
chart.chart_data.set_external_workbook(full_path)
presentation.save("chart_with_external_workbook.pptx", slides.export.SaveFormat.PPTX)
A diagram külső adatforrás‑munkafüzete útvonalának lekérdezése
Néha a diagram adatai egy külső Excel‑munkafüzethez vannak csatolva a prezentáció beágyazott adatai helyett. Az Aspose.Slides segítségével ellenőrizheti a diagram adatforrását, és ha külső munkafüzetről van szó, kiolvashatja a teljes munkafüzet‑útvonalat.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezzen hivatkozást a diára index szerint.
- Szerezzen hivatkozást a diagram alakzatára.
- Szerezze meg a forrást (ChartDataSourceType), amely a diagram adatforrását képviseli.
- Ellenőrizze, hogy a forrástípus egyezik‑e a külső munkafüzettel.
Az alábbi Python‑kód bemutatja a műveletet:
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation("chart_with_external_workbook.pptx") as presentation:
chart = presentation.slides[0].shapes[0]
source_type = chart.chart_data.data_source_type
if source_type == charts.ChartDataSourceType.EXTERNAL_WORKBOOK:
print(chart.chart_data.external_workbook_path)
Diagramadatok szerkesztése
A külső munkafüzetek adatait ugyanúgy szerkesztheti, mint a belső munkafüzetekét. Ha egy külső munkafüzet nem tölthető be, kivétel keletkezik.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
chart = presentation.slides[0].shapes[0]
chart.chart_data.series[0].data_points[0].value.as_cell.value = 100
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
GYIK
Meg tudom határozni, hogy egy adott diagram külső vagy beágyazott munkafüzettel van‑e összekötve?
Igen. A diagramnak van egy data source type és egy path to an external workbook; ha a forrás egy külső munkafüzet, leolvashatja a teljes útvonalat, hogy megbizonyosodjon arról, külső fájlt használ‑e.
Támogatottak‑e a relatív útvonalak külső munkafüzetekhez, és hogyan tárolódnak?
Igen. Ha relatív útvonalat ad meg, az automatikusan átalakul abszolút útvonallá. Ez a projekt hordozhatóságát segíti; azonban vegye figyelembe, hogy a prezentáció az abszolút útvonalat tárolja a PPTX‑fájlban.
Használhatok‑e munkafüzeteket hálózati erőforrásokon/megosztott meghajtókon?
Igen, ilyen munkafüzetek használhatók külső adatforrásként. Azonban a távoli munkafüzetek közvetlen szerkesztése az Aspose.Slides‑ból nem támogatott – csak forrásként használhatók.
Az Aspose.Slides felülírja‑e a külső XLSX‑et a prezentáció mentésekor?
Nem. A prezentáció egy link to the external file tárol, és ezt használja az adatok olvasásához. A külső fájl maga nem módosul a prezentáció mentésekor.
Mit tegyek, ha a külső fájl jelszó‑védett?
Az Aspose.Slides nem fogad el jelszót a hivatkozáskor. Általános megoldás, hogy a védelmet előzetesen eltávolítja, vagy egy visszafejtett másolatot (például a Aspose.Cells használatával) készít, és arra hivatkozik.
Több diagram hivatkozhat ugyanarra a külső munkafüzetre?
Igen. Minden diagram a saját hivatkozását tárolja. Ha mindegyik ugyanarra a fájlra mutat, a fájl frissítése minden diagramon megjelenik a következő adatbetöltéskor.