Exemplo n.º 1
0
        public XMLStreamsheetModel(XMLWorkbookModel workbook, XMLWorksheetsModel sheets, PartManager manager, string name, ExcelGeneratorConstants.CreateTempStream createTempStream)
        {
            _workbookModel   = workbook;
            _worksheetsModel = sheets;
            _manager         = manager;
            _interface       = new Streamsheet(this);
            Relationship    relationship = _manager.AddStreamingPartToTree("application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", "xl/worksheets/sheet{0}.xml", (XmlPart)_manager.GetPartByContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"));
            List <CT_Sheet> sheet        = ((CT_Workbook)_manager.Workbook.Root).Sheets.Sheet;

            _sheetentry              = new CT_Sheet();
            _sheetentry.Id_Attr      = relationship.RelationshipId;
            _sheetentry.Name_Attr    = name;
            _sheetentry.SheetId_Attr = sheets.NextId;
            sheet.Add(_sheetentry);
            _partName   = relationship.RelatedPart;
            _headStream = createTempStream(string.Format(CultureInfo.InvariantCulture, "streamsheetHead{0}", _sheetentry.SheetId_Attr));
            _tailStream = createTempStream(string.Format(CultureInfo.InvariantCulture, "streamsheetTail{0}", _sheetentry.SheetId_Attr));
            _headWriter = new StreamsheetParser(new StreamWriter(_headStream), startAtPrelude: true);
            _tailWriter = new StreamsheetParser(new StreamWriter(_tailStream), startAtPrelude: false);
            _headWriter.WritePrelude();
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
 private void CheckAdvancingStatus(StreamsheetParser.StreamSheetSection newSection, StreamsheetParser writer)
 {
     if (_complete)
     {
         throw new FatalException();
     }
     if (writer.CurrentSection > newSection)
     {
         throw new FatalException();
     }
 }