diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000..be340ff Binary files /dev/null and b/assets/favicon.ico differ diff --git a/assets/first-logo.png b/assets/first-logo.png new file mode 100644 index 0000000..c4e361c Binary files /dev/null and b/assets/first-logo.png differ diff --git a/xlsx/src/lib.rs b/xlsx/src/lib.rs index e2f90e3..a4f9db0 100644 --- a/xlsx/src/lib.rs +++ b/xlsx/src/lib.rs @@ -1,58 +1,64 @@ -//! This crate reads an xlsx file and transforms it into an internal representation ([`Model`]). -//! An `xlsx` is a zip file containing a set of folders and `xml` files. The IronCalc json structure mimics the relevant parts of the Excel zip. -//! Although the xlsx structure is quite complicated, it's essentials regarding the spreadsheet technology are easier to grasp. -//! -//! The simplest workbook folder structure might look like this: -//! -//! ```text -//! docProps -//! app.xml -//! core.xml -//! -//! _rels -//! .rels -//! -//! xl -//! _rels -//! workbook.xml.rels -//! theme -//! theme1.xml -//! worksheets -//! sheet1.xml -//! calcChain.xml -//! styles.xml -//! workbook.xml -//! sharedStrings.xml -//! -//! [Content_Types].xml +//! # IronCalc - Core API documentation +//! +//! This technical API documentation in aimed at developers who want to develop bindings for a different language, +//! build a UI based on the engine or just use the library in a Rust program +//! +//! ## Usage +//! +//! Add the dependency in `Cargo.toml`: +//! +//! ```toml +//! [dependencies] +//! ironcalc = { git = "https://github.com/ironcalc/IronCalc", version = "0.1.0"} //! ``` +//! +//! until version 0.5.0 you should use the git dependencies as stated +//! +//! A simple example: +//! +//! +//! ```rust +//! use ironcalc::{ +//! base::{expressions::utils::number_to_column, model::Model}, +//! export::save_to_xlsx, +//! }; //! -//! Note that more complicated workbooks will have many more files and folders. -//! For instance charts, pivot tables, comments, tables,... -//! -//! The relevant json structure in IronCalc will be: -//! -//! ```json -//! { -//! "name": "Workbook1", -//! "defined_names": [], -//! "shared_strings": [], -//! "worksheets": [], -//! "styles": { -//! "num_fmts": [], -//! "fonts": [], -//! "fills": [], -//! "borders": [], -//! "cell_style_xfs": [], -//! "cell_styles" : [], -//! "cell_xfs": [] +//! fn main() -> Result<(), Box> { +//! let mut model = Model::new_empty("hello-calc.xlsx", "en", "UTC")?; +//! // Adds a square of numbers in the first sheet +//! for row in 1..100 { +//! for column in 1..100 { +//! let value = row * column; +//! model.set_user_input(0, row, column, format!("{}", value)); //! } //! } +//! // Adds a new sheet +//! model.add_sheet("Calculation")?; +//! // column 100 is CV +//! let last_column = number_to_column(100).unwrap(); +//! let formula = format!("=SUM(Sheet1!A1:{}100)", last_column); +//! model.set_user_input(1, 1, 1, formula); +//! +//! // evaluates +//! model.evaluate(); +//! +//! // saves to disk +//! save_to_xlsx(&model, "hello-calc.xlsx")?; +//! Ok(()) +//! } //! ``` -//! -//! Note that there is not a 1-1 correspondence but there is a close resemblance. -//! -//! [`Model`]: ../ironcalc/struct.Model.html +//! +//! You can then just: +//! +//! ```bash +//! cargo run +//! ``` + + +#![doc( + html_logo_url = "https://raw.githubusercontent.com/ironcalc/ironcalc/main/assets/logo.png", + html_favicon_url = "https://raw.githubusercontent.com/ironcalc/ironcalc/main/assets/favicon.ico" +)] pub mod compare; pub mod error;