private static byte[] Read(RecordInputStream in1, int size) { byte[] result = new byte[size]; in1.ReadFully(result); return(result); }
/** * Constructs a FnGroupCount record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public FnGroupCountRecord(RecordInputStream in1) { field_1_count = in1.ReadShort(); }
public StreamEncryptionInfo(RecordInputStream rs, List <Record> outputRecs) { Record rec; rs.NextRecord(); int recSize = 4 + rs.Remaining; rec = RecordFactory.CreateSingleRecord(rs); outputRecs.Add(rec); FilePassRecord fpr = null; if (rec is BOFRecord) { _hasBOFRecord = true; // Fetch the next record, and see if it indicates whether // the document is encrypted or not if (rs.HasNextRecord) { rs.NextRecord(); rec = RecordFactory.CreateSingleRecord(rs); recSize += rec.RecordSize; outputRecs.Add(rec); // Encrypted is normally BOF then FILEPASS // May sometimes be BOF, WRITEPROTECT, FILEPASS if (rec is WriteProtectRecord && rs.HasNextRecord) { rs.NextRecord(); rec = RecordFactory.CreateSingleRecord(rs); recSize += rec.RecordSize; outputRecs.Add(rec); } // If it's a FILEPASS, track it specifically but // don't include it in the main stream if (rec is FilePassRecord) { fpr = (FilePassRecord)rec; outputRecs.RemoveAt(outputRecs.Count - 1); // TODO - add fpr not Added to outPutRecs rec = outputRecs[0]; } else { // workbook not encrypted (typical case) if (rec is EOFRecord) { // A workbook stream is never empty, so crash instead // of trying to keep track of nesting level throw new InvalidOperationException("Nothing between BOF and EOF"); } } } } else { // Invalid in a normal workbook stream. // However, some test cases work on sub-sections of // the workbook stream that do not begin with BOF _hasBOFRecord = false; } _InitialRecordsSize = recSize; _filePassRec = fpr; _lastRecord = rec; }
/** * Constructs a PasswordRev4 (PROT4REVPASS) record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public PasswordRev4Record(RecordInputStream in1) { field_1_password = in1.ReadShort(); }
/** * Constructs a RightMargin record and Sets its fields appropriately. * * @param id id must be 0x27 or an exception * will be throw upon validation * @param size size the size of the data area of the record * @param data data of the record (should not contain sid/len) */ public RightMarginRecord(RecordInputStream in1) { field_1_margin = in1.ReadDouble(); }
/** * Constructs a Delta record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public DeltaRecord(RecordInputStream in1) { field_1_max_change = in1.ReadDouble(); }
/** * Constructs a Extern Sheet Sub Record record and Sets its fields appropriately. * * @param in the RecordInputstream to Read the record from */ public ExternSheetSubRecord(RecordInputStream in1) { field_1_index_to_supbook = in1.ReadShort(); field_2_index_to_first_supbook_sheet = in1.ReadShort(); field_3_index_to_last_supbook_sheet = in1.ReadShort(); }
/** * Constructs a BackupRecord and Sets its fields appropriately * @param in the RecordInputstream to Read the record from */ public BackupRecord(RecordInputStream in1) { field_1_backup = in1.ReadShort(); }
/** * Constructs an Header record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public HeaderRecord(RecordInputStream in1) : base(in1) { }
public InfoSubRecord(RecordInputStream in1) { field_1_stream_pos = in1.ReadInt(); field_2_bucket_sst_offset = in1.ReadShort(); field_3_zero = in1.ReadShort(); }
public DrawingSelectionRecord(RecordInputStream in1) : base(in1) { }
/** * Constructs a ProtectionRev4 record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public ProtectionRev4Record(RecordInputStream in1) : this(in1.ReadShort()) { }
/** * Constructs a PrintGridlines record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public PrintGridlinesRecord(RecordInputStream in1) { field_1_print_gridlines = in1.ReadShort(); }
private RkRec(RecordInputStream in1) { xf = in1.ReadShort(); rk = in1.ReadInt(); }
/** * Constructs a Precision record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public PrecisionRecord(RecordInputStream in1) { field_1_precision = in1.ReadShort(); }
/** * Constructs a SCL record and Sets its fields appropriately. * * @param in the RecordInputstream to Read the record from */ public SCLRecord(RecordInputStream in1) { field_1_numerator = in1.ReadShort(); field_2_denominator = in1.ReadShort(); }
public RowDataRecord(RecordInputStream in1) { _rawData = in1.ReadRemainder(); }
public TextObjectRecord(RecordInputStream in1) { field_1_options = in1.ReadUShort(); field_2_textOrientation = in1.ReadUShort(); field_3_reserved4 = in1.ReadUShort(); field_4_reserved5 = in1.ReadUShort(); field_5_reserved6 = in1.ReadUShort(); int field_6_textLength = in1.ReadUShort(); int field_7_formattingDataLength = in1.ReadUShort(); field_8_reserved7 = in1.ReadInt(); if (in1.Remaining > 0) { // Text Objects can have simple reference formulas // (This bit not mentioned in the MS document) if (in1.Remaining < 11) { throw new RecordFormatException("Not enough remaining data for a link formula"); } int formulaSize = in1.ReadUShort(); _unknownPreFormulaInt = in1.ReadInt(); Ptg[] ptgs = Ptg.ReadTokens(formulaSize, in1); if (ptgs.Length != 1) { throw new RecordFormatException("Read " + ptgs.Length + " tokens but expected exactly 1"); } _linkRefPtg = (OperandPtg)ptgs[0]; if (in1.Remaining > 0) { _unknownPostFormulaByte = (byte)in1.ReadByte(); } else { _unknownPostFormulaByte = null; } } else { _linkRefPtg = null; } if (in1.Remaining > 0) { throw new RecordFormatException("Unused " + in1.Remaining + " bytes at end of record"); } String text; if (field_6_textLength > 0) { text = ReadRawString(in1, field_6_textLength); } else { text = ""; } _text = new HSSFRichTextString(text); if (field_7_formattingDataLength > 0) { ProcessFontRuns(in1, _text, field_7_formattingDataLength); } }
/// <summary> /// Constructs a DefaultRowHeight record and Sets its fields appropriately. /// </summary> /// <param name="in1">the RecordInputstream to Read the record from</param> public DefaultRowHeightRecord(RecordInputStream in1) { field_1_option_flags = in1.ReadShort(); field_2_row_height = in1.ReadShort(); }
/** * Constructs a GridSet record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public GridsetRecord(RecordInputStream in1) { field_1_gridset_flag = in1.ReadShort(); }
/** * @param in the RecordInputstream to Read the record from */ public RefSubRecord(RecordInputStream in1) : this(in1.ReadShort(), in1.ReadShort(), in1.ReadShort()) { }
/** * Constructs a Units record and Sets its fields appropriately. * * @param in the RecordInputstream to Read the record from */ public UnitsRecord(RecordInputStream in1) { field_1_units = in1.ReadShort(); }
/** * Constructs a CalcCountRecord and Sets its fields appropriately * @param in the RecordInputstream to Read the record from * */ public CalcCountRecord(RecordInputStream in1) { field_1_iterations = in1.ReadShort(); }
/** * Read hyperlink from input stream * * @param in the stream to Read from */ public HyperlinkRecord(RecordInputStream in1) { _range = new CellRangeAddress(in1); // 16-byte GUID _guid = new GUID(in1); /* * streamVersion (4 bytes): An unsigned integer that specifies the version number * of the serialization implementation used to save this structure. This value MUST equal 2. */ int streamVersion = in1.ReadInt(); if (streamVersion != 0x00000002) { throw new RecordFormatException("Stream Version must be 0x2 but found " + streamVersion); } _linkOpts = in1.ReadInt(); if ((_linkOpts & HLINK_LABEL) != 0) { int label_len = in1.ReadInt(); _label = in1.ReadUnicodeLEString(label_len); } if ((_linkOpts & HLINK_TARGET_FRAME) != 0) { int len = in1.ReadInt(); _targetFrame = in1.ReadUnicodeLEString(len); } if ((_linkOpts & HLINK_URL) != 0 && (_linkOpts & HLINK_UNC_PATH) != 0) { _moniker = null; int nChars = in1.ReadInt(); _address = in1.ReadUnicodeLEString(nChars); } if ((_linkOpts & HLINK_URL) != 0 && (_linkOpts & HLINK_UNC_PATH) == 0) { _moniker = new GUID(in1); if (URL_MONIKER.Equals(_moniker)) { int length = in1.ReadInt(); /* * The value of <code>length<code> be either the byte size of the url field * (including the terminating NULL character) or the byte size of the url field plus 24. * If the value of this field is set to the byte size of the url field, * then the tail bytes fields are not present. */ int remaining = in1.Remaining; if (length == remaining) { int nChars = length / 2; _address = in1.ReadUnicodeLEString(nChars); } else { int nChars = (length - TAIL_SIZE) / 2; _address = in1.ReadUnicodeLEString(nChars); /* * TODO: make sense of the remaining bytes * According to the spec they consist of: * 1. 16-byte GUID: This field MUST equal * {0xF4815879, 0x1D3B, 0x487F, 0xAF, 0x2C, 0x82, 0x5D, 0xC4, 0x85, 0x27, 0x63} * 2. Serial version, this field MUST equal 0 if present. * 3. URI Flags */ _uninterpretedTail = ReadTail(URL_uninterpretedTail, in1); } } else if (FILE_MONIKER.Equals(_moniker)) { _fileOpts = in1.ReadShort(); int len = in1.ReadInt(); _shortFilename = StringUtil.ReadCompressedUnicode(in1, len); _uninterpretedTail = ReadTail(FILE_uninterpretedTail, in1); int size = in1.ReadInt(); if (size > 0) { int charDataSize = in1.ReadInt(); //From the spec: An optional unsigned integer that MUST be 3 if present // but some files has 4 int usKeyValue = in1.ReadUShort(); _address = StringUtil.ReadUnicodeLE(in1, charDataSize / 2); } else { _address = null; } } else if (STD_MONIKER.Equals(_moniker)) { _fileOpts = in1.ReadShort(); int len = in1.ReadInt(); byte[] path_bytes = new byte[len]; in1.ReadFully(path_bytes); _address = Encoding.UTF8.GetString(path_bytes); } } if ((_linkOpts & HLINK_PLACE) != 0) { int len = in1.ReadInt(); _textMark = in1.ReadUnicodeLEString(len); } if (in1.Remaining > 0) { Console.WriteLine(HexDump.ToHex(in1.ReadRemainder())); } }
/** * Constructs a VCENTER record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public VCenterRecord(RecordInputStream in1) { field_1_vcenter = in1.ReadShort(); }
public DrawingGroupRecord(RecordInputStream in1) : base(in1) { }
/// <summary> /// Initializes a new instance of the <see cref="FooterRecord"/> class. /// </summary> /// <param name="in1">the RecordInputstream to Read the record from</param> public FooterRecord(RecordInputStream in1) : base(in1) { }
/** * Constructs a Number record and Sets its fields appropriately. * * @param in the RecordInputstream to Read the record from */ public NumberRecord(RecordInputStream in1) : base(in1) { field_4_value = in1.ReadDouble(); }
/** * Constructs a WindowProtect record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public WindowProtectRecord(RecordInputStream in1) : this(in1.ReadUShort()) { }
/** * Constructs an LabelSST record and Sets its fields appropriately. * @param in the RecordInputstream to Read the record from */ public LabelSSTRecord(RecordInputStream in1) : base(in1) { field_4_sst_index = in1.ReadInt(); }