Represents an Excel file stream
示例#1
0
        /// <summary>
        /// Creates Root Directory catalog from XlsHeader
        /// </summary>
        /// <param name="hdr">XlsHeader object</param>
        public XlsRootDirectory(XlsHeader hdr) {
            var stream=new XlsStream(hdr, hdr.RootDirectoryEntryStart, false, null);
            var array=stream.ReadStream();
            var entries=new List<XlsDirectoryEntry>();
            for (int i=0; i<array.Length; i+=XlsDirectoryEntry.Length) {
                var tmp = new byte[XlsDirectoryEntry.Length];
                Buffer.BlockCopy(array, i, tmp, 0, tmp.Length);
                entries.Add(new XlsDirectoryEntry(tmp, hdr));
            }
            m_entries=entries;
            foreach (var entry in entries){
                if (m_root==null&&entry.EntryType==STGTY.STGTY_ROOT){
                    m_root = entry;
                }

                if (entry.ChildSid!=(uint)FATMARKERS.FAT_FreeSpace){
                    entry.Child = entries[(int) entry.ChildSid];
                }

                if (entry.LeftSiblingSid!=(uint)FATMARKERS.FAT_FreeSpace){
                    entry.LeftSibling = entries[(int) entry.LeftSiblingSid];
                }

                if (entry.RightSiblingSid!=(uint)FATMARKERS.FAT_FreeSpace){
                    entry.RightSibling = entries[(int) entry.RightSiblingSid];
                }
            }
            stream.CalculateMiniFat(this);
        }
示例#2
0
        /// <summary>
        /// Creates Root Directory catalog from XlsHeader
        /// </summary>
        /// <param name="hdr">XlsHeader object</param>
        public XlsRootDirectory(XlsHeader hdr)
        {
            XlsStream stream = new XlsStream(hdr, hdr.RootDirectoryEntryStart, false, null);
            byte[] array = stream.ReadStream();
            byte[] tmp;
            XlsDirectoryEntry entry;
            List<XlsDirectoryEntry> entries = new List<XlsDirectoryEntry>();
            for (int i = 0; i < array.Length; i += XlsDirectoryEntry.Length)
            {
                tmp = new byte[XlsDirectoryEntry.Length];
                Buffer.BlockCopy(array, i, tmp, 0, tmp.Length);
                entries.Add(new XlsDirectoryEntry(tmp, hdr));
            }
            m_entries = entries;
            for (int i = 0; i < entries.Count; i++)
            {
                entry = entries[i];

                ////Console.WriteLine("Directory Entry:{0} type:{1}, firstsector:{2}, streamSize:{3}, isEntryMiniStream:{4}", entry.EntryName, entry.EntryType.ToString(), entry.StreamFirstSector, entry.StreamSize, entry.IsEntryMiniStream);
                if (m_root == null && entry.EntryType == STGTY.STGTY_ROOT)
                    m_root = entry;
                if (entry.ChildSid != (uint)FATMARKERS.FAT_FreeSpace)
                    entry.Child = entries[(int)entry.ChildSid];
                if (entry.LeftSiblingSid != (uint)FATMARKERS.FAT_FreeSpace)
                    entry.LeftSibling = entries[(int)entry.LeftSiblingSid];
                if (entry.RightSiblingSid != (uint)FATMARKERS.FAT_FreeSpace)
                    entry.RightSibling = entries[(int)entry.RightSiblingSid];
            }
            stream.CalculateMiniFat(this);
        }
示例#3
0
        /// <summary>
        /// Creates Root Directory catalog from XlsHeader
        /// </summary>
        /// <param name="hdr">XlsHeader object</param>
        public XlsRootDirectory(XlsHeader hdr)
        {
            XlsStream stream = new XlsStream(hdr, hdr.RootDirectoryEntryStart, false, null);

            byte[]                   array = stream.ReadStream();
            byte[]                   tmp;
            XlsDirectoryEntry        entry;
            List <XlsDirectoryEntry> entries = new List <XlsDirectoryEntry>();

            for (int i = 0; i < array.Length; i += XlsDirectoryEntry.Length)
            {
                tmp = new byte[XlsDirectoryEntry.Length];
                Buffer.BlockCopy(array, i, tmp, 0, tmp.Length);
                entries.Add(new XlsDirectoryEntry(tmp, hdr));
            }
            m_entries = entries;
            for (int i = 0; i < entries.Count; i++)
            {
                entry = entries[i];

                ////Console.WriteLine("Directory Entry:{0} type:{1}, firstsector:{2}, streamSize:{3}, isEntryMiniStream:{4}", entry.EntryName, entry.EntryType.ToString(), entry.StreamFirstSector, entry.StreamSize, entry.IsEntryMiniStream);
                if (m_root == null && entry.EntryType == STGTY.STGTY_ROOT)
                {
                    m_root = entry;
                }
                if (entry.ChildSid != (uint)FATMARKERS.FAT_FreeSpace)
                {
                    entry.Child = entries[(int)entry.ChildSid];
                }
                if (entry.LeftSiblingSid != (uint)FATMARKERS.FAT_FreeSpace)
                {
                    entry.LeftSibling = entries[(int)entry.LeftSiblingSid];
                }
                if (entry.RightSiblingSid != (uint)FATMARKERS.FAT_FreeSpace)
                {
                    entry.RightSibling = entries[(int)entry.RightSiblingSid];
                }
            }
            stream.CalculateMiniFat(this);
        }