Beispiel #1
0
        internal ExcelDrawings(ExcelPackage xlPackage, ExcelWorksheet sheet)
        {
            this._drawingsXml = new XmlDocument();
            this._drawingsXml.PreserveWhitespace = false;
            this._drawings = new List <ExcelDrawing>();
            this.Package   = xlPackage;
            this.Worksheet = sheet;
            XmlNode node = sheet.WorksheetXml.SelectSingleNode("//d:drawing", sheet.NameSpaceManager);

            this.CreateNSM();
            if (node != null)
            {
                this.DrawingRelationship = sheet.Part.GetRelationship(node.Attributes["r:id"].Value);
                this._uriDrawing         = UriHelper.ResolvePartUri(sheet.WorksheetUri, this.DrawingRelationship.TargetUri);

                this._part = xlPackage.Package.GetPart(this._uriDrawing);
                XmlHelper.LoadXmlSafe(this._drawingsXml, this._part.GetStream());

                this.AddDrawings();
            }
        }
Beispiel #2
0
        internal ImageInfo LoadImage(byte[] image, Uri uri, Packaging.ZipPackagePart imagePart)
        {
#if (Core)
            var hashProvider = SHA1.Create();
#else
            var hashProvider = new SHA1CryptoServiceProvider();
#endif
            var hash = BitConverter.ToString(hashProvider.ComputeHash(image)).Replace("-", "");
            if (_images.ContainsKey(hash))
            {
                _images[hash].RefCount++;
            }
            else
            {
                _images.Add(hash, new ImageInfo()
                {
                    Uri = uri, RefCount = 1, Hash = hash, Part = imagePart
                });
            }
            return(_images[hash]);
        }
Beispiel #3
0
        internal ExcelDrawings(ExcelPackage xlPackage, ExcelWorksheet sheet)
        {
            _drawingsXml = new XmlDocument();
            _drawingsXml.PreserveWhitespace = false;
            _drawings     = new List <ExcelDrawing>();
            _drawingNames = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase);
            _package      = xlPackage;
            Worksheet     = sheet;
            XmlNode node = sheet.WorksheetXml.SelectSingleNode("//d:drawing", sheet.NameSpaceManager);

            CreateNSM();
            if (node != null)
            {
                _drawingRelation = sheet.Part.GetRelationship(node.Attributes["r:id"].Value);
                _uriDrawing      = UriHelper.ResolvePartUri(sheet.WorksheetUri, _drawingRelation.TargetUri);

                _part = xlPackage.Package.GetPart(_uriDrawing);
                XmlHelper.LoadXmlSafe(_drawingsXml, _part.GetStream());

                AddDrawings();
            }
        }
Beispiel #4
0
 internal ExcelBarChart(ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, XmlNode chartNode) :
     base(drawings, node, uriChart, part, chartXml, chartNode)
 {
     SetChartNodeText(chartNode.Name);
 }
Beispiel #5
0
 internal ExcelVbaSignature(Packaging.ZipPackagePart vbaPart)
 {
     _vbaPart = vbaPart;
     GetSignature();
 }
 internal ExcelScatterChart(ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, XmlNode chartNode) :
     base(drawings, node, uriChart, part, chartXml, chartNode)
 {
     SetTypeProperties();
 }
Beispiel #7
0
 internal ExcelSurfaceChart(ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, XmlNode chartNode) :
     base(drawings, node, uriChart, part, chartXml, chartNode)
 {
     Init();
 }
Beispiel #8
0
 internal ExcelLineChart(ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, XmlNode chartNode, ExcelGroupShape parent = null) :
     base(drawings, node, uriChart, part, chartXml, chartNode, parent)
 {
 }
Beispiel #9
0
        internal static ExcelChart GetChart(XmlElement chartNode, ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, ExcelChart topChart, ExcelGroupShape parent)
        {
            switch (chartNode.LocalName)
            {
            case "stockChart":
                if (topChart == null)
                {
                    return(new ExcelStockChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    if (topChart is ExcelStockChart chart)
                    {
                        return(chart);
                    }
                    else
                    {
                        return(new ExcelStockChart(topChart, chartNode, parent));
                    }
                }

            case "area3DChart":
            case "areaChart":
                if (topChart == null)
                {
                    return(new ExcelAreaChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelAreaChart(topChart, chartNode, parent));
                }

            case "surface3DChart":
            case "surfaceChart":
                if (topChart == null)
                {
                    return(new ExcelSurfaceChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelSurfaceChart(topChart, chartNode, parent));
                }

            case "radarChart":
                if (topChart == null)
                {
                    return(new ExcelRadarChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelRadarChart(topChart, chartNode, parent));
                }

            case "bubbleChart":
                if (topChart == null)
                {
                    return(new ExcelBubbleChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelBubbleChart(topChart, chartNode, parent));
                }

            case "barChart":
            case "bar3DChart":
                if (topChart == null)
                {
                    if (chartNode.LocalName == "barChart" && chartNode.NextSibling?.LocalName == "stockChart")
                    {
                        return(new ExcelStockChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                    }
                    else
                    {
                        return(new ExcelBarChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                    }
                }
                else
                {
                    return(new ExcelBarChart(topChart, chartNode, parent));
                }

            case "doughnutChart":
                if (topChart == null)
                {
                    return(new ExcelDoughnutChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelDoughnutChart(topChart, chartNode, parent));
                }

            case "pie3DChart":
            case "pieChart":
                if (topChart == null)
                {
                    return(new ExcelPieChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelPieChart(topChart, chartNode, parent));
                }

            case "ofPieChart":
                if (topChart == null)
                {
                    return(new ExcelOfPieChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelOfPieChart(topChart, chartNode, parent));
                }

            case "lineChart":
            case "line3DChart":
                if (topChart == null)
                {
                    if (uriChart == null)
                    {
                        return(new ExcelLineChart(drawings, node, eChartType.Line, null, null, chartXml, parent));
                    }
                    else
                    {
                        return(new ExcelLineChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                    }
                }
                else
                {
                    return(new ExcelLineChart(topChart, chartNode, parent));
                }

            case "scatterChart":
                if (topChart == null)
                {
                    return(new ExcelScatterChart(drawings, node, uriChart, part, chartXml, chartNode, parent));
                }
                else
                {
                    return(new ExcelScatterChart(topChart, chartNode, parent));
                }

            default:
                return(null);
            }
        }
        private XmlElement CreateDrawingXml()
        {
            if (DrawingXml.DocumentElement == null)
            {
                DrawingXml.LoadXml(string.Format("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><xdr:wsDr xmlns:xdr=\"{0}\" xmlns:a=\"{1}\" />", ExcelPackage.schemaSheetDrawings, ExcelPackage.schemaDrawings));
                Packaging.ZipPackage package = Worksheet._package.Package;

                //Check for existing part, issue #100
                var id = Worksheet.SheetID;
                do
                {
                    _uriDrawing = new Uri(string.Format("/xl/drawings/drawing{0}.xml", id++), UriKind.Relative);
                }while (package.PartExists(_uriDrawing));

                _part = package.CreatePart(_uriDrawing, "application/vnd.openxmlformats-officedocument.drawing+xml", _package.Compression);

                StreamWriter streamChart = new StreamWriter(_part.GetStream(FileMode.Create, FileAccess.Write));
                DrawingXml.Save(streamChart);
                streamChart.Close();
                package.Flush();

                _drawingRelation = Worksheet.Part.CreateRelationship(UriHelper.GetRelativeUri(Worksheet.WorksheetUri, _uriDrawing), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/drawing");
                XmlElement e = (XmlElement)Worksheet.CreateNode("d:drawing");
                //XmlElement e = Worksheet.WorksheetXml.SelectSingleNode("d:drawing", );
                e.SetAttribute("id", ExcelPackage.schemaRelationships, _drawingRelation.Id);

                //Worksheet.WorksheetXml.DocumentElement.AppendChild(e);
                package.Flush();
            }
            XmlNode    colNode = _drawingsXml.SelectSingleNode("//xdr:wsDr", NameSpaceManager);
            XmlElement drawNode;

            if (this.Worksheet is ExcelChartsheet)
            {
                drawNode = _drawingsXml.CreateElement("xdr", "absoluteAnchor", ExcelPackage.schemaSheetDrawings);
                XmlElement posNode = _drawingsXml.CreateElement("xdr", "pos", ExcelPackage.schemaSheetDrawings);
                posNode.SetAttribute("y", "0");
                posNode.SetAttribute("x", "0");
                drawNode.AppendChild(posNode);
                XmlElement extNode = _drawingsXml.CreateElement("xdr", "ext", ExcelPackage.schemaSheetDrawings);
                extNode.SetAttribute("cy", "6072876");
                extNode.SetAttribute("cx", "9299263");
                drawNode.AppendChild(extNode);
                colNode.AppendChild(drawNode);
            }
            else
            {
                drawNode = _drawingsXml.CreateElement("xdr", "twoCellAnchor", ExcelPackage.schemaSheetDrawings);
                colNode.AppendChild(drawNode);
                //Add from position Element;
                XmlElement fromNode = _drawingsXml.CreateElement("xdr", "from", ExcelPackage.schemaSheetDrawings);
                drawNode.AppendChild(fromNode);
                fromNode.InnerXml = "<xdr:col>0</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>0</xdr:row><xdr:rowOff>0</xdr:rowOff>";

                //Add to position Element;
                XmlElement toNode = _drawingsXml.CreateElement("xdr", "to", ExcelPackage.schemaSheetDrawings);
                drawNode.AppendChild(toNode);
                toNode.InnerXml = "<xdr:col>10</xdr:col><xdr:colOff>0</xdr:colOff><xdr:row>10</xdr:row><xdr:rowOff>0</xdr:rowOff>";
            }

            return(drawNode);
        }
 internal ExcelDoughnutChart(ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, XmlNode chartNode) :
     base(drawings, node, uriChart, part, chartXml, chartNode)
 {
     //SetPaths();
 }
Beispiel #12
0
 internal ExcelRadarChart(ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, XmlNode chartNode, ExcelGroupShape parent = null) :
     base(drawings, node, uriChart, part, chartXml, chartNode, parent)
 {
     SetTypeProperties();
 }