Exemple #1
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 #2
0
        internal void InsertSheets(int CopyFrom, int InsertBefore, int SheetCount, TWorkbook SourceWorkbook)
        {
            if (SourceWorkbook == null)
            {
                SourceWorkbook = this;
            }
            if (CopyFrom >= SourceWorkbook.Sheets.Count)
            {
                XlsMessages.ThrowException(XlsErr.ErrInvalidSheetNo, CopyFrom, -1, SourceWorkbook.Sheets.Count - 1);
            }
            if (InsertBefore > Sheets.Count)
            {
                XlsMessages.ThrowException(XlsErr.ErrInvalidSheetNo, InsertBefore, 0, Sheets.Count);
            }

            TSheet aSheet      = null;
            int    OptionFlags = 0;

            if (CopyFrom >= 0)
            {
                aSheet      = SourceWorkbook.Sheets[CopyFrom];
                OptionFlags = SourceWorkbook.Globals.SheetOptionFlags(CopyFrom);
            }

            int NewCopyFrom = CopyFrom;

            if (SourceWorkbook == this && CopyFrom >= InsertBefore)
            {
                NewCopyFrom += SheetCount;
            }
            Globals.InsertSheets(CopyFrom, InsertBefore, OptionFlags, XlsMessages.GetString(XlsErr.BaseSheetName), SheetCount, SourceWorkbook.Sheets);

            TSheetInfo SheetInfo = new TSheetInfo(-1, -1, -1, SourceWorkbook.Globals, Globals, aSheet, null, false);

            for (int i = 0; i < SheetCount; i++)
            {
                SheetInfo.InsSheet           = InsertBefore + i;
                SheetInfo.SourceFormulaSheet = NewCopyFrom;
                SheetInfo.DestFormulaSheet   = InsertBefore;
                SheetInfo.DestSheet          = null; //keep it null, since the reference does not exist yet.

                if (aSheet == null)
                {
                    Sheets.Insert(InsertBefore, TWorkSheet.CreateFromData(Globals, Globals.Workbook.XlsBiffVersion, Globals.Workbook.ExcelFileFormat));
                }
                else
                {
                    SheetInfo.DestFormulaSheet = InsertBefore + i;
                    Globals.Names.InsertSheets(NewCopyFrom, InsertBefore + i, 1, SheetInfo, SourceWorkbook == this); //names must be inserted before the sheet is cloned, so formulas can refer to them.
                    Sheets.Insert(InsertBefore + i, TSheet.Clone(aSheet, SheetInfo));
                    SheetInfo.DestSheet = Sheets[InsertBefore + i];
                    Sheets[InsertBefore + i].ArrangeCopySheet(SheetInfo);
                }
            }
        }
Exemple #3
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 #4
0
 /// <summary>
 /// Creates a new ETokenException for a specific Token.
 /// </summary>
 /// <param name="aToken"></param>
 public ETokenException(int aToken) : base(XlsMessages.GetString(XlsErr.ErrBadToken, aToken), XlsErr.ErrBadToken)
 {
     InitState(aToken);
 }
Exemple #5
0
 /// <summary>
 /// Creates an empty ETokenException.
 /// </summary>
 public ETokenException() : base(XlsMessages.GetString(XlsErr.ErrBadToken, 0), XlsErr.ErrBadToken)
 {
     InitState(0);
 }