Beispiel #1
0
 private bool IsGoingPast(StreamsheetParser.StreamSheetSection currentSection, StreamsheetParser.StreamSheetSection newSection, StreamsheetParser.StreamSheetSection targetsection)
 {
     if (targetsection >= currentSection)
     {
         return(newSection > targetsection);
     }
     return(false);
 }
Beispiel #2
0
 private void CheckAdvancingStatus(StreamsheetParser.StreamSheetSection newSection, StreamsheetParser writer)
 {
     if (_complete)
     {
         throw new FatalException();
     }
     if (writer.CurrentSection > newSection)
     {
         throw new FatalException();
     }
 }
Beispiel #3
0
        private void AdvanceStreamsheetTo(StreamsheetParser.StreamSheetSection newSection, bool head)
        {
            StreamsheetParser    streamsheetParser   = head ? _headWriter : _tailWriter;
            IOoxmlCtWrapperModel ooxmlCtWrapperModel = head ? _stagedHeadTag : _stagedTailTag;

            CheckAdvancingStatus(newSection, streamsheetParser);
            if (ooxmlCtWrapperModel != null)
            {
                ooxmlCtWrapperModel.Cleanup();
                streamsheetParser.WriteTag(ooxmlCtWrapperModel.OoxmlTag);
                if (head)
                {
                    _stagedHeadTag = null;
                }
                else
                {
                    _stagedTailTag = null;
                }
            }
            if (_stagedPageSetupModel != null && IsGoingPast(streamsheetParser.CurrentSection, newSection, StreamsheetParser.StreamSheetSection.SheetPr))
            {
                _stagedPageSetupModel.Cleanup();
                streamsheetParser.WriteSheetProperties(_stagedPageSetupModel.BackingSheet.SheetPr);
            }
            if (_stagedSheetView != null && IsGoingPast(streamsheetParser.CurrentSection, newSection, StreamsheetParser.StreamSheetSection.SheetViews))
            {
                streamsheetParser.WriteSheetView(_stagedSheetView);
                _stagedSheetView = null;
            }
            if (_stagedPageSetupModel != null && IsGoingPast(streamsheetParser.CurrentSection, newSection, StreamsheetParser.StreamSheetSection.PageMargins))
            {
                _stagedPageSetupModel.Cleanup();
                streamsheetParser.WritePageMargins(_stagedPageSetupModel.BackingSheet.PageMargins);
            }
            if (_stagedPageSetupModel != null && IsGoingPast(streamsheetParser.CurrentSection, newSection, StreamsheetParser.StreamSheetSection.PageSetup))
            {
                _stagedPageSetupModel.Cleanup();
                streamsheetParser.WritePageSetup(_stagedPageSetupModel.BackingSheet.PageSetup);
            }
            if (_stagedPageSetupModel != null && IsGoingPast(streamsheetParser.CurrentSection, newSection, StreamsheetParser.StreamSheetSection.HeaderFooter))
            {
                _stagedPageSetupModel.Cleanup();
                if (_stagedPageSetupModel.BackingSheet.HeaderFooter == null)
                {
                    _stagedPageSetupModel.BackingSheet.HeaderFooter = new CT_HeaderFooter();
                }
                _stagedPageSetupModel.BackingSheet.HeaderFooter.AlignWithMargins_Attr = false;
                streamsheetParser.WriteHeaderFooter(_stagedPageSetupModel.BackingSheet.HeaderFooter);
            }
            if (_stagedDrawingTag != null && IsGoingPast(streamsheetParser.CurrentSection, newSection, StreamsheetParser.StreamSheetSection.Drawing))
            {
                streamsheetParser.WriteTag(_stagedDrawingTag);
                _stagedDrawingTag = null;
            }
            if (_stagedSheetBackgroundTag != null && IsGoingPast(streamsheetParser.CurrentSection, newSection, StreamsheetParser.StreamSheetSection.Picture))
            {
                streamsheetParser.WriteTag(_stagedSheetBackgroundTag);
                _stagedSheetBackgroundTag = null;
            }
            CheckAdvancingStatus(newSection, streamsheetParser);
        }