public override Object Clone() { WindowTwoRecord rec = new WindowTwoRecord(); rec.field_1_options = field_1_options; rec.field_2_top_row = field_2_top_row; rec.field_3_left_col = field_3_left_col; rec.field_4_header_color = field_4_header_color; rec.field_5_page_break_zoom = field_5_page_break_zoom; rec.field_6_normal_zoom = field_6_normal_zoom; rec.field_7_reserved = field_7_reserved; return(rec); }
public override Object Clone() { WindowTwoRecord rec = new WindowTwoRecord(); rec.field_1_options = field_1_options; rec.field_2_top_row = field_2_top_row; rec.field_3_left_col = field_3_left_col; rec.field_4_header_color = field_4_header_color; rec.field_5_page_break_zoom = field_5_page_break_zoom; rec.field_6_normal_zoom = field_6_normal_zoom; rec.field_7_reserved = field_7_reserved; return rec; }
/// <summary> /// Initializes a new instance of the <see cref="InternalSheet"/> class. /// </summary> /// <param name="rs">The stream.</param> private InternalSheet(RecordStream rs) { _mergedCellsTable = new MergedCellsTable(); RowRecordsAggregate rra = null; records = new List<RecordBase>(128); // TODO - take chart streams off into separate java objects //int bofEofNestingLevel = 0; // nesting level can only get to 2 (when charts are present) int dimsloc = -1; if (rs.PeekNextSid() != BOFRecord.sid) { throw new Exception("BOF record expected"); } BOFRecord bof = (BOFRecord)rs.GetNext(); if (bof.Type != BOFRecord.TYPE_WORKSHEET) { // TODO - fix junit tests throw new RuntimeException("Bad BOF record type"); } records.Add(bof); while (rs.HasNext()) { int recSid = rs.PeekNextSid(); if (recSid == CFHeaderRecord.sid) { condFormatting = new ConditionalFormattingTable(rs); records.Add(condFormatting); continue; } if (recSid == ColumnInfoRecord.sid) { _columnInfos = new ColumnInfoRecordsAggregate(rs); records.Add(_columnInfos); continue; } if (recSid == DVALRecord.sid) { _dataValidityTable = new DataValidityTable(rs); records.Add(_dataValidityTable); continue; } if (RecordOrderer.IsRowBlockRecord(recSid)) { //only Add the aggregate once if (rra != null) { throw new InvalidOperationException("row/cell records found in the wrong place"); } RowBlocksReader rbr = new RowBlocksReader(rs); _mergedCellsTable.AddRecords(rbr.LooseMergedCells); rra = new RowRecordsAggregate(rbr.PlainRecordStream, rbr.SharedFormulaManager); records.Add(rra); //only Add the aggregate once continue; } if (CustomViewSettingsRecordAggregate.IsBeginRecord(recSid)) { // This happens three times in test sample file "29982.xls" // Also several times in bugzilla samples 46840-23373 and 46840-23374 records.Add(new CustomViewSettingsRecordAggregate(rs)); continue; } if (PageSettingsBlock.IsComponentRecord(recSid)) { if (_psBlock == null) { // first PSB record encountered - read all of them: _psBlock = new PageSettingsBlock(rs); records.Add(_psBlock); } else { // one or more PSB records found after some intervening non-PSB records _psBlock.AddLateRecords(rs); } // YK: in some cases records can be moved to the preceding // CustomViewSettingsRecordAggregate blocks _psBlock.PositionRecords(records); continue; } if (WorksheetProtectionBlock.IsComponentRecord(recSid)) { _protectionBlock.AddRecords(rs); continue; } if (recSid == MergeCellsRecord.sid) { // when the MergedCellsTable is found in the right place, we expect those records to be contiguous _mergedCellsTable.Read(rs); continue; } if (recSid == BOFRecord.sid) { ChartSubstreamRecordAggregate chartAgg = new ChartSubstreamRecordAggregate(rs); //if (false) //{ // TODO - would like to keep the chart aggregate packed, but one unit test needs attention // records.Add(chartAgg); //} //else //{ SpillAggregate(chartAgg, records); //} continue; } Record rec = rs.GetNext(); if (recSid == IndexRecord.sid) { // ignore INDEX record because it is only needed by Excel, // and POI always re-calculates its contents continue; } if (recSid == UncalcedRecord.sid) { // don't Add UncalcedRecord to the list _isUncalced = true; // this flag is enough continue; } if (recSid == FeatRecord.sid || recSid == FeatHdrRecord.sid) { records.Add(rec); continue; } if (recSid == EOFRecord.sid) { records.Add(rec); break; } if (recSid == DimensionsRecord.sid) { // Make a columns aggregate if one hasn't Ready been created. if (_columnInfos == null) { _columnInfos = new ColumnInfoRecordsAggregate(); records.Add(_columnInfos); } _dimensions = (DimensionsRecord)rec; dimsloc = records.Count; } else if (recSid == DefaultColWidthRecord.sid) { defaultcolwidth = (DefaultColWidthRecord)rec; } else if (recSid == DefaultRowHeightRecord.sid) { defaultrowheight = (DefaultRowHeightRecord)rec; } else if (recSid == PrintGridlinesRecord.sid) { printGridlines = (PrintGridlinesRecord)rec; } else if (recSid == GridsetRecord.sid) { gridset = (GridsetRecord)rec; } else if (recSid == SelectionRecord.sid) { selection = (SelectionRecord)rec; } else if (recSid == WindowTwoRecord.sid) { windowTwo = (WindowTwoRecord)rec; } else if (recSid == SheetExtRecord.sid) { sheetext = (SheetExtRecord)rec; } else if (recSid == GutsRecord.sid) { _gutsRecord = (GutsRecord)rec; } records.Add(rec); } if (windowTwo == null) { throw new InvalidOperationException("WINDOW2 was not found"); } if (_dimensions == null) { // Excel seems to always write the DIMENSION record, but tolerates when it is not present // in all cases Excel (2007) adds the missing DIMENSION record if (rra == null) { // bug 46206 alludes to files which skip the DIMENSION record // when there are no row/cell records. // Not clear which application wrote these files. rra = new RowRecordsAggregate(); } else { //log.log(POILogger.WARN, "DIMENSION record not found even though row/cells present"); // Not sure if any tools write files like this, but Excel reads them OK } dimsloc = FindFirstRecordLocBySid(WindowTwoRecord.sid); _dimensions = rra.CreateDimensions(); records.Insert(dimsloc, _dimensions); } if (rra == null) { rra = new RowRecordsAggregate(); records.Insert(dimsloc + 1, rra); } _rowsAggregate = rra; // put merged cells table in the right place (regardless of where the first MergedCellsRecord was found */ RecordOrderer.AddNewSheetRecord(records, _mergedCellsTable); RecordOrderer.AddNewSheetRecord(records, _protectionBlock); //if (log.Check(POILogger.DEBUG)) // log.Log(POILogger.DEBUG, "sheet createSheet (existing file) exited"); }
private InternalSheet() { _mergedCellsTable = new MergedCellsTable(); records = new List<RecordBase>(32); //if (log.Check(POILogger.DEBUG)) // log.Log(POILogger.DEBUG, "Sheet Createsheet from scratch called"); records.Add(CreateBOF()); records.Add(CreateCalcMode()); records.Add(CreateCalcCount()); records.Add(CreateRefMode()); records.Add(CreateIteration()); records.Add(CreateDelta()); records.Add(CreateSaveRecalc()); records.Add(CreatePrintHeaders()); printGridlines = CreatePrintGridlines(); records.Add(printGridlines); gridset = CreateGridset(); records.Add(gridset); _gutsRecord = CreateGuts(); records.Add(_gutsRecord); defaultrowheight = CreateDefaultRowHeight(); records.Add(defaultrowheight); records.Add(CreateWSBool()); // 'Page Settings Block' _psBlock = new PageSettingsBlock(); records.Add(_psBlock); // 'Worksheet Protection Block' (after 'Page Settings Block' and before DEFCOLWIDTH) records.Add(_protectionBlock); defaultcolwidth = CreateDefaultColWidth(); records.Add(defaultcolwidth); ColumnInfoRecordsAggregate columns = new ColumnInfoRecordsAggregate(); records.Add(columns); _columnInfos = columns; _dimensions = CreateDimensions(); records.Add(_dimensions); _rowsAggregate = new RowRecordsAggregate(); records.Add(_rowsAggregate); // 'Sheet View Settings' records.Add(windowTwo = CreateWindowTwo()); selection = CreateSelection(); records.Add(selection); records.Add(_mergedCellsTable); // MCT comes after 'Sheet View Settings' sheetext = new SheetExtRecord(); records.Add(sheetext); records.Add(EOFRecord.instance); //if (log.Check(POILogger.DEBUG)) // log.Log(POILogger.DEBUG, "Sheet Createsheet from scratch exit"); }
/** * Creates the WindowTwo Record and Sets it to: * options = 0x6b6 * toprow = 0 * leftcol = 0 * headercolor = 0x40 * pagebreakzoom = 0x0 * normalzoom = 0x0 * @see org.apache.poi.hssf.record.WindowTwoRecord * @see org.apache.poi.hssf.record.Record * @return record containing a WindowTwoRecord */ private static WindowTwoRecord CreateWindowTwo() { WindowTwoRecord retval = new WindowTwoRecord(); retval.Options = ((short)0x6b6); retval.TopRow = ((short)0); retval.LeftCol = ((short)0); retval.HeaderColor = (0x40); retval.PageBreakZoom = ((short)0); retval.NormalZoom = ((short)0); return retval; }