Crate spreadsheet_ods[−][src]
Expand description
Implements reading and writing of ODS Files.
use spreadsheet_ods::{WorkBook, Sheet, Value}; use chrono::NaiveDate; use spreadsheet_ods::format; use spreadsheet_ods::formula; use spreadsheet_ods::{cm, mm}; use spreadsheet_ods::style::{CellStyle}; use color::Rgb; use spreadsheet_ods::style::units::{TextRelief, Border, Length}; let path = std::path::Path::new("tests/example.ods"); let mut wb = if path.exists() { spreadsheet_ods::read_ods(path).unwrap() } else { WorkBook::new() }; if wb.num_sheets() == 0 { let mut sheet = Sheet::new(); sheet.set_value(0, 0, true); wb.push_sheet(sheet); } let sheet = wb.sheet(0); let n = sheet.value(0,0).as_f64_or(0f64); if let Value::Boolean(v) = sheet.value(1,1) { if *v { println!("was true"); } } if wb.num_sheets() == 1 { wb.push_sheet(Sheet::new()); } let date_format = format::create_date_dmy_format("date_format"); let date_format = wb.add_format(date_format); let mut date_style = CellStyle::new("nice_date_style", &date_format); date_style.set_font_bold(); date_style.set_font_relief(TextRelief::Engraved); date_style.set_border(mm!(0.2), Border::Dashed, Rgb::new(192, 72, 72)); let date_style_ref = wb.add_cellstyle(date_style); let mut sheet = wb.sheet_mut(1); sheet.set_value(0, 0, 21.4f32); sheet.set_value(0, 1, "foo"); sheet.set_styled_value(0, 2, NaiveDate::from_ymd(2020, 03, 01), &date_style_ref); sheet.set_formula(0, 3, format!("of:={}+1", formula::fcellref(0,0))); let mut sheet = Sheet::new_with_name("sample"); sheet.set_value(5,5, "sample"); wb.push_sheet(sheet); spreadsheet_ods::write_ods(&mut wb, "test_out/tryout.ods");
This does not cover the entire ODS spec.
What is supported:
-
Spread-sheets
- Handles all datatypes
- Uses time::Duration
- Uses chrono::NaiveDate and NaiveDateTime
- Column/Row/Cell styles
- Formulas
- Only as strings, but support functions for cell/range references.
- Row/Column spans
- Header rows/columns, print ranges
- Formatted text as xml text.
- Handles all datatypes
-
Formulas
- Only as strings.
- Utilities for cell/range references.
-
Styles
- Default styles per data type.
- Preserves all style attributes.
- Table, row, column, cell, paragraph and text styles.
- Stylemaps (basic support)
- Support for setting most style attributes.
-
Value formatting
- The whole set is available.
- Utility functions for common formats.
-
Fonts
- Preserves all font attributes.
- Basic support for setting this stuff.
-
Page layouts
- Style attributes
- Header/footer content as XML text.
-
Cell/range references
- Parsing and formatting
What is not supported:
- Spreadsheets
- Row and column grouping
- …
There are a number of features that are not parsed completely, but which are stored as a XML structure. This might work as long as these features don’t refer to data that is no longer valid after some modification. But they are written back to the ods.
Anyway those are:
- tracked-changes
- variable-decls
- sequence-decls
- user-field-decls
- dde-connection-decls
- calculation-settings
- content-validations
- label-ranges
- named-expressions
- database-ranges
- data-pilot-tables
- consolidation
- dde-links
- table:desc
- table-source
- dde-source
- scenario
- forms
- shapes
- calcext:conditional-formats
When storing a previously read ODS file, all the contained files are copied to the new file, except settings.xml, styles.xml and content.xml. For a new ODS file mimetype, manifest, manifest.rdf, meta.xml are filled with minimal defaults. There is no way to set these for now.
Re-exports
pub use crate::error::OdsError;pub use crate::format::ValueFormat;pub use crate::format::ValueFormatRef;pub use crate::refs::CellRange;pub use crate::refs::CellRef;pub use crate::refs::ColRange;pub use crate::refs::RowRange;pub use crate::style::units::Angle;pub use crate::style::units::Length;Modules
Defines conditional expressions that are used for cell-validation and conditional styles via style-maps.
Creates default formats for a new Workbook.
Error type.
Defines ValueFormat for formatting related issues
For now defines functions to create cell references for formulas.
Defines types for cell references.
Styles define a large number of attributes. These are grouped together as table, row, column, cell, paragraph and text attributes.
Text is stored as a simple String whenever possible. When there is a more complex structure, a TextTag is constructed which mirrors the Xml tree structure.
Content validation.
Defines an XML-Tree. This is used for parts of the spreadsheet that are not destructured in detail, but simply passed through. With a little bit of luck there is still some meaning left after modifying the rest.
Macros
Centimeters.
currency value
deg angles. 360°
Length depending on font size.
grad angles. 400°
Inches.
Millimeters.
Pica. 12/72“
currency value
Point. 1/72“
radians angle.
Structs
A copy of the relevant data for a spreadsheet cell.
Holds references to the combined content of a cell. A temporary to hold the data when iterating over a sheet.
Iterator over cells.
A cell can span multiple rows/columns.
Describes the style information for a cell.
Reference
Range iterator.
One sheet of the spreadsheet.
Per sheet configurations.
Book is the main structure for the Spreadsheet.
Subset of the Workbook wide configurations.
Enums
There are two ways a sheet can be split. There are fixed column/row header like splits, and there is a moveable split.
Content-Values
Datatypes for the values. Only the discriminants of the Value enum.
Visibility of a column or row.
Functions
Reads an ODS-file.
Reads an ODS-file from a buffer
Writes the ODS file.
Writes the ODS file into a supplied buffer.
Writes the ODS file into a supplied buffer.