Tworzenie wykresów przy użyciu VSTO i Aspose.Slides dla .NET
Przegląd
Ten artykuł pokazuje, jak programowo tworzyć i dostosowywać wykresy w prezentacjach Microsoft PowerPoint przy użyciu C#. Dzięki Aspose.Slides dla .NET możesz automatyzować generowanie profesjonalnych, opartych na danych wykresów bez korzystania z Microsoft Office ani bibliotek Interop. API oferuje bogaty zestaw funkcji do tworzenia wykresów kolumnowych, kołowych, liniowych i innych — z pełną kontrolą nad wyglądem, danymi i układem. Niezależnie od tego, czy generujesz raporty, pulpity nawigacyjne czy prezentacje biznesowe, Aspose.Slides pomaga dostarczać wysokiej jakości wizualizacje bezpośrednio z aplikacji .NET.
Przykład VSTO
Ten sekcja demonstruje, jak utworzyć wykres w prezentacji Microsoft PowerPoint przy użyciu VSTO (Visual Studio Tools for Office). Dzięki VSTO możesz programowo generować i dostosowywać wykresy, łącząc automatyzację PowerPointa i Excela. Przykład pokazuje, jak dodać 3D wykres kolumnowy grupowany, wypełnić go danymi z arkusza Excel, dostosować formatowanie i układ oraz zapisać końcową prezentację — wszystko z poziomu aplikacji .NET.
- Utwórz instancję prezentacji Microsoft PowerPoint.
- Dodaj pusty slajd do prezentacji.
- Dodaj wykres kolumnowy grupowany 3D i uzyskaj do niego dostęp.
- Utwórz nową instancję skoroszytu Microsoft Excel i załaduj dane wykresu.
- Uzyskaj dostęp do arkusza danych wykresu przy użyciu instancji skoroszytu Excel.
- Ustaw zakres wykresu w arkuszu i usuń serie 2 i 3 z wykresu.
- Zmodyfikuj dane kategorii wykresu w arkuszu danych wykresu.
- Zmodyfikuj dane serii 1 w arkuszu danych wykresu.
- Uzyskaj dostęp do tytułu wykresu i ustaw jego właściwości czcionki.
- Uzyskaj dostęp do osi wartości wykresu i ustaw jednostkę główną, jednostkę podrzędną, wartość maksymalną i minimalną.
- Uzyskaj dostęp do osi głębokości (serii) wykresu i usuń ją — w tym przykładzie używana jest tylko jedna seria.
- Ustaw kąty obrotu wykresu w kierunkach X i Y.
- Zapisz prezentację.
- Zamknij instancje Microsoft Excel i PowerPoint.
EnsurePowerPointIsRunning(true, true);
// Utwórz obiekt slajdu.
Microsoft.Office.Interop.PowerPoint.Slide objSlide = null;
// Uzyskaj dostęp do pierwszego slajdu prezentacji.
objSlide = objPres.Slides[1];
// Zaznacz pierwszy slajd i ustaw jego układ.
objSlide.Select();
objSlide.Layout = Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutBlank;
// Dodaj domyślny wykres do slajdu.
objSlide.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xl3DColumn, 20, 30, 400, 300);
// Uzyskaj dostęp do dodanego wykresu.
Microsoft.Office.Interop.PowerPoint.Chart ppChart = objSlide.Shapes[1].Chart;
// Uzyskaj dostęp do danych wykresu.
Microsoft.Office.Interop.PowerPoint.ChartData chartData = ppChart.ChartData;
// Utwórz instancję skoroszytu Excel do pracy z danymi wykresu.
Microsoft.Office.Interop.Excel.Workbook dataWorkbook = (Microsoft.Office.Interop.Excel.Workbook)chartData.Workbook;
// Uzyskaj dostęp do arkusza danych wykresu.
Microsoft.Office.Interop.Excel.Worksheet dataSheet = dataWorkbook.Worksheets[1];
// Ustaw zakres danych dla wykresu.
Microsoft.Office.Interop.Excel.Range tRange = dataSheet.Cells.get_Range("A1", "B5");
// Zastosuj określony zakres do tabeli danych wykresu.
Microsoft.Office.Interop.Excel.ListObject tbl1 = dataSheet.ListObjects["Table1"];
tbl1.Resize(tRange);
// Ustaw wartości dla kategorii i odpowiednich danych serii.
((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";
// Ustaw tytuł wykresu.
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();
// Uzyskaj dostęp do osi wartości wykresu.
Microsoft.Office.Interop.PowerPoint.Axis valaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlValue, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);
// Ustaw wartości jednostek osi.
valaxis.MajorUnit = 2000.0F;
valaxis.MinorUnit = 1000.0F;
valaxis.MinimumScale = 0.0F;
valaxis.MaximumScale = 4000.0F;
// Uzyskaj dostęp do osi głębokości wykresu.
Microsoft.Office.Interop.PowerPoint.Axis Depthaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlSeriesAxis, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary);
Depthaxis.Delete();
// Ustaw obrót wykresu.
ppChart.Rotation = 20; // Wartość Y
ppChart.Elevation = 15; // Wartość X
ppChart.RightAngleAxes = false;
// Zapisz prezentację jako plik PPTX.
objPres.SaveAs("VSTO_Sample_Chart.pptx", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue);
// Zamknij skoroszyt i prezentację.
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;
// Spróbuj uzyskać dostęp do własności Name. Jeśli zostanie zgłoszony wyjątek, uruchom nową instancję programu PowerPoint.
try
{
strName = objPPT.Name;
}
catch (Exception ex)
{
StartPowerPoint();
}
// blnAddPresentation jest używane, aby zapewnić, że prezentacja jest załadowana.
if (blnAddPresentation == true)
{
try
{
strName = objPres.Name;
}
catch (Exception ex)
{
objPres = objPPT.Presentations.Add(MsoTriState.msoTrue);
}
}
// blnAddSlide jest używane, aby zapewnić, że w prezentacji znajduje się co najmniej jeden slajd.
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;
}
}
}
Wynik:

Przykład Aspose.Slides dla .NET
Poniższy przykład pokazuje, jak utworzyć prosty wykres w prezentacji PowerPoint przy użyciu Aspose.Slides dla .NET. Ten kod demonstruje, jak dodać 3D wykres kolumnowy grupowany, wypełnić go przykładowymi danymi i dostosować jego wygląd. Dzięki kilku liniom kodu możesz dynamicznie generować wykresy i integrować je w swoich prezentacjach bez użycia Microsoft Office.
- Utwórz instancję klasy Prezentacja.
- Uzyskaj odniesienie do pierwszego slajdu.
- Dodaj wykres kolumnowy grupowany 3D i uzyskaj do niego dostęp.
- Uzyskaj dostęp do danych wykresu.
- Usuń nieużywane Serie 2 i Serie 3.
- Zmodyfikuj kategorie wykresu, aktualizując etykiety.
- Zaktualizuj wartości Serii 1.
- Uzyskaj dostęp do tytułu wykresu i ustaw jego właściwości czcionki.
- Skonfiguruj oś wartości wykresu, w tym jednostkę główną, jednostkę podrzędną, wartości maksymalną i minimalną.
- Ustaw kąty obrotu wykresu na osiach X i Y.
- Zapisz prezentację w formacie PPTX.
// Utwórz pustą prezentację.
using (Presentation presentation = new Presentation())
{
// Uzyskaj dostęp do pierwszego slajdu.
ISlide slide = presentation.Slides[0];
// Dodaj domyślny wykres.
IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn3D, 20, 30, 400, 300);
// Pobierz dane wykresu.
IChartData chartData = chart.ChartData;
// Usuń dodatkowe domyślne serie.
chartData.Series.RemoveAt(1);
chartData.Series.RemoveAt(1);
// Zmień nazwy kategorii wykresu.
chartData.Categories[0].AsCell.Value = "Bikes";
chartData.Categories[1].AsCell.Value = "Accessories";
chartData.Categories[2].AsCell.Value = "Repairs";
chartData.Categories[3].AsCell.Value = "Clothing";
// Ustaw indeks arkusza danych wykresu.
int worksheetIndex = 0;
// Pobierz skoroszyt danych wykresu.
IChartDataWorkbook workbook = chart.ChartData.ChartDataWorkbook;
// Zmień wartości serii wykresu.
chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 1, 1, 1000));
chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 2, 1, 2500));
chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 3, 1, 4000));
chartData.Series[0].DataPoints.AddDataPointForBarSeries(workbook.GetCell(worksheetIndex, 4, 1, 3000));
// Ustaw tytuł wykresu.
chart.HasTitle = true;
chart.ChartTitle.AddTextFrameForOverriding("2007 Sales");
IPortionFormat format = chart.ChartTitle.TextFrameForOverriding.Paragraphs[0].Portions[0].PortionFormat;
format.FontItalic = NullableBool.True;
format.FontHeight = 18;
format.FillFormat.FillType = FillType.Solid;
format.FillFormat.SolidFillColor.Color = Color.Black;
// Ustaw opcje osi.
chart.Axes.VerticalAxis.IsAutomaticMaxValue = false;
chart.Axes.VerticalAxis.IsAutomaticMinValue = false;
chart.Axes.VerticalAxis.IsAutomaticMajorUnit = false;
chart.Axes.VerticalAxis.IsAutomaticMinorUnit = false;
chart.Axes.VerticalAxis.MaxValue = 4000.0F;
chart.Axes.VerticalAxis.MinValue = 0.0F;
chart.Axes.VerticalAxis.MajorUnit = 2000.0F;
chart.Axes.VerticalAxis.MinorUnit = 1000.0F;
chart.Axes.VerticalAxis.TickLabelPosition = TickLabelPositionType.NextTo;
// Ustaw obrót wykresu.
chart.Rotation3D.RotationX = 15;
chart.Rotation3D.RotationY = 20;
// Zapisz prezentację jako plik PPTX.
presentation.Save("Aspose_Sample_Chart.pptx", SaveFormat.Pptx);
}
Wynik:

FAQ
Czy mogę tworzyć inne typy wykresów, takie jak wykresy kołowe, liniowe lub słupkowe, przy użyciu Aspose.Slides?
Tak. Aspose.Slides dla .NET obsługuje szeroką gamę typów wykresów, w tym wykresy kołowe, liniowe, słupkowe, wykresy rozrzutu, wykresy bąbelkowe i inne. Żądany typ wykresu można określić przy użyciu wyliczenia ChartType podczas dodawania wykresu.
Czy mogę zastosować własne style lub motywy do wykresu?
Tak. Możesz w pełni dostosować wygląd wykresu, w tym kolory, czcionki, wypełnienia, kontury, linie siatki i układ. Jednak zastosowanie motywów Office dokładnie tak, jak są widoczne w PowerPoint, wymaga ręcznego ustawiania poszczególnych stylów.
Czy mogę wyeksportować wykres jako osobny obraz, niezależnie od slajdu?
Tak, Aspose.Slides umożliwia wyeksportowanie dowolnego kształtu — w tym wykresów — jako osobnego obrazu (np. PNG, JPEG) przy użyciu metody GetImage na kształcie wykresu.