예제 #1
0
        public void AddContent(PartInfo rel, Stream sourceStream)
        {
            PartInfo parentPart = GetPart(rel.RelatedTo);
            PartInfo clonedPart = new PartInfo(this, rel);
            string sContentType;
            if (ContentIsInternalType(rel.Type))
            {
                sContentType = rel.GetContentType();
                clonedPart.Target = RemoveLeadingSlash(clonedPart.Target);
                parentPart.AddRelatedItem(clonedPart);
                if (m_partsMap.ContainsKey(clonedPart.AbsolutePath()) && sourceStream == null)
                { // we have already added this content via a relationship elsewhere, don't need to write it
                    return;
                }
                m_partsMap.Add(clonedPart.AbsolutePath(), clonedPart);
                
                if (sourceStream != null)
                {
                    string partName = clonedPart.AbsolutePath();
                    AddZipEntry(partName, sourceStream);
                    if (rel.ContentTypeOverriden())
                        m_contentTypes.Add("/" + partName, sContentType);
                }
            }
            else
            {//we should only get here for external rels - so there should never be an additional stream to add
                parentPart.AddRelatedItem(clonedPart);
                sContentType = rel.Type;
                if (m_partsMap.ContainsKey(clonedPart.Target))
                { // we have already added this content via a relationship elsewhere, don't need to write it
                    return;
                }
                m_partsMap.Add(clonedPart.Target, clonedPart);
                if (sourceStream != null)
                {
                    throw new System.InvalidOperationException("Sourcestream is not null for supposedly external hyperlink part");
                }
            }


 
        }
        private bool IsContentPart(PartInfo part)
        {
            switch (part.GetContentType())
            {
                case "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":
                case "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":
                case "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":
                case "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":
                case "application/vnd.openxmlformats-officedocument.wordprocessingml.header+xml":
                case "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":
                    return true;
            }

            return false;

        }
        private void CountContentType(Stream stuff, PartInfo part)
        {
            if (part.GetContentType() == m_sContentType)
                m_iCount++;

        }
        private bool IsContentPart(PartInfo part)
        {
            switch (part.GetContentType())
            {
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":
                case "application/vnd.ms-excel.sheet.macroEnabled.main+xml":
				case "application/vnd.ms-excel.template.macroEnabled.main+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":
                case "application/vnd.ms-excel.intlmacrosheet+xml":
                case "application/vnd.ms-excel.macrosheet+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":
                case "application/vnd.openxmlformats-officedocument.drawing+xml":
                    return true;
            }

            return false;

        }
 private bool IsCommentPart(PartInfo part)
 {
     switch (part.GetContentType())
     {
         case "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":
             return true;
     }
     return false;
 }
        private bool IsSheetPart(PartInfo part)
        {
            switch (part.GetContentType())
            {
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":
                case "application/vnd.ms-excel.intlmacrosheet+xml":
                case "application/vnd.ms-excel.macrosheet+xml":
                    return true;
            }

            return false;

        }
        private bool IsWorkbookPart(PartInfo part)
        {
            switch (part.GetContentType())
            {
                case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":
                case "application/vnd.ms-excel.sheet.macroEnabled.main+xml":
				case "application/vnd.ms-excel.template.macroEnabled.main+xml":
                    return true;

            }
            return false;
        }