Создание диаграммы в презентации Microsoft PowerPoint
Создание диаграммы
Примеры кода ниже описывают процесс добавления простой 3D кластерной столбчатой диаграммы с использованием VSTO. Вы создаете экземпляр презентации, добавляете к ней стандартную диаграмму. Затем используйте рабочую книгу Microsoft Excel для доступа и изменения данных диаграммы, а также для установки свойств диаграммы. Наконец, сохраните презентацию.
Пример VSTO
С использованием VSTO выполняются следующие шаги:
- Создать экземпляр презентации Microsoft PowerPoint.
- Добавить пустой слайд в презентацию.
- Добавить 3D кластерную столбчатую диаграмму и получить к ней доступ.
- Создать новый экземпляр рабочей книги Microsoft Excel и загрузить данные диаграммы.
- Получить доступ к таблице данных диаграммы с помощью экземпляра рабочей книги Microsoft Excel.
- Установить диапазон диаграммы в таблице и удалить серии 2 и 3 из диаграммы.
- Изменить данные категории диаграммы в таблице данных диаграммы.
- Изменить данные серии 1 в таблице данных диаграммы.
- Теперь получить доступ к заголовку диаграммы и установить связанные с ним свойства шрифта.
- Получить доступ к оси значений диаграммы и установить основные и минимальные единицы, максимальное и минимальное значения.
- Получить доступ к оси глубины или серии и удалить ее, так как в этом примере используется только одна серия.
- Теперь установить углы вращения диаграммы по направлениям X и Y.
- Сохранить презентацию.
- Закрыть экземпляры Microsoft Excel и PowerPoint.
Выходная презентация, созданная с помощью VSTO
EnsurePowerPointIsRunning(true, true); | |
//Instantiate slide object | |
Microsoft.Office.Interop.PowerPoint.Slide objSlide = null; | |
//Access the first slide of presentation | |
objSlide = objPres.Slides[1]; | |
//Select firs slide and set its layout | |
objSlide.Select(); | |
objSlide.Layout = Microsoft.Office.Interop.PowerPoint.PpSlideLayout.ppLayoutBlank; | |
//Add a default chart in slide | |
objSlide.Shapes.AddChart(Microsoft.Office.Core.XlChartType.xl3DColumn, 20F, 30F, 400F, 300F); | |
//Access the added chart | |
Microsoft.Office.Interop.PowerPoint.Chart ppChart = objSlide.Shapes[1].Chart; | |
//Access the chart data | |
Microsoft.Office.Interop.PowerPoint.ChartData chartData = ppChart.ChartData; | |
//Create instance to Excel workbook to work with chart data | |
Microsoft.Office.Interop.Excel.Workbook dataWorkbook = (Microsoft.Office.Interop.Excel.Workbook)chartData.Workbook; | |
//Accessing the data worksheet for chart | |
Microsoft.Office.Interop.Excel.Worksheet dataSheet = dataWorkbook.Worksheets[1]; | |
//Setting the range of chart | |
Microsoft.Office.Interop.Excel.Range tRange = dataSheet.Cells.get_Range("A1", "B5"); | |
//Applying the set range on chart data table | |
Microsoft.Office.Interop.Excel.ListObject tbl1 = dataSheet.ListObjects["Table1"]; | |
tbl1.Resize(tRange); | |
//Setting values for categories and respective series data | |
((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"; | |
//Setting chart title | |
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(); | |
//Accessing Chart value axis | |
Microsoft.Office.Interop.PowerPoint.Axis valaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlValue, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary); | |
//Setting values axis units | |
valaxis.MajorUnit = 2000.0F; | |
valaxis.MinorUnit = 1000.0F; | |
valaxis.MinimumScale = 0.0F; | |
valaxis.MaximumScale = 4000.0F; | |
//Accessing Chart Depth axis | |
Microsoft.Office.Interop.PowerPoint.Axis Depthaxis = ppChart.Axes(Microsoft.Office.Interop.PowerPoint.XlAxisType.xlSeriesAxis, Microsoft.Office.Interop.PowerPoint.XlAxisGroup.xlPrimary); | |
Depthaxis.Delete(); | |
//Setting chart rotation | |
ppChart.Rotation = 20; //Y-Value | |
ppChart.Elevation = 15; //X-Value | |
ppChart.RightAngleAxes = false; | |
// Save the presentation as a PPTX | |
objPres.SaveAs("C:\\VSTOSampleChart", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue); | |
//objPres.SaveAs(@"..\..\..\VSTOSampleChart", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsDefault, MsoTriState.msoTrue); | |
//Close Workbook and presentation | |
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; | |
// | |
//Try accessing the name property. If it causes an exception then | |
//start a new instance of PowerPoint | |
try | |
{ | |
strName = objPPT.Name; | |
} | |
catch (Exception ex) | |
{ | |
StartPowerPoint(); | |
} | |
// | |
//blnAddPresentation is used to ensure there is a presentation loaded | |
if (blnAddPresentation == true) | |
{ | |
try | |
{ | |
strName = objPres.Name; | |
} | |
catch (Exception ex) | |
{ | |
objPres = objPPT.Presentations.Add(MsoTriState.msoTrue); | |
} | |
} | |
// | |
//BlnAddSlide is used to ensure there is at least one slide in the | |
//presentation | |
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; | |
} | |
} | |
} |
Пример Aspose.Slides для PHP через Java
С использованием Aspose.Slides для PHP через Java выполняются следующие шаги:
- Создать экземпляр презентации Microsoft PowerPoint.
- Добавить пустой слайд в презентацию.
- Добавить 3D кластерную столбчатую диаграмму и получить к ней доступ.
- Получить доступ к таблице данных диаграммы с помощью экземпляра рабочей книги Microsoft Excel.
- Удалить неиспользуемые серии 2 и 3.
- Получить доступ к категориям диаграмм и изменить подписи.
- Получить доступ к серии 1 и изменить значения серии.
- Теперь получить доступ к заголовку диаграммы и установить свойства шрифта.
- Получить доступ к оси значений диаграммы и установить основные и минимальные единицы, максимальное и минимальное значения.
- Теперь установить углы вращения диаграммы по направлениям X и Y.
- Сохранить презентацию в формате PPTX.
Выходная презентация, созданная с помощью Aspose.Slides
//Create empty presentation | |
Presentation pres = new Presentation(); | |
//Accessing first slide | |
ISlide slide = pres.getSlides().get_Item(0); | |
//Addding default chart | |
IChart ppChart = slide.getShapes().addChart(ChartType.ClusteredColumn3D, 20F, 30F, 400F, 300F); | |
//Getting Chart data | |
IChartData chartData = ppChart.getChartData(); | |
//Removing Extra default series | |
chartData.getSeries().removeAt(1); | |
chartData.getSeries().removeAt(1); | |
//Modifying chart categories names | |
chartData.getCategories().get_Item(0).getAsCell().setValue("Bikes"); | |
chartData.getCategories().get_Item(1).getAsCell().setValue("Accessories"); | |
chartData.getCategories().get_Item(2).getAsCell().setValue("Repairs"); | |
chartData.getCategories().get_Item(3).getAsCell().setValue("Clothing"); | |
//Setting the index of chart data sheet | |
int defaultWorksheetIndex = 0; | |
//Getting the chart data worksheet | |
IChartDataWorkbook fact = ppChart.getChartData().getChartDataWorkbook(); | |
//Modifying chart series values for first category | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 1, 1, 1000)); | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 2, 1, 2500)); | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 3, 1, 4000)); | |
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForBarSeries(fact.getCell(defaultWorksheetIndex, 4, 1, 3000)); | |
//Setting Chart title | |
ppChart.hasTitle(true); | |
ppChart.getChartTitle().addTextFrameForOverriding("2007 Sales"); | |
IPortionFormat format = ppChart.getChartTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat(); | |
format.setFontItalic(NullableBool.True); | |
format.setFontHeight(18); | |
format.getFillFormat().setFillType(FillType.Solid); | |
format.getFillFormat().getSolidFillColor().setColor(java.awt.Color.BLACK); | |
////Setting Axis values | |
ppChart.getAxes().getVerticalAxis().isAutomaticMaxValue(false); | |
ppChart.getAxes().getVerticalAxis().isAutomaticMinValue(false); | |
ppChart.getAxes().getVerticalAxis().isAutomaticMajorUnit(false); | |
ppChart.getAxes().getVerticalAxis().isAutomaticMinorUnit(false); | |
ppChart.getAxes().getVerticalAxis().setMaxValue(4000.0F); | |
ppChart.getAxes().getVerticalAxis().setMinValue(0.0F); | |
ppChart.getAxes().getVerticalAxis().setMajorUnit(2000.0F); | |
ppChart.getAxes().getVerticalAxis().setMinorUnit(1000.0F); | |
ppChart.getAxes().getVerticalAxis().setTickLabelPosition(TickLabelPositionType.NextTo); | |
//Setting Chart rotation | |
ppChart.getRotation3D().setRotationX((byte)15); | |
ppChart.getRotation3D().setRotationY(20); | |
//Saving Presentation | |
pres.save("c:\\data\\AsposeSampleChart.pptx",com.aspose.slides.SaveFormat.Pptx); |