internal static byte[] GetBytes(WorksheetVisibilities visibility) { switch (visibility) { case WorksheetVisibilities.Visible: return new byte[] { 0x00 }; case WorksheetVisibilities.Hidden: return new byte[] { 0x01 }; case WorksheetVisibilities.StrongHidden: return new byte[] { 0x02 }; default: throw new Exception(string.Format("Unexpected WorksheetVisibilities {0}", visibility)); } }
internal static byte[] GetBytes(WorksheetVisibilities visibility) { switch (visibility) { case WorksheetVisibilities.Visible: return(new byte[] { 0x00 }); case WorksheetVisibilities.Hidden: return(new byte[] { 0x01 }); case WorksheetVisibilities.StrongHidden: return(new byte[] { 0x02 }); default: throw new ApplicationException(string.Format("Unexpected WorksheetVisibilities {0}", visibility)); } }
internal Worksheet(XlsDocument doc) { _doc = doc; _visibility = WorksheetVisibilities.Default; _sheettype = WorksheetTypes.Default; _streamByteLength = 0; _dbCellOffsets = new int[0]; _cells = new Cells(this); _rows = new Rows(); _rowBlocks = new RowBlocks(this); _cachedBlockRow = CachedBlockRow.Empty; _columnInfos = new List<ColumnInfo>(); }
internal Worksheet(XlsDocument doc, Record boundSheet, List<Record> sheetRecords) : this(doc) { byte[] byteArray = boundSheet.Data.ByteArray; byte visibility = byteArray[4]; if (visibility == 0x00) _visibility = WorksheetVisibilities.Visible; else if (visibility == 0x01) _visibility = WorksheetVisibilities.Hidden; else if (visibility == 0x02) _visibility = WorksheetVisibilities.StrongHidden; else throw new Exception(string.Format("Unknown Visibility {0}", visibility)); byte type = byteArray[5]; if (type == 0x00) _sheettype = WorksheetTypes.Worksheet; else if (type == 0x02) _sheettype = WorksheetTypes.Chart; else if (type == 0x06) _sheettype = WorksheetTypes.VBModule; else throw new Exception(string.Format("Unknown Sheet Type {0}", type)); List<Record> rowRecords = new List<Record>(); List<Record> cellRecords = new List<Record>(); for (int i = 0; i < sheetRecords.Count; i++) { Record record = sheetRecords[i]; if (record.IsCellRecord()) { if (record.RID == RID.FORMULA) { Record formulaStringRecord = null; if ((i + i) < sheetRecords.Count) { formulaStringRecord = sheetRecords[i + 1]; if (formulaStringRecord.RID != RID.STRING) formulaStringRecord = null; } record = new FormulaRecord(record, formulaStringRecord); } cellRecords.Add(record); } else if (record.RID == RID.ROW) rowRecords.Add(record); } //Add the Rows first so they exist for adding the Cells foreach (Record rowRecord in rowRecords) { Bytes rowBytes = rowRecord.Data; ushort rowIndex = rowBytes.Get(0, 2).GetBits().ToUInt16(); Row row = Rows.AddRow(rowIndex); bool isDefaultHeight = rowBytes.Get(6, 2).GetBits().Values[15]; ushort height = 0; if (!isDefaultHeight) { height = rowBytes.Get(6, 2).GetBits().Get(0, 14).ToUInt16(); //TODO: Set height on Row when reading (after Row Height implemented) } bool defaultsWritten = (rowBytes.Get(10, 1).ByteArray[0] == 0x01); if (defaultsWritten) { //TODO: Read ROW record defaults } } foreach (Record record in cellRecords) AddCells(record); _name = UnicodeBytes.Read(boundSheet.Data.Get(6, boundSheet.Data.Length - 6), 8); }
internal Worksheet(XlsDocument doc, Record boundSheet, List<Record> sheetRecords) : this(doc) { byte[] byteArray = boundSheet.Data.ByteArray; byte visibility = byteArray[4]; if (visibility == 0x00) _visibility = WorksheetVisibilities.Visible; else if (visibility == 0x01) _visibility = WorksheetVisibilities.Hidden; else if (visibility == 0x02) _visibility = WorksheetVisibilities.StrongHidden; else throw new Exception(string.Format("Unknown Visibility {0}", visibility)); byte type = byteArray[5]; if (type == 0x00) _sheettype = WorksheetTypes.Worksheet; else if (type == 0x02) _sheettype = WorksheetTypes.Chart; else if (type == 0x06) _sheettype = WorksheetTypes.VBModule; else throw new Exception(string.Format("Unknown Sheet Type {0}", type)); List<Record> rowRecords = new List<Record>(); List<Record> cellRecords = new List<Record>(); List<Record> noteRecords = new List<Record>(); for (int i = 0; i < sheetRecords.Count; i++) { Record record = sheetRecords[i]; if (record.IsCellRecord()) { if (record.RID == RID.FORMULA) { Record formulaStringRecord = null; if ((i + i) < sheetRecords.Count) { formulaStringRecord = sheetRecords[i + 1]; if (formulaStringRecord.RID != RID.STRING) formulaStringRecord = null; } record = new FormulaRecord(record, formulaStringRecord); } cellRecords.Add(record); } else if (record.RID == RID.ROW) rowRecords.Add(record); else if (record.RID == RID.NOTE) noteRecords.Add(record); } //Add the Rows first so they exist for adding the Cells foreach (Record rowRecord in rowRecords) { Bytes rowBytes = rowRecord.Data; ushort rowIndex = rowBytes.Get(0, 2).GetBits().ToUInt16(); Row row = Rows.AddRow(rowIndex); bool isDefaultHeight = rowBytes.Get(6, 2).GetBits().Values[15]; ushort height = 0; if (!isDefaultHeight) { height = rowBytes.Get(6, 2).GetBits().Get(0, 14).ToUInt16(); //TODO: Set height on Row when reading (after Row Height implemented) } bool defaultsWritten = (rowBytes.Get(10, 1).ByteArray[0] == 0x01); if (defaultsWritten) { //TODO: Read ROW record defaults } } foreach (Record record in cellRecords) AddCells(record); foreach (Record record in noteRecords) AddNote(record); _name = UnicodeBytes.Read(boundSheet.Data.Get(6, boundSheet.Data.Length - 6), 8); }