/** * Retrieve the zip entry of the core properties part. * * @throws OpenXml4NetException * Throws if internal error occurs. */ public static ZipEntry GetCorePropertiesZipEntry(ZipPackage pkg) { PackageRelationship corePropsRel = pkg.GetRelationshipsByType( PackageRelationshipTypes.CORE_PROPERTIES).GetRelationship(0); if (corePropsRel == null) return null; ZipEntry ze = new ZipEntry(corePropsRel.TargetUri.OriginalString); return ze; }
/** * Retrieve the zip entry of the core properties part. * * @throws OpenXml4NetException * Throws if internal error occurs. */ public static ZipEntry GetCorePropertiesZipEntry(ZipPackage pkg) { PackageRelationship corePropsRel = pkg.GetRelationshipsByType( PackageRelationshipTypes.CORE_PROPERTIES).GetRelationship(0); if (corePropsRel == null) { return(null); } ZipEntry ze = new ZipEntry(corePropsRel.TargetUri.OriginalString); return(ze); }
internal static void LoadCrtx(Stream stream, out XmlDocument chartXml, out XmlDocument styleXml, out XmlDocument colorsXml, out ZipPackagePart themePart, string fileName) { chartXml = null; styleXml = null; colorsXml = null; themePart = null; try { ZipPackage p = new ZipPackage(stream); var chartRel = p.GetRelationshipsByType("http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument").FirstOrDefault(); if (chartRel != null) { var chartPart = p.GetPart(chartRel.TargetUri); chartXml = new XmlDocument(); chartXml.Load(chartPart.GetStream()); var rels = chartPart.GetRelationships(); foreach (var rel in rels) { var part = p.GetPart(UriHelper.ResolvePartUri(rel.SourceUri, rel.TargetUri)); switch (rel.RelationshipType) { case ExcelPackage.schemaThemeOverrideRelationships: themePart = part; break; case ExcelPackage.schemaChartStyleRelationships: styleXml = new XmlDocument(); styleXml.Load(part.GetStream()); break; case ExcelPackage.schemaChartColorStyleRelationships: colorsXml = new XmlDocument(); colorsXml.Load(part.GetStream()); break; } } } } catch (Exception ex) { throw new InvalidDataException($"{fileName} has an invalid format", ex); } }
/// <summary> /// Loads a .thmx file as a stream. Thmx files are exported from a Spread Sheet Application like Excel /// </summary> /// <param name="thmxStream">The thmx file as a stream</param> public void Load(Stream thmxStream) { ZipPackage p = new ZipPackage(thmxStream); var themeManagerRel = p.GetRelationshipsByType("http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument").FirstOrDefault(); if (themeManagerRel != null) { var themeManager = p.GetPart(themeManagerRel.TargetUri); var themeRel = themeManager.GetRelationshipsByType(ExcelPackage.schemaThemeRelationships).FirstOrDefault(); if (themeRel != null) { var themePart = p.GetPart(UriHelper.ResolvePartUri(themeRel.SourceUri, themeRel.TargetUri)); var themeXml = new XmlDocument(); XmlHelper.LoadXmlSafe(themeXml, themePart.GetStream()); Load(themeXml); foreach (var rel in themePart.GetRelationships()) { var partToCopy = p.GetPart(UriHelper.ResolvePartUri(rel.SourceUri, rel.TargetUri)); var uri = UriHelper.ResolvePartUri(_theme.ThemeUri, rel.TargetUri); var part = _wb._package.ZipPackage.CreatePart(uri, partToCopy.ContentType); var stream = part.GetStream(); var b = partToCopy.GetStream().ToArray(); stream.Write(b, 0, b.Length); stream.Flush(); _theme.Part.CreateRelationship(uri, TargetMode.Internal, rel.RelationshipType); } SetNormalStyle(); } else { throw new InvalidDataException("Thmx file is corrupt. Can't find theme part"); } } else { throw new InvalidDataException("Thmx file is corrupt."); } }