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(); } }
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]); }
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(); } }
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); }
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(); }
internal ExcelSurfaceChart(ExcelDrawings drawings, XmlNode node, Uri uriChart, Packaging.ZipPackagePart part, XmlDocument chartXml, XmlNode chartNode) : base(drawings, node, uriChart, part, chartXml, chartNode) { Init(); }
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) { }
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(); }
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(); }