Exemplo n.º 1
0
        /// <summary>
        /// Moves the parser to a row in the current page given its index
        /// </summary>
        /// <param name="row">The row index to seek to</param>
        /// <returns>true if the row was seeked to successfully, false if the row wasn't found or otherwise</returns>
        public bool TrySeekToRow(uint row)
        {
            Row = row;

            if (!_dataFile.RowData.TryGetValue(Row, out var offset))
            {
                return(false);
            }

            _offset = offset;

            var br = _dataFile.Reader;

            Stream.Position = _offset.Offset;

            _rowHeader = br.ReadStructure <ExcelDataRowHeader>();

            if (BitConverter.IsLittleEndian)
            {
                _rowHeader.DataSize = BinaryPrimitives.ReverseEndianness(_rowHeader.DataSize);
                _rowHeader.RowCount = BinaryPrimitives.ReverseEndianness(_rowHeader.RowCount);
            }

            // header is 6 bytes large, data normally starts here except in the case of variant 2 sheets but we'll keep it anyway
            _rowOffset = _offset.Offset + 6;

            return(true);
        }
Exemplo n.º 2
0
        public void SeekToRow(int row)
        {
            Row     = row;
            _Offset = _DataFile.RowData[(uint)Row];

            var br = _DataFile.Reader;

            Stream.Position = _Offset.Offset;

            _RowHeader = br.ReadStructure <ExcelDataRowHeader>();

            if (BitConverter.IsLittleEndian)
            {
                _RowHeader.DataSize = BinaryPrimitives.ReverseEndianness(_RowHeader.DataSize);
                _RowHeader.RowCount = BinaryPrimitives.ReverseEndianness(_RowHeader.RowCount);
            }

            // header is 6 bytes large, data normally starts here except in the case of variant 2 sheets but we'll keep it anyway
            _RowOffset = _Offset.Offset + 6;
        }