示例#1
0
        private static CT_Relationships ToRelationships(Dictionary <string, string[]> htRelationShip)
        {
            if (htRelationShip == null)
            {
                return(null);
            }
            CT_Relationships relationships = new CT_Relationships {
                Relationship = new Dt.Xls.OOXml.Relationship[htRelationShip.Count]
            };
            int index = 0;

            foreach (string str in htRelationShip.Keys)
            {
                string[] strArray = htRelationShip[str];
                if ((strArray != null) && (strArray.Length >= 2))
                {
                    Dt.Xls.OOXml.Relationship relationship = new Dt.Xls.OOXml.Relationship {
                        Id     = str,
                        Target = strArray[0],
                        Type   = strArray[1]
                    };
                    if (((!relationship.Target.EndsWith(".xml") && !relationship.Target.EndsWith("png")) && (!relationship.Target.EndsWith("jpg") && !relationship.Target.EndsWith("bmp"))) && ((!relationship.Target.EndsWith("gif") && !relationship.Target.EndsWith("vml")) && (!relationship.Target.EndsWith("emf") && (relationship.Type != "http://schemas.microsoft.com/office/2006/relationships/vbaProject"))))
                    {
                        relationship.TargetMode = "External";
                    }
                    relationships.Relationship[index] = relationship;
                }
                index++;
            }
            return(relationships);
        }
示例#2
0
 private static void SavePackageRelationFiles(XFile xFile, MemoryFolder mFolder)
 {
     if (((xFile != null) && (xFile.RelationFiles != null)) && ((xFile.RelationFiles.Count != 0) && (mFolder != null)))
     {
         string str  = string.IsNullOrEmpty(xFile.FileName) ? "" : Path.GetDirectoryName(xFile.FileName);
         string str2 = string.IsNullOrEmpty(xFile.FileName) ? "" : Path.GetFileName(xFile.FileName);
         Dictionary <string, string[]> htRelationShip = new Dictionary <string, string[]>();
         foreach (string str3 in xFile.RelationFiles.Keys)
         {
             XFile file = xFile.RelationFiles[str3];
             if (file != null)
             {
                 string[] strArray = new string[2];
                 if (!string.IsNullOrWhiteSpace(file.Target))
                 {
                     strArray[0] = file.Target;
                 }
                 else
                 {
                     strArray[0] = file.FileName.Replace('\\', '/');
                 }
                 strArray[1] = file.FileType;
                 if (htRelationShip.ContainsKey(str3))
                 {
                     htRelationShip[str3] = strArray;
                 }
                 else
                 {
                     htRelationShip.Add(str3, strArray);
                 }
             }
             SavePackageRelationFiles(file, mFolder);
         }
         CT_Relationships relationships = ToRelationships(htRelationShip);
         if (relationships != null)
         {
             mFolder.CreateMemoryFile(str + @"\_rels\" + str2 + ".rels", PackageXml.CreateStreamFromObject(relationships, typeof(CT_Relationships)));
         }
     }
 }
示例#3
0
文件: PackageXml.cs 项目: Daoting/dt
        public static Stream CreateStreamFromObject(object obj, Type type)
        {
            if (obj == null)
            {
                return(null);
            }
            Stream stream = null;

            if (obj is CT_Relationships)
            {
                CT_Relationships relationships = obj as CT_Relationships;
                stream = (Stream) new MemoryStream();
                new XmlWriterSettings().Encoding = Encoding.UTF8;
                XmlWriter @this = XmlWriter.Create(stream, new XmlWriterSettings());
                using (@this.WriteDocument(true))
                {
                    using (@this.WriteElement("Relationships", "http://schemas.openxmlformats.org/package/2006/relationships"))
                    {
                        foreach (Relationship relationship in relationships.Relationship)
                        {
                            using (@this.WriteElement("Relationship"))
                            {
                                @this.WriteAttributeString("Id", relationship.Id);
                                @this.WriteAttributeString("Type", relationship.Type);
                                @this.WriteAttributeString("Target", relationship.Target.Trim(new char[] { '\n', '\b', ' ' }));
                                if (!string.IsNullOrWhiteSpace(relationship.TargetMode))
                                {
                                    @this.WriteAttributeString("TargetMode", relationship.TargetMode);
                                }
                            }
                        }
                    }
                }
                @this.Flush();
                stream.Seek(0L, (SeekOrigin)SeekOrigin.Begin);
                return(stream);
            }
            if (obj is CT_Types)
            {
                CT_Types types = obj as CT_Types;
                stream = (Stream) new MemoryStream();
                new XmlWriterSettings().Encoding = Encoding.UTF8;
                XmlWriter writer2 = XmlWriter.Create(stream, new XmlWriterSettings());
                using (writer2.WriteDocument(true))
                {
                    using (writer2.WriteElement("Types", "http://schemas.openxmlformats.org/package/2006/content-types"))
                    {
                        foreach (object obj2 in types.Items)
                        {
                            if (obj2 is CT_Default)
                            {
                                CT_Default default2 = obj2 as CT_Default;
                                using (writer2.WriteElement("Default"))
                                {
                                    writer2.WriteAttributeString("ContentType", default2.ContentType);
                                    writer2.WriteAttributeString("Extension", default2.Extension);
                                    continue;
                                }
                            }
                            if (obj2 is CT_Override)
                            {
                                CT_Override @override = obj2 as CT_Override;
                                using (writer2.WriteElement("Override"))
                                {
                                    writer2.WriteAttributeString("ContentType", @override.ContentType);
                                    writer2.WriteAttributeString("PartName", @override.PartName);
                                }
                            }
                        }
                    }
                }
                writer2.Flush();
                stream.Seek(0L, (SeekOrigin)SeekOrigin.Begin);
            }
            return(stream);
        }