Struct calamine::RangeDeserializerBuilder
[−]
[src]
pub struct RangeDeserializerBuilder { /* fields omitted */ }
Builds a Range
deserializer with some configuration options.
This can be used to optionally parse the first row as a header. Once built,
a RangeDeserializer
s cannot be changed.
Methods
impl RangeDeserializerBuilder
[src]
pub fn new() -> Self
[src]
Constructs a new builder for configuring Range
deserialization.
pub fn from_range<'cell, T, D>(
&self,
range: &'cell Range<T>
) -> Result<RangeDeserializer<'cell, T, D>, DeError> where
T: ToCellDeserializer<'cell>,
D: DeserializeOwned,
[src]
&self,
range: &'cell Range<T>
) -> Result<RangeDeserializer<'cell, T, D>, DeError> where
T: ToCellDeserializer<'cell>,
D: DeserializeOwned,
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 range = workbook.worksheet_range("Sheet1") .ok_or(Error::Msg("Cannot find 'Sheet1'"))??; let mut iter = RangeDeserializerBuilder::new().from_range(&range)?; 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")); } }
pub fn has_headers(&mut self, yes: bool) -> &mut RangeDeserializerBuilder
[src]
Decide whether to treat the first row as a special header row.
Example
fn example() -> Result<(), Error> { let path = format!("{}/tests/tempurature.xlsx", env!("CARGO_MANIFEST_DIR")); let mut workbook: Xlsx<_> = open_workbook(path)?; let range = workbook.worksheet_range("Sheet1") .ok_or(Error::Msg("Cannot find 'Sheet1'"))??; let mut iter = RangeDeserializerBuilder::new() .has_headers(false) .from_range(&range)?; if let Some(result) = iter.next() { let row: Vec<DataType> = result?; assert_eq!(row, [DataType::from("label"), DataType::from("value")]); } else { return Err(From::from("expected at least three records but got none")); } if let Some(result) = iter.next() { let row: Vec<DataType> = result?; assert_eq!(row, [DataType::from("celcius"), DataType::from(22.2222)]); } else { return Err(From::from("expected at least three records but got one")); } Ok(()) }
Trait Implementations
impl Clone for RangeDeserializerBuilder
[src]
fn clone(&self) -> RangeDeserializerBuilder
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more