- VSTO
- Spire.Presentation
- Download Sample Code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using PowerPoint = Microsoft.Office.Interop.PowerPoint; using Office = Microsoft.Office.Core; namespace VSTO { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { //Create ppt document PowerPoint.Presentation ppt = this.Application.Presentations.Add(); //Add a blank slide PowerPoint.Slide slide = ppt.Slides.Add(1, PowerPoint.PpSlideLayout.ppLayoutBlank); //Add chart PowerPoint.Shape shape = slide.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xlColumnClustered, 100, 100, 500, 300); //Get the chart PowerPoint.Chart chart = slide.Shapes[1].Chart; //Create instance to excel workbook to work with chart datas PowerPoint.ChartData chartData = chart.ChartData; Microsoft.Office.Interop.Excel.Workbook dataWorkbook = (Microsoft.Office.Interop.Excel.Workbook)chartData.Workbook; //Get the worksheet of chart Microsoft.Office.Interop.Excel.Worksheet dataSheet = dataWorkbook.Worksheets[1]; //Set the range of chart Microsoft.Office.Interop.Excel.Range range = dataSheet.Cells.get_Range("A1", "B5"); //Set the data Microsoft.Office.Interop.Excel.ListObject table = dataSheet.ListObjects["Table1"]; table.Resize(range); ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A2"))).Value = "January"; ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A3"))).Value = "February"; ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A4"))).Value = "March"; ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("A5"))).Value = "April"; ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B2"))).Value = 100; ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B3"))).Value = 250; ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B4"))).Value = 300; ((Microsoft.Office.Interop.Excel.Range)(dataSheet.Cells.get_Range("B5"))).Value = 400; //Set the title of the chart chart.ChartTitle.Text = "Monthly Sales Report"; //Save the file ppt.SaveAs("AddedChart.pptx"); } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { } #region VSTO generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InternalStartup() { this.Startup += new System.EventHandler(ThisAddIn_Startup); this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); } #endregion } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Spire.Presentation; using System.Drawing; using Spire.Presentation.Charts; using Spire.Presentation.Drawing; using System.Data; namespace Spire.Presentation { class Program { static void Main(string[] args) { //Create a presentation instance Presentation presentation = new Presentation(); //Insert a column clustered chart IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, new RectangleF(100,100,500,300)); //Set chart title chart.ChartTitle.TextProperties.Text = "Monthly Sales Report"; chart.ChartTitle.TextProperties.IsCentered = true; chart.ChartTitle.Height = 30; chart.HasTitle = true; //Create a datatable DataTable dataTable = new DataTable(); dataTable.Columns.Add(new DataColumn("Month", Type.GetType("System.String"))); dataTable.Columns.Add(new DataColumn("Sales", Type.GetType("System.Int32"))); dataTable.Columns.Add(new DataColumn("Growth rate", Type.GetType("System.Decimal"))); dataTable.Rows.Add("January", 200, 0.6); dataTable.Rows.Add("February", 250, 0.8); dataTable.Rows.Add("March", 300, 0.6); dataTable.Rows.Add("April", 150, 0.2); //Import data from datatable to chart data for (int c = 0; c < dataTable.Columns.Count; c++) { chart.ChartData[0, c].Text = dataTable.Columns[c].Caption; } for (int r = 0; r < dataTable.Rows.Count; r++) { object[] datas = dataTable.Rows[r].ItemArray; for (int c = 0; c < datas.Length; c++) { chart.ChartData[r + 1, c].Value = datas[c]; } } //Set series labels chart.Series.SeriesLabel = chart.ChartData["B1", "C1"]; //Set categories labels chart.Categories.CategoryLabels = chart.ChartData["A2", "A7"]; //Assign data to series values chart.Series[0].Values = chart.ChartData["B2", "B7"]; chart.Series[1].Values = chart.ChartData["C2", "C7"]; //Change the chart type of serie 2 to line with markers chart.Series[1].Type = ChartType.LineMarkers; //Plot data of series 2 on the secondary axis chart.Series[1].UseSecondAxis = true; //Set the number format as percentage chart.SecondaryValueAxis.NumberFormat = "0%"; //Hide gridlinkes of secondary axis chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None; //Set overlap chart.OverLap = -50; //Set gapwidth chart.GapWidth = 200; //Save and Launch presentation.SaveToFile("AddedChart.pptx", FileFormat.Pptx2010); System.Diagnostics.Process.Start("AddedChart.pptx"); } } }