Struct calamine::Range

source ·
pub struct Range<T: CellType> { /* private fields */ }
Expand description

A struct which represents a squared selection of cells

Implementations

Creates a new non-empty Range

When possible, prefer the more efficient Range::from_sparse

Panics

Panics if start.0 > end.0 or start.1 > end.1

Creates a new empty range

Get top left cell position (row, column)

Get bottom right cell position (row, column)

Get column width

Get column width

Get size in (height, width) format

Is range empty

Creates a Range from a coo sparse vector of Cells.

Coordinate list (COO) is the natural way cells are stored Inner size is defined only by non empty.

cells: Vec of non empty Cells, sorted by row

Panics

panics when a Cell row is lower than the first Cell row or bigger than the last Cell row.

Set inner value from absolute position

Remarks

Will try to resize inner structure if the value is out of bounds. For relative positions, use Index trait

Try to avoid this method as much as possible and prefer initializing the Range with from_sparse constructor.

Panics

If absolute_position > Cell start

Examples
use calamine::{Range, DataType};

let mut range = Range::new((0, 0), (5, 2));
assert_eq!(range.get_value((2, 1)), Some(&DataType::Empty));
range.set_value((2, 1), DataType::Float(1.0));
assert_eq!(range.get_value((2, 1)), Some(&DataType::Float(1.0)));

Get cell value from absolute position.

If the absolute_position is out of range, returns None, else returns the cell value. The coordinate format is (row, column).

Warnings

For relative positions, use Index trait

Remarks

Absolute position is in sheet referential while relative position is in range referential.

For instance if we consider range C2:H38:

  • (0, 0) absolute is “A1” and thus this function returns None
  • (0, 0) relative is “C2” and is returned by the Index trait (i.e my_range[(0, 0)])
Examples
use calamine::{Range, DataType};

let range: Range<usize> = Range::new((1, 0), (5, 2));
assert_eq!(range.get_value((0, 0)), None);
assert_eq!(range[(0, 0)], 0);

Get an iterator over inner rows

Examples
use calamine::{Range, DataType};

let range: Range<DataType> = Range::new((0, 0), (5, 2));
// with rows item row: &[DataType]
assert_eq!(range.rows().map(|r| r.len()).sum::<usize>(), 18);

Get an iterator over used cells only

Build a RangeDeserializer from this configuration.

Example
fn example() -> Result<(), Error> {
    let path = format!("{}/tests/tempurature.xlsx", env!("CARGO_MANIFEST_DIR"));
    let mut workbook: Xlsx<_> = open_workbook(path)?;
    let mut sheet = workbook.worksheet_range("Sheet1")
        .ok_or(Error::Msg("Cannot find 'Sheet1'"))??;
    let mut iter = sheet.deserialize()?;

    if let Some(result) = iter.next() {
        let (label, value): (String, f64) = result?;
        assert_eq!(label, "celcius");
        assert_eq!(value, 22.2222);

        Ok(())
    } else {
        return Err(From::from("expected at least one record but got none"));
    }
}

Trait Implementations

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
The returned type after indexing.
Performs the indexing (container[index]) operation. Read more
The returned type after indexing.
Performs the indexing (container[index]) operation. Read more
Performs the mutable indexing (container[index]) operation. Read more
Performs the mutable indexing (container[index]) operation. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.