Exemple #1
0
 internal void SaveFirstPart(IDataStream DataStream, TSaveData SaveData)
 {
     if (WriteProt != null)
     {
         WriteProt.SaveToStream(DataStream, SaveData, 0);
     }
 }
Exemple #2
0
        internal void SaveToStream(IDataStream DataStream, TSaveData SaveData, TXlsCellRange CellRange)
        {
            int Start  = CellRange == null ? 0 : CellRange.Left;
            int Finish = CellRange == null ? FlxConsts.Max_Columns97_2003 + 1 : CellRange.Right;

            SaveRangeEx(DataStream, SaveData, Start, Finish);
        }
Exemple #3
0
        internal virtual void SaveRangeToStream(IDataStream DataStream, TSaveData SaveData, int Row, TXlsCellRange CellRange)
        {
            if (!FSorted)
            {
                Sort();
            }
            if ((Row < CellRange.Top) || (Row > CellRange.Bottom))
            {
                return;
            }
            int aCount = Count;

            for (int i = 0; i < aCount; i++)
            {
                T it = this[i];
                if (it != null)
                {
                    int c = it.Col;
                    if ((c >= CellRange.Left) && (c <= CellRange.Right))
                    {
                        it.SaveToStream(DataStream, SaveData, Row);
                    }
                }
            }
        }
Exemple #4
0
        internal void SaveRangeToStream(IDataStream DataStream, TSaveData SaveData, TXlsCellRange CellRange)
        {
            int FirstRecord = 0;
            int RecordCount = 0;

            CalcIncludedRangeRecords(CellRange, ref FirstRecord, ref RecordCount);

            if (RecordCount > MaxPageBreaks)
            {
                if (SaveData.ThrowExceptionOnTooManyPageBreaks)
                {
                    XlsMessages.ThrowException(XlsErr.ErrTooManyPageBreaks);
                }
                else
                {
                    RecordCount = MaxPageBreaks;
                }
                if (FlexCelTrace.Enabled)
                {
                    FlexCelTrace.Write(new TXlsTooManyPageBreaksError(XlsMessages.GetString(XlsErr.ErrTooManyPageBreaks), DataStream.FileName));
                }
            }

            SaveToStreamExt(DataStream, SaveData, FirstRecord, RecordCount);
        }
Exemple #5
0
 internal void SaveSecondPart(IDataStream DataStream, TSaveData SaveData)
 {
     if (SheetProtect != null)
     {
         SheetProtect.SaveToStream(DataStream, SaveData, 0);
     }
 }
Exemple #6
0
        internal override void SaveToStream(IDataStream Workbook, TSaveData SaveData, int Row)
        {
            if ((SaveData.ExcludedRecords & TExcludedRecords.Version) != 0)
            {
                return;                                                             //Note that this will invalidate the size, but it doesn't matter as this is not saved for real use. We could write blanks here if we wanted to keep the offsets right.
            }
            byte[] ExcelBuild; byte[] ExcelVersion;
            if (SaveData.BiffVersion == TXlsBiffVersion.Excel2003)
            {
                ExcelBuild   = Excel2003Build;
                ExcelVersion = Excel2003Version;
            }
            else
            {
                ExcelBuild   = Excel2007Build;
                ExcelVersion = Excel2007Version;
            }

            Workbook.WriteHeader((UInt16)Id, (UInt16)Data.Length);
            Workbook.WriteRaw(Data, 4);
            Workbook.WriteRaw(ExcelBuild, ExcelBuild.Length);

            Workbook.WriteRaw(ExcelVersion, 1);
            Workbook.WriteRaw(Data, 14, Data.Length - 14);
        }
Exemple #7
0
 internal void SaveToStream(IDataStream DataStream, TSaveData SaveData)
 {
     for (int i = 0; i < Count; i++)
     {
         SaveData.SavingSheet = FList[i];
         FList[i].SaveToStream(DataStream, SaveData);
     }
 }
Exemple #8
0
 internal override void SaveToStream(IDataStream Workbook, TSaveData SaveData, int Row)
 {
     if ((SaveData.ExcludedRecords & TExcludedRecords.WriteAccess) != 0)
     {
         return;                                                                 //Note that this will invalidate the size, but it doesnt matter as this is not saved for real use. We could write blanks here if we wanted to keep the offsets right.
     }
     base.SaveToStream(Workbook, SaveData, Row);
 }
Exemple #9
0
 internal void SaveRangeToStream(IDataStream DataStream, TSaveData SaveData, int SheetIndex)
 {
     if ((SheetIndex >= FBoundSheets.Count) || (SheetIndex < 0))
     {
         XlsMessages.ThrowException(XlsErr.ErrInvalidSheetNo, SheetIndex, 0, FBoundSheets.Count - 1);
     }
     FBoundSheets[SheetIndex].SaveToStream(DataStream, SaveData, 0);
 }
Exemple #10
0
 internal override void SaveToStream(IDataStream Workbook, TSaveData SaveData, int Row)
 {
     Workbook.WriteHeader((UInt16)Id, (UInt16)Data.Length);
     byte[] Pos = new byte[4];
     Array.Copy(Data, 0, Pos, 0, 4);
     Workbook.WriteRaw(Pos, Pos.Length);
     Workbook.Write(Data, 4, Data.Length - 4);
 }
Exemple #11
0
 internal void SaveRangeToStream(IDataStream Workbook, TSaveData SaveData, TXlsCellRange CellRange)
 {
     if (FirstRow > CellRange.Bottom || LastRow < CellRange.Top || FirstCol > CellRange.Right || LastCol < CellRange.Left)
     {
         return;
     }
     SaveToStream(Workbook, SaveData, -1);
 }
Exemple #12
0
        internal void SaveToStream(IDataStream DataStream, TSaveData SaveData)
        {
            PrepareToSave();
            FixBoundSheetsOffset(DataStream.Encryption, SaveData.Repeatable);

            FGlobals.SaveToStream(DataStream, SaveData);
            FSheets.SaveToStream(DataStream, SaveData);
        }
Exemple #13
0
 internal override void SaveToStream(IDataStream Workbook, TSaveData SaveData, int Row)
 {
     base.SaveToStream(Workbook, SaveData, Row);
     byte[] b = new byte[2];
     b[0] = BoolErr;
     b[1] = ErrFlag;
     Workbook.Write(b, 2);
 }
Exemple #14
0
 internal override void SaveFirstMul(IDataStream Workbook, TSaveData SaveData, int Row, int JoinedRecordSize)
 {
     unchecked
     {
         Workbook.WriteHeader((UInt16)xlr.MULBLANK, (UInt16)(JoinedRecordSize - XlsConsts.SizeOfTRecordHeader));
         Workbook.Write32((UInt32)((UInt16)Row + (((UInt16)Col) << 16)));
     }
     Workbook.Write16(SaveData.GetBiff8FromCellXF(XF));
 }
Exemple #15
0
        internal override void SaveToStream(IDataStream Workbook, TSaveData SaveData, int Row)
        {
            base.SaveToStream(Workbook, SaveData, Row);
            Workbook.Write16(OptionFlags);
            Workbook.Write16(ObjId);

            byte[] bAuthor = Biff8Author();
            Workbook.Write(bAuthor, bAuthor.Length);
        }
Exemple #16
0
        private void SaveRangeToStream(IDataStream DataStream, TSaveData SaveData, TXlsCellRange CellRange)
        {
            Sort();
            int aCount = Count;

            for (int i = 0; i < aCount; i++)
            {
                this[i].SaveRangeToStream(DataStream, SaveData, CellRange);
            }
        }
Exemple #17
0
        private void SaveAllToStream(IDataStream DataStream, TSaveData SaveData)
        {
            Sort();
            int aCount = Count;

            for (int i = 0; i < aCount; i++)
            {
                this[i].SaveToStream(DataStream, SaveData, -1);
            }
        }
Exemple #18
0
 private void SaveOneRecord(int i, int k, IDataStream DataStream, TSaveData SaveData)
 {
     DataStream.WriteHeader((UInt16)xlr.COLINFO, (UInt16)TColInfoRecord.Length);
     DataStream.Write16((UInt16)i);
     DataStream.Write16((UInt16)k);
     DataStream.Write16((UInt16)this[i].Width);
     DataStream.Write16(SaveData.GetBiff8FromCellXF(this[i].XF));
     DataStream.Write16((UInt16)(this[i].Options));
     DataStream.Write16(0);
 }
Exemple #19
0
 internal void SaveToStream(IDataStream DataStream, TSaveData SaveData, TBreakList BreakList)
 {
     for (int i = 0; i < Count; i++)
     {
         if (FList[i] != null)
         {
             FList[i].SaveToStream(DataStream, SaveData, BreakList);
         }
     }
 }
Exemple #20
0
 internal void SaveToStream(IDataStream DataStream, TSaveData SaveData, TXlsCellRange CellRange)
 {
     if (CellRange == null)
     {
         SaveAllToStream(DataStream, SaveData);
     }
     else
     {
         SaveRangeToStream(DataStream, SaveData, CellRange);
     }
 }
Exemple #21
0
 internal void SaveDialogSheetProtect(IDataStream DataStream, TSaveData SaveData)
 {
     if (Protect != null)
     {
         Protect.SaveToStream(DataStream, SaveData, 0);
     }
     if (Password != null)
     {
         Password.SaveToStream(DataStream, SaveData, 0);
     }
 }
Exemple #22
0
 internal void SaveSecondPart(IDataStream DataStream, TSaveData SaveData)
 {
     InterfaceHdr.SaveToStream(DataStream, SaveData, 0);
     if (WriteAccess != null)
     {
         WriteAccess.SaveToStream(DataStream, SaveData, 0);
     }
     if (FileSharing != null)
     {
         FileSharing.SaveToStream(DataStream, SaveData, 0);
     }
 }
Exemple #23
0
        internal void SaveToStream(IDataStream DataStream, TSaveData SaveData, TWindow win)
        {
            byte[] RecordOrder = { 3, 1, 2, 0 };

            for (int i = 0; i < Panes.Length; i++)
            {
                if (MustSavePane(RecordOrder[i], win))
                {
                    Panes[RecordOrder[i]].SaveToStream(DataStream, SaveData, (byte)RecordOrder[i]);
                }
            }
        }
Exemple #24
0
        public virtual void SaveToStream(IDataStream DataStream, TSaveData SaveData, int Row)
        {
            int aCount = FList.Count;

            for (int i = 0; i < aCount; i++)
            {
                T it = (T)FList[i];
                if (it != null)
                {
                    it.SaveToStream(DataStream, SaveData, Row);
                }
            }
        }
Exemple #25
0
 internal override void SaveToStream(IDataStream Workbook, TSaveData SaveData, int Row)
 {
     Workbook.WriteHeader((UInt16)Id, (UInt16)CalcBiff8Len());
     SaveBiff8Data(Workbook, true);
     if (Hint != null)
     {
         Hint.FirstRow = FirstRow;
         Hint.FirstCol = FirstCol;
         Hint.LastRow  = LastRow;
         Hint.LastCol  = LastCol;
         Hint.SaveToStream(Workbook, SaveData, Row);
     }
 }
Exemple #26
0
        internal override void SaveToStream(IDataStream Workbook, TSaveData SaveData, int Row)
        {
            //We can't check for ColSplit/RowSplit since we don't know what it is. It doesn't really matter either.
            Biff8Utils.CheckRow(FirstVisibleRow);
            Biff8Utils.CheckCol(FirstVisibleCol);

            Workbook.WriteHeader((UInt16)Id, (UInt16)TotalSizeNoHeaders());
            Workbook.Write16((UInt16)ColSplit);
            Workbook.Write16((UInt16)RowSplit);
            Workbook.Write16((UInt16)FirstVisibleRow);
            Workbook.Write16((UInt16)FirstVisibleCol);
            Workbook.Write16((UInt16)ActivePane);
        }
Exemple #27
0
        internal void SaveRangeToStream(IDataStream DataStream, TSaveData SaveData, int SheetIndex, TXlsCellRange CellRange)
        {
            FixNames();
            FixCodeNames(); //before fixing offsets.
            FixRows();      //Should be before calculating the offset. It is needed because some non-excel generated files might not have all rows.
            FixRangeBoundSheetsOffset(SheetIndex, CellRange, DataStream.Encryption, SaveData.Repeatable);
            FixNotes();
            FixRadioButtons();

            FGlobals.SaveRangeToStream(DataStream, SaveData, SheetIndex, CellRange);
            //we don't have to check SheetIndex is ok. this was done on FGlobals.SaveRangetoStream
            SaveData.SavingSheet = FSheets[SheetIndex];
            FSheets[SheetIndex].SaveRangeToStream(DataStream, SaveData, SheetIndex, CellRange);
        }
Exemple #28
0
        private void SaveToStreamExt(IDataStream DataStream, TSaveData SaveData, int FirstRecord, int RecordCount)
        {
            if (RecordCount > 0)
            {
                Sort(); //just in case...
                int MyRecordCount = RecordCount;

                DataStream.WriteHeader((UInt16)RecordId, (UInt16)(2 + RecordCount * TPageBreak.Biff8Length));
                DataStream.Write16((UInt16)MyRecordCount);
                for (int i = FirstRecord; i < FirstRecord + RecordCount; i++)
                {
                    DataStream.Write(FList[i].Biff8Data(), TPageBreak.Biff8Length);
                }
            }
        }
Exemple #29
0
        internal void SaveAllToStream(IDataStream DataStream, TSaveData SaveData)
        {
            if (RealCount() > MaxPageBreaks)
            {
                if (SaveData.ThrowExceptionOnTooManyPageBreaks)
                {
                    XlsMessages.ThrowException(XlsErr.ErrTooManyPageBreaks);
                }

                if (FlexCelTrace.Enabled)
                {
                    FlexCelTrace.Write(new TXlsTooManyPageBreaksError(XlsMessages.GetString(XlsErr.ErrTooManyPageBreaks), DataStream.FileName));
                }
            }

            SaveToStreamExt(DataStream, SaveData, 0, VirtualCount);
        }
Exemple #30
0
        internal void SaveToStream(IDataStream DataStream, TSaveData SaveData)
        {
            long BeginRecordPos = DataStream.Position;

            byte[] Buffer = new byte[XlsConsts.MaxRecordDataSize + 4];
            Array.Copy(BitConverter.GetBytes((UInt16)xlr.SST), 0, Buffer, 0, 2);

            bool   Repeatable = SaveData.Repeatable;
            UInt32 TotalRefs;
            IEnumerator <KeyValuePair <TSSTEntry, TSSTEntry> > myEnumerator;

            TSSTEntry[] SortedEntries;
            PrepareToSave(Repeatable, out TotalRefs, out myEnumerator, out SortedEntries);

            Array.Copy(BitConverter.GetBytes(TotalRefs), 0, Buffer, 4, 4);
            Array.Copy(BitConverter.GetBytes((UInt32)Data.Count), 0, Buffer, 8, 4);

            int  BufferPos = 4 + 8;
            long TotalSize = 0;

            if (Repeatable)
            {
                //REPEATABLEWRITES
                foreach (TSSTEntry Se in SortedEntries)
                {
                    Se.SaveToStream(DataStream, Buffer, ref BufferPos, ref BeginRecordPos, ref TotalSize);
                }
            }
            else
            {
                myEnumerator.Reset();
                while (myEnumerator.MoveNext())
                {
                    myEnumerator.Current.Key.SaveToStream(DataStream, Buffer, ref BufferPos, ref BeginRecordPos, ref TotalSize);
                }
            }

            //Flush the buffer.
            Array.Copy(BitConverter.GetBytes((UInt16)(BufferPos - 4)), 0, Buffer, 2, 2);  //Adapt the record size before writing it.
            DataStream.WriteHeader((UInt16)(Buffer[0] + (Buffer[1] << 8)), (UInt16)(Buffer[2] + (Buffer[3] << 8)));
            DataStream.Write(Buffer, 4, BufferPos - 4);
            TotalSize += BufferPos;


            WriteExtSST(DataStream, Repeatable);
        }