Crate calamine

Crate calamine 

Source
Expand description

Rust Excel/OpenDocument reader

§Status

calamine is a pure Rust library to read Excel and OpenDocument Spreadsheet files.

Read both cell values and vba project.

§Examples

use calamine::{Reader, open_workbook, Xlsx, Data};

// opens a new workbook
let mut workbook: Xlsx<_> = open_workbook(path).expect("Cannot open file");

// Read whole worksheet data and provide some statistics
if let Ok(range) = workbook.worksheet_range("Sheet1") {
    let total_cells = range.get_size().0 * range.get_size().1;
    let non_empty_cells: usize = range.used_cells().count();
    println!("Found {total_cells} cells in 'Sheet1', including {non_empty_cells} non empty cells");
    // alternatively, we can manually filter rows
    assert_eq!(non_empty_cells, range.rows()
        .flat_map(|r| r.iter().filter(|&c| c != &Data::Empty)).count());
}

// Check if the workbook has a vba project
if let Some(Ok(mut vba)) = workbook.vba_project() {
    let vba = vba.to_mut();
    let module1 = vba.get_module("Module 1").unwrap();
    println!("Module 1 code:");
    println!("{module1}");
    for r in vba.get_references() {
        if r.is_missing() {
            println!("Reference {} is broken or not accessible", r.name);
        }
    }
}

// You can also get defined names definition (string representation only)
for name in workbook.defined_names() {
    println!("name: {}, formula: {}", name.0, name.1);
}

// Now get all formula!
let sheets = workbook.sheet_names().to_owned();
for s in sheets {
    println!("found {} formula in '{}'",
             workbook
                .worksheet_formula(&s)
                .expect("error while getting formula")
                .rows().flat_map(|r| r.iter().filter(|f| !f.is_empty()))
                .count(),
             s);
}

§Crate Features

The following is a list of the optional features supported by the calamine crate. They are all off by default.

  • chrono: Adds support for Chrono date/time types to the API.
  • dates: A deprecated backwards compatible synonym for the chrono feature.
  • picture: Adds support for reading raw data for pictures in spreadsheets.

A calamine feature can be enabled in your Cargo.toml file as follows:

cargo add calamine -F chrono

Modules§

changelog
Changelog for calamine.
vba
Parse vbaProject.bin file

Structs§

Cell
A struct to hold a cell position and value.
Cells
A struct to iterate over all Cells in a Range.
Dimensions
Dimensions info
ExcelDateTime
Structure for Excel date and time representation.
Metadata
Common file metadata
Ods
An OpenDocument Spreadsheet document parser
Range
A struct which represents an area of cells and the data within it.
RangeDeserializer
A configured Range deserializer.
RangeDeserializerBuilder
Builds a Range deserializer with some configuration options.
Rows
A struct to iterate over all Rowss in a Range.
Sheet
Metadata of sheet
Table
The Table struct represents an Excel worksheet table.
UsedCells
A struct to iterate over all the used Cells in a Range.
Xls
A struct representing an old xls format file (CFB)
XlsOptions
Options to perform specialized parsing.
Xlsb
A Xlsb reader
Xlsx
A struct representing xml zipped excel file Xlsx, Xlsm, Xlam

Enums§

CellErrorType
An enum to represent all different errors that can appear as a value in a worksheet cell
Data
An enum to represent all different data types that can appear as a value in a worksheet cell
DataRef
An enum to represent all different data types that can appear as a value in a worksheet cell
DeError
A cell deserialization specific error enum
Error
A struct to handle any error and a message
ExcelDateTimeType
Excel datetime type. Possible: date, time, datetime, duration. At this time we can only determine datetime (date and time are datetime too) and duration.
HeaderRow
Row to use as header By default, the first non-empty row is used as header
OdsError
An enum for ods specific errors
SheetType
Type of sheet.
SheetVisible
Type of visible sheet.
Sheets
A wrapper over all sheets when the file type is not known at static time
XlsError
An enum to handle Xls specific errors
XlsbError
A Xlsb specific error
XlsxError
An enum for Xlsx specific errors.

Traits§

CellType
A trait to constrain cells
DataType
A trait to represent all different data types that can appear as a value in a worksheet cell
Reader
A trait to share spreadsheets reader functions across different FileTypes
ReaderRef
A trait to share spreadsheets reader functions across different FileTypes
ToCellDeserializer
Constructs a deserializer for a CellType.

Functions§

deserialize_as_date_or_nonechrono
A helper function to deserialize cell values as chrono::NaiveDate.
deserialize_as_date_or_stringchrono
A helper function to deserialize cell values as chrono::NaiveDate.
deserialize_as_datetime_or_nonechrono
A helper function to deserialize cell values as chrono::NaiveDateTime.
deserialize_as_datetime_or_stringchrono
A helper function to deserialize cell values as chrono::NaiveDateTime.
deserialize_as_duration_or_nonechrono
A helper function to deserialize cell values as chrono::Duration.
deserialize_as_duration_or_stringchrono
A helper function to deserialize cell values as chrono::Duration.
deserialize_as_f64_or_none
A helper function to deserialize cell values as f64.
deserialize_as_f64_or_string
A helper function to deserialize cell values as f64.
deserialize_as_i64_or_none
A helper function to deserialize cell values as i64.
deserialize_as_i64_or_string
A helper function to deserialize cell values as i64.
deserialize_as_time_or_nonechrono
A helper function to deserialize cell values as chrono::NaiveTime.
deserialize_as_time_or_stringchrono
A helper function to deserialize cell values as chrono::NaiveTime.
open_workbook
Convenient function to open a file with a BufReader<File>.
open_workbook_auto
Opens a workbook and define the file type at runtime.
open_workbook_auto_from_rs
Opens a workbook from the given bytes.
open_workbook_from_rs
Convenient function to open a file with a BufReader<File>.