예제 #1
0
파일: ZipHelper.cs 프로젝트: ctddjyds/npoi
        /**
         * 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;
        }
예제 #2
0
파일: ZipHelper.cs 프로젝트: purehzj/npoi-1
        /**
         * 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);
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        /// <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.");
            }
        }