diff --git a/src/exd.rs b/src/exd.rs index 5be38c2..8abed58 100644 --- a/src/exd.rs +++ b/src/exd.rs @@ -65,7 +65,7 @@ fn parse_rows(exh: &EXH, data_offsets: &Vec) -> BinResult, + pub rows: Vec, } #[derive(Debug)] @@ -229,6 +229,7 @@ impl EXD { fn read_column( cursor: &mut T, exh: &EXH, + row_offset: u32, column: &ExcelColumnDefinition, ) -> Option { let mut read_packed_bool = |shift: i32| -> bool { @@ -242,12 +243,9 @@ impl EXD { ColumnDataType::String => { let string_offset: u32 = Self::read_data_raw(cursor).unwrap(); - let old_pos = cursor.stream_position().unwrap(); - - // -4 to take into account reading string_offset cursor - .seek(SeekFrom::Current( - (exh.header.data_offset as u32 + string_offset - 4).into(), + .seek(SeekFrom::Start( + (row_offset + exh.header.data_offset as u32 + string_offset).into(), )) .ok()?; @@ -259,8 +257,6 @@ impl EXD { byte = Self::read_data_raw(cursor).unwrap(); } - cursor.seek(SeekFrom::Start(old_pos)).unwrap(); - Some(ColumnData::String(string)) } ColumnDataType::Bool => {