[−][src]Crate calamine
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, DataType}; // 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 Some(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 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("sheet not found") .expect("error while getting formula") .rows().flat_map(|r| r.iter().filter(|f| !f.is_empty())) .count(), s); }
Modules
vba | Parse vbaProject.bin file |
Structs
Cell | A struct to hold cell position and value |
Cells | A struct to iterate over all cells |
Metadata | Common file metadata |
Ods | An OpenDocument Spreadsheet document parser |
Range | A struct which represents a squared selection of cells |
RangeDeserializer | A configured |
RangeDeserializerBuilder | Builds a |
Rows | An iterator to read |
UsedCells | A struct to iterate over used cells |
Xls | A struct representing an old xls format file (CFB) |
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 |
DataType | 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 |
OdsError | An enum for ods specific errors |
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 |
Reader | A trait to share spreadsheets reader functions accross different |
ToCellDeserializer | Constructs a deserializer for a |
Functions
open_workbook | Convenient function to open a file with a BufReader |
open_workbook_auto | Opens a workbook and define the file type at runtime. |