/// <summary>
        /// Задать заголовок графику
        /// </summary>
        /// <param name="chart">график</param>
        /// <param name="newTitleStr">новый заголовок графика</param>
        /// <returns>true - при удачной замене заголовка, false - в обратном случае</returns>
        public static bool Title(this DrawingCharts.Chart chart, string newTitleStr)
        {
            if (chart == null)
            {
                return(false);
            }

            var newTitle = new DrawingCharts.Title().From("Drawing\\ChartTitle");

            if (newTitle == null)
            {
                return(false);
            }

            var run = newTitle.FirstDescendant <Drawing.Run>();

            if (run == null)
            {
                return(false);
            }

            run.Text = newTitleStr.ToDrawingText();

            var oldTitle = chart.GetFirstChild <DrawingCharts.Title>();

            var pPr = oldTitle == null ? null : oldTitle.FirstDescendant <Drawing.ParagraphProperties>();
            var rPr = oldTitle == null ? null : oldTitle.FirstDescendant <Drawing.RunProperties>();

            var defPPr = newTitle.FirstDescendant <Drawing.ParagraphProperties>();
            var defRPr = newTitle.FirstDescendant <Drawing.RunProperties>();

            if (pPr != null && defPPr != null)
            {
                defPPr.Parent.ReplaceChild(pPr.CloneNode(true), defPPr);
            }

            if (rPr != null && defRPr != null)
            {
                defRPr.Parent.ReplaceChild(rPr.CloneNode(true), defRPr);
            }

            if (oldTitle == null)
            {
                chart.PrependChild(newTitle);
                return(true);
            }

            var resultTitle = chart.ReplaceChild(newTitle, oldTitle);

            if (resultTitle.Equals(oldTitle))
            {
                return(true);
            }

            return(false);
        }
        void setChartData(ChartPart chartPart1, ChartDataHolder[] ChartDataSlide)
        {
            ChartSpace chartSpace = chartPart1.ChartSpace;

            DocumentFormat.OpenXml.Drawing.Charts.Chart chart1 = chartSpace.GetFirstChild <DocumentFormat.OpenXml.Drawing.Charts.Chart>();
            PlotArea plotArea1 = chart1.GetFirstChild <PlotArea>();
            BarChart barChart1 = plotArea1.GetFirstChild <BarChart>();

            //BarChartSeries barChartSeries1 = barChart1.Elements<BarChartSeries>().ElementAtOrDefault(2);
            for (int i = 0; i < barChart1.Elements <BarChartSeries>().Count(); i++)
            {
                BarChartSeries barChartSeries = barChart1.Elements <BarChartSeries>().ElementAtOrDefault(i);
                ChartDataSlide dataModel      = ChartDataSlide.ElementAtOrDefault(i).chartData;

                SeriesText seriesText = barChartSeries.Elements <SeriesText>().ElementAtOrDefault(0);
                if (seriesText != null)
                {
                    var stringReference = seriesText.Descendants <StringReference>().FirstOrDefault();
                    var stringCache     = stringReference.Descendants <StringCache>().FirstOrDefault();
                    var stringPoint     = stringCache.Descendants <StringPoint>().FirstOrDefault();
                    var barLabel        = stringPoint.GetFirstChild <NumericValue>();
                    barLabel.Text = ChartDataSlide.ElementAtOrDefault(i).seriesText;
                }

                if (barChartSeries != null)
                {
                    Values          values1          = barChartSeries.GetFirstChild <Values>();
                    NumberReference numberReference1 = values1.GetFirstChild <NumberReference>();
                    NumberingCache  numberingCache1  = numberReference1.GetFirstChild <NumberingCache>();

                    NumericPoint numericPoint1 = numberingCache1.GetFirstChild <NumericPoint>();
                    NumericPoint numericPoint2 = numberingCache1.Elements <NumericPoint>().ElementAt(1);
                    NumericPoint numericPoint3 = numberingCache1.Elements <NumericPoint>().ElementAt(2);

                    NumericValue numericValue1 = numericPoint1.GetFirstChild <NumericValue>();
                    //numericValue1.Text = ".50";
                    if (numericValue1 != null)
                    {
                        numericValue1.Text = dataModel.Interaction.ToString();
                    }


                    NumericValue numericValue2 = numericPoint2.GetFirstChild <NumericValue>();
                    //numericValue2.Text = ".10";
                    if (numericValue2 != null)
                    {
                        numericValue2.Text = dataModel.Knowlegde.ToString();
                    }


                    NumericValue numericValue3 = numericPoint3.GetFirstChild <NumericValue>();
                    //numericValue3.Text = ".40";
                    if (numericValue3 != null)
                    {
                        numericValue3.Text = dataModel.Image.ToString();
                    }
                }
            }

            chartSpace.Save();
        }
 /// <summary>
 /// Получить заголовок
 /// </summary>
 /// <param name="chart">График заголовок которогу нужно получить</param>
 /// <returns>Заголовок выбранного графика</returns>
 public static string Title(this DrawingCharts.Chart chart)
 {
     return(chart.GetFirstChild <DrawingCharts.Title>().InnerText);
 }