Beispiel #1
0
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Surf))
            {
                throw new Exception("Invalid chart type");
            }

            Surf surf = crtSequence.ChartType as Surf;

            // c:surfaceChart
            _writer.WriteStartElement(Dml.Chart.Prefix, this._is3DChart ? Dml.Chart.ElSurface3DChart : Dml.Chart.ElSurfaceChart, Dml.Chart.Ns);
            {
                // EG_SurfaceChartShared

                // c:wireframe

                // Surface Chart Series (CT_SurfaceSer)
                foreach (SeriesFormatSequence seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser
                        _writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:cat
                        seriesFormatSequence.Convert(new CatMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElCat));

                        // c:val
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElVal));

                        _writer.WriteEndElement(); // c:ser
                    }
                }

                // c:bandFmts

                // c:axId
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            _writer.WriteEndElement();
        }
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is BopPop))
            {
                throw new Exception("Invalid chart type");
            }

            var bopPop = crtSequence.ChartType as BopPop;

            // c:ofPieChart
            this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElOfPieChart, Dml.Chart.Ns);
            {
                // Axis Ids
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            this._writer.WriteEndElement();
        }
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Line))
            {
                throw new Exception("Invalid chart type");
            }

            var line = crtSequence.ChartType as Line;

            // c:lineChart or c:stockChart
            this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElLineChart, Dml.Chart.Ns);
            {
                // EG_LineChartShared
                // c:grouping
                string grouping = line.fStacked ? "stacked" : line.f100 ? "percentStacked" : "standard";
                writeValueElement(Dml.Chart.ElGrouping, grouping);

                // c:varyColors
                writeValueElement(Dml.Chart.ElVaryColors, crtSequence.ChartFormat.fVaried ? "1" : "0");

                // Line Chart Series
                foreach (var seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser
                        this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:marker

                        // c:dPt
                        for (int i = 1; i < seriesFormatSequence.SsSequence.Count; i++)
                        {
                            // write a dPt for each SsSequence
                            var ssSequence = seriesFormatSequence.SsSequence[i];
                            ssSequence.Convert(new DataPointMapping(this.WorkbookContext, this.ChartContext, i - 1));
                        }

                        // c:dLbls (Data Labels)
                        this.ChartFormatsSequence.Convert(new DataLabelMapping(this.WorkbookContext, this.ChartContext, seriesFormatSequence));

                        // c:trendline

                        // c:errBars

                        // c:cat

                        // c:val
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElVal));

                        // c:smooth

                        // c:shape

                        this._writer.WriteEndElement(); // c:ser
                    }
                }

                // c:dLbls

                // dropLines

                // End EG_LineChartShared

                if (this.Is3DChart)
                {
                    // c:gapDepth
                }
                else
                {
                    // c:hiLowLines

                    // c:upDownBars

                    // c:marker

                    // c:smooth
                }

                // c:axId
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            this._writer.WriteEndElement();
        }
Beispiel #4
0
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Pie))
            {
                throw new Exception("Invalid chart type");
            }

            var pie = crtSequence.ChartType as Pie;

            bool isDoughnutChart = (pie.pcDonut != 0);

            string chartType = this._is3DChart ? Dml.Chart.ElPie3DChart : Dml.Chart.ElPieChart;

            if (isDoughnutChart)
            {
                chartType = Dml.Chart.ElDoughnutChart;
            }

            // c:pieChart or c:pie3DChart or c:doughnutChart
            this._writer.WriteStartElement(Dml.Chart.Prefix, chartType, Dml.Chart.Ns);
            {
                // EG_PieChartShared

                // varyColors
                writeValueElement("varyColors", crtSequence.ChartFormat.fVaried ? "1" : "0");

                // Pie Chart Series (CT_PieSer)
                foreach (var seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser
                        this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:explosion
                        var sssBase = seriesFormatSequence.SsSequence[0];
                        if (sssBase.PieFormat != null)
                        {
                            writeValueElement("explosion", sssBase.PieFormat.pcExplode.ToString());
                        }

                        // c:dPt (Data Points)
                        for (int i = 1; i < seriesFormatSequence.SsSequence.Count; i++)
                        {
                            // write a dPt for each SsSequence
                            var sss = seriesFormatSequence.SsSequence[i];
                            sss.Convert(new DataPointMapping(this.WorkbookContext, this.ChartContext, i - 1));
                        }

                        // c:dLbls (Data Labels)
                        this.ChartFormatsSequence.Convert(new DataLabelMapping(this.WorkbookContext, this.ChartContext, seriesFormatSequence));

                        // c:cat
                        seriesFormatSequence.Convert(new CatMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElCat));

                        // c:val
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElVal));

                        this._writer.WriteEndElement(); // c:ser
                    }
                }

                if (!this.Is3DChart)
                {
                    // c:firstSliceAng
                    writeValueElement("firstSliceAng", pie.anStart.ToString());
                }
                if (isDoughnutChart)
                {
                    // c:holeSize
                }
            }
            this._writer.WriteEndElement();
        }
Beispiel #5
0
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Scatter))
            {
                throw new Exception("Invalid chart type");
            }

            var scatter = crtSequence.ChartType as Scatter;

            // c:scatterChart
            this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElScatterChart, Dml.Chart.Ns);
            {
                // c:scatterStyle
                writeValueElement(Dml.Chart.Prefix, Dml.Chart.ElScatterStyle, Dml.Chart.Ns, mapScatterStyle(crtSequence.SsSequence));

                // c:varyColors
                //writeValueElement(Dml.Chart.ElVaryColors, crtSequence.ChartFormat.fVaried ? "1" : "0");

                foreach (var seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser (CT_ScatterSer)
                        // c:ser
                        this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:marker

                        // c:dPt

                        // c:dLbls (CT_DLbls)
                        this.ChartFormatsSequence.Convert(new DataLabelMapping(this.WorkbookContext, this.ChartContext, seriesFormatSequence));

                        // c:trendline

                        // c:errBars

                        // c:xVal
                        seriesFormatSequence.Convert(new CatMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElXVal));

                        // c:yVal
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElYVal));

                        // c:smooth
                        writeValueElement(Dml.Chart.Prefix, Dml.Chart.ElSmooth, Dml.Chart.Ns, isSmoothed(crtSequence.SsSequence) ? "1" : "0");

                        this._writer.WriteEndElement(); // c:ser
                    }
                }

                // Data Labels

                // Axis Ids
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            this._writer.WriteEndElement();
        }
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Area))
            {
                throw new Exception("Invalid chart type");
            }

            Area area = crtSequence.ChartType as Area;

            // c:areaChart / c:area3DChart
            _writer.WriteStartElement(Dml.Chart.Prefix, this.Is3DChart ? Dml.Chart.ElArea3DChart : Dml.Chart.ElAreaChart, Dml.Chart.Ns);
            {
                // EG_AreaChartShared
                // CT_Grouping

                // c:varyColors: This setting needs to be ignored if the chart has
                //writeValueElement(Dml.Chart.ElVaryColors, crtSequence.ChartFormat.fVaried ? "1" : "0");

                // Area Chart Series (CT_AreaSer)
                foreach (SeriesFormatSequence seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser
                        _writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:pictureOptions (CT_PictureOptions)

                        // c:dPt (Data Points)
                        for (int i = 1; i < seriesFormatSequence.SsSequence.Count; i++)
                        {
                            // write a dPt for each SsSequence
                            SsSequence ssSequence = seriesFormatSequence.SsSequence[i];
                            ssSequence.Convert(new DataPointMapping(this.WorkbookContext, this.ChartContext, i - 1));
                        }

                        // c:dLbls (Data Labels)
                        this.ChartFormatsSequence.Convert(new DataLabelMapping(this.WorkbookContext, this.ChartContext, seriesFormatSequence));

                        // c:trendline

                        // c:errBars

                        // c:cat (Category Axis Data)
                        seriesFormatSequence.Convert(new CatMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElCat));

                        // c:val
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElVal));

                        _writer.WriteEndElement(); // c:ser
                    }
                }

                // c:dLbls (Data Labels)

                // c:dropLines


                if (this.Is3DChart)
                {
                    // c:gapDepth
                }

                // Axis Ids
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            _writer.WriteEndElement();
        }
Beispiel #7
0
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Scatter))
            {
                throw new Exception("Invalid chart type");
            }

            Scatter scatter = crtSequence.ChartType as Scatter;

            // c:bubbleChart
            _writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElBubbleChart, Dml.Chart.Ns);
            {
                // c:varyColors: This setting needs to be ignored if the chart has
                //writeValueElement(Dml.Chart.ElVaryColors, crtSequence.ChartFormat.fVaried ? "1" : "0");

                // Bubble Chart Series
                foreach (SeriesFormatSequence seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser
                        _writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:dPt

                        // c:dLbls (CT_DLbls)
                        this.ChartFormatsSequence.Convert(new DataLabelMapping(this.WorkbookContext, this.ChartContext, seriesFormatSequence));

                        // c:trendline

                        // c:errBars

                        // c:xVal
                        seriesFormatSequence.Convert(new CatMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElXVal));

                        // c:yVal
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElYVal));

                        // c:bubbleSize

                        // c:bubble3D

                        _writer.WriteEndElement(); // c:ser
                    }
                }

                // c:dLbls

                // c:bubble3D

                // c:bubbleScale

                // c:showNegBubbles

                // c:sizeRepresents


                // Axis Ids
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            _writer.WriteEndElement();
        }
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Radar))
            {
                throw new Exception("Invalid chart type");
            }

            var radar = crtSequence.ChartType as Radar;

            // c:radarChart
            this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElRadarChart, Dml.Chart.Ns);
            {
                // c:radarStyle
                writeValueElement(Dml.Chart.ElRadarStyle, mapRadarStyle(crtSequence.SsSequence));

                // c:varyColors: This setting needs to be ignored if the chart has
                //writeValueElement(Dml.Chart.ElVaryColors, crtSequence.ChartFormat.fVaried ? "1" : "0");

                // Radar Chart Series (CT_RadarSer)
                foreach (var seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser
                        this._writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:marker

                        // c:dPt (Data Points)
                        for (int i = 1; i < seriesFormatSequence.SsSequence.Count; i++)
                        {
                            // write a dPt for each SsSequence
                            var sss = seriesFormatSequence.SsSequence[i];
                            sss.Convert(new DataPointMapping(this.WorkbookContext, this.ChartContext, i - 1));
                        }

                        // c:dLbls (Data Labels)
                        this.ChartFormatsSequence.Convert(new DataLabelMapping(this.WorkbookContext, this.ChartContext, seriesFormatSequence));

                        // c:cat (Category Axis Data)
                        seriesFormatSequence.Convert(new CatMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElCat));

                        // c:val
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElVal));

                        this._writer.WriteEndElement(); // c:ser
                    }
                }

                // Data Labels


                // Axis Ids
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            this._writer.WriteEndElement();
        }
        public override void Apply(CrtSequence crtSequence)
        {
            if (!(crtSequence.ChartType is Bar))
            {
                throw new Exception("Invalid chart type");
            }

            Bar bar = crtSequence.ChartType as Bar;


            // c:barChart / c:bar3DChart
            _writer.WriteStartElement(Dml.Chart.Prefix, this._is3DChart ? Dml.Chart.ElBar3DChart : Dml.Chart.ElBarChart, Dml.Chart.Ns);
            {
                // EG_BarChartShared
                // c:barDir
                writeValueElement(Dml.Chart.ElBarDir, bar.fTranspose ? "bar" : "col");

                // c:grouping
                string grouping = bar.fStacked ? "stacked" : bar.f100 ? "percentStacked" : this.Is3DChart && !crtSequence.Chart3d.fCluster ? "standard" : "clustered";
                writeValueElement(Dml.Chart.ElGrouping, grouping);

                // c:varyColors: This setting needs to be ignored if the chart has
                //writeValueElement(Dml.Chart.ElVaryColors, crtSequence.ChartFormat.fVaried ? "1" : "0");

                // Bar Chart Series
                foreach (SeriesFormatSequence seriesFormatSequence in this.ChartFormatsSequence.SeriesFormatSequences)
                {
                    if (seriesFormatSequence.SerToCrt != null && seriesFormatSequence.SerToCrt.id == crtSequence.ChartFormat.idx)
                    {
                        // c:ser
                        _writer.WriteStartElement(Dml.Chart.Prefix, Dml.Chart.ElSer, Dml.Chart.Ns);

                        // EG_SerShared
                        seriesFormatSequence.Convert(new SeriesMapping(this.WorkbookContext, this.ChartContext));

                        // c:invertIfNegative (stored in AreaFormat)

                        // c:pictureOptions

                        // c:dPt (Data Points)
                        for (int i = 1; i < seriesFormatSequence.SsSequence.Count; i++)
                        {
                            // write a dPt for each SsSequence
                            SsSequence ssSequence = seriesFormatSequence.SsSequence[i];
                            ssSequence.Convert(new DataPointMapping(this.WorkbookContext, this.ChartContext, i - 1));
                        }

                        // c:dLbls (Data Labels)
                        this.ChartFormatsSequence.Convert(new DataLabelMapping(this.WorkbookContext, this.ChartContext, seriesFormatSequence));

                        // c:trendline

                        // c:errBars

                        // c:cat (Category Axis Data)
                        seriesFormatSequence.Convert(new CatMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElCat));

                        // c:val
                        seriesFormatSequence.Convert(new ValMapping(this.WorkbookContext, this.ChartContext, Dml.Chart.ElVal));

                        // c:shape (we only condider the first Chart3DBarShape found)
                        SsSequence ssSeq = seriesFormatSequence.SsSequence.Find(s => s.Chart3DBarShape != null);
                        if (ssSeq != null)
                        {
                            insertShape(ssSeq.Chart3DBarShape);
                        }

                        _writer.WriteEndElement(); // c:ser
                    }
                }


                // Data Labels


                if (this._is3DChart)
                {
                    // c:gapWidth
                    writeValueElement(Dml.Chart.ElGapWidth, crtSequence.Chart3d.pcGap.ToString());

                    // c:gapDepth
                    writeValueElement(Dml.Chart.ElGapDepth, crtSequence.Chart3d.pcDepth.ToString());

                    // c:shape
                    if (crtSequence.SsSequence != null && crtSequence.SsSequence.Chart3DBarShape != null)
                    {
                        insertShape(crtSequence.SsSequence.Chart3DBarShape);
                    }
                }
                else
                {
                    // c:gapWidth
                    writeValueElement(Dml.Chart.ElGapWidth, bar.pcGap.ToString());

                    // c:overlap
                    writeValueElement(Dml.Chart.ElOverlap, (-bar.pcOverlap).ToString());

                    // Series Lines
                }

                // Axis Ids
                foreach (int axisId in crtSequence.ChartFormat.AxisIds)
                {
                    writeValueElement(Dml.Chart.ElAxId, axisId.ToString());
                }
            }
            _writer.WriteEndElement();
        }