calamine 0.4.0

Excel reader in pure rust

Crate calamine [] [src]

Rust Excel reader

Status

calamine is a pure Rust library to read any excel file (xls, xlsx, xlsm, xlsb).

Read both cell values and vba project.

Examples

use calamine::{Excel, DataType};

// opens a new workbook
let mut workbook = Excel::open(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 {} cells in 'Sheet1', including {} non empty cells",
             total_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 != &DataType::Empty)).count());
}

// Check if the workbook has a vba project
if workbook.has_vba() {
    let mut vba = workbook.vba_project().expect("Cannot find VbaProject");
    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);
        }
    }
}

Modules

vba

Parse vbaProject.bin file

Structs

Cell

A struct to hold cell position and value

Error

The Error type.

Excel

A wrapper struct over the Excel file

Range

A struct which represents a squared selection of cells

Rows

An iterator to read Range struct row by row

UsedCells

A struct to iterate over used cells

Enums

CellErrorType

An enum to represent all different excel errors that can appear as a value in a worksheet cell

DataType

An enum to represent all different excel data types that can appear as a value in a worksheet cell

ErrorKind

The kind of an error.

Traits

ExcelReader

A trait to share excel reader functions accross different FileTypes

ResultExt

Additional methods for Result, for easy interaction with this crate.

Type Definitions

Result

Convenient wrapper around std::Result.