umya_spreadsheet/
lib.rs

1//! ## Example
2//! ![Result Image](https://github.com/MathNya/umya-spreadsheet/raw/master/images/sample1.png)
3//! ### Reader or New File
4//! ```rust
5//! use umya_spreadsheet::*;
6//!
7//! // reader
8//! let path = std::path::Path::new("./tests/test_files/aaa.xlsx");
9//! let mut book = reader::xlsx::read(path).unwrap();
10//! // or
11//! // lazy reader
12//! //  Delays the loading of the worksheet until it is needed.//! //  When loading a file with a large amount of data, response improvement can be expected.
13//! let path = std::path::Path::new("./tests/test_files/aaa.xlsx");
14//! let mut book = reader::xlsx::lazy_read(path).unwrap();
15//! // or
16//! // new file
17//! let mut book = new_file();
18//! ```
19//! ### New worksheet
20//! ```rust
21//! use umya_spreadsheet::*;
22//! let mut book = new_file();
23//!
24//! // new worksheet
25//! let _ = book.new_sheet("Sheet2");
26//! ```
27//! ### Copy worksheet
28//! ```rust
29//! use umya_spreadsheet::*;
30//! let mut book = new_file();
31//!
32//! let mut clone_sheet = book.get_sheet(&0).unwrap().clone();
33//! clone_sheet.set_name("New Sheet");
34//! let _ = book.add_sheet(clone_sheet);
35//! ```
36//! ### Change value
37//! ```rust
38//! use umya_spreadsheet::*;
39//! let mut book = new_file();
40//! let _ = book.new_sheet("Sheet2");
41//!
42//! // change value
43//! book.get_sheet_by_name_mut("Sheet2").unwrap().get_cell_mut("A1").set_value("TEST1");
44//! book.get_sheet_by_name_mut("Sheet2").unwrap().get_cell_mut("B2").set_value_from_i32(1);
45//! book.get_sheet_by_name_mut("Sheet2").unwrap().get_cell_mut("C3").set_value_from_bool(true);
46//! // or
47//! book.get_sheet_mut(&1).unwrap().get_cell_mut((1, 1)).set_value("TEST1");
48//! book.get_sheet_mut(&1).unwrap().get_cell_mut((2, 2)).set_value_from_i32(1));
49//! book.get_sheet_mut(&1).unwrap().get_cell_mut((3, 3)).set_value_from_bool(true));
50//! ```
51//! ### Read value
52//! ```rust
53//! use umya_spreadsheet::*;
54//! let mut book = new_file();
55//! let _ = book.new_sheet("Sheet2");
56//! book.get_sheet_by_name_mut("Sheet2").unwrap().get_cell_mut("A1").set_value("TEST1");
57//!
58//! // read value
59//! let a1_value = book.get_sheet_by_name("Sheet2").unwrap().get_value("A1");
60//! // or
61//! let a1_value = book.get_sheet(&1).unwrap().get_value((1, 1));
62//! // or formatted value
63//! let a1_value = book.get_sheet(&1).unwrap().get_formatted_value("A1");
64//! assert_eq!("TEST1", a1_value);  // TEST1
65//! ```
66//! ### Change style
67//! more example is [**here**](Style).
68//! ```rust
69//! use umya_spreadsheet::*;
70//! let mut book = new_file();
71//! let _ = book.new_sheet("Sheet2");
72//!
73//! // add bottom border
74//! book.get_sheet_by_name_mut("Sheet2").unwrap()
75//! .get_style_mut("A1")
76//! .get_borders_mut()
77//! .get_bottom_mut()
78//! .set_border_style(Border::BORDER_MEDIUM);
79//! // or
80//! book.get_sheet_mut(&1).unwrap()
81//! .get_style_mut((1, 1))
82//! .get_borders_mut()
83//! .get_bottom_mut()
84//! .set_border_style(Border::BORDER_MEDIUM);
85//! ```
86//! ### Insert or Remove Rows(or Columns)
87//! ![Result Image](https://github.com/MathNya/umya-spreadsheet/raw/master/images/sample2.png)
88//! ```rust
89//! use umya_spreadsheet::*;
90//! let mut book = new_file();
91//!
92//! // insert rows
93//! book.insert_new_row("Sheet1", &2, &3);
94//!
95//! // insert columns
96//! book.insert_new_column("Sheet1", "B", &3);
97//! // or
98//! book.insert_new_column_by_index("Sheet1", &2, &3);
99//!
100//! // remove rows
101//! book.remove_row("Sheet1", &6, &2);
102//!
103//! // remove columns
104//! book.remove_column("Sheet1", "F", &2);
105//! // or
106//! book.remove_column_by_index("Sheet1", &6, &2);
107//! ```
108//! ### Writer
109//! ```rust
110//! use umya_spreadsheet::*;
111//! let mut book = new_file();
112//! let _ = book.new_sheet("Sheet2");
113//!
114//! // writer
115//! let path = std::path::Path::new("C:/spread_test_data/ccc.xlsx");
116//! let _ = writer::xlsx::write(&book, path);
117//! ```
118
119#![allow(warnings)]
120#![allow(clippy::all)]
121
122extern crate chrono;
123extern crate fancy_regex;
124extern crate imagesize;
125extern crate md5;
126extern crate quick_xml;
127extern crate thin_vec;
128extern crate thousands;
129extern crate zip;
130
131extern crate aes;
132extern crate base64;
133extern crate byteorder;
134extern crate cbc;
135extern crate cfb;
136extern crate getrandom;
137extern crate hmac;
138extern crate html_parser;
139extern crate sha2;
140
141#[macro_use]
142extern crate lazy_static;
143
144pub mod helper;
145pub mod reader;
146pub mod structs;
147pub mod traits;
148pub mod writer;
149
150pub use self::structs::*;
151pub use self::traits::*;
152
153/// create new spreadsheet file.
154/// # Arguments
155/// # Return value
156/// * Spreadsheet structs object.
157/// # Examples
158/// ```
159/// let mut book = umya_spreadsheet::new_file();
160/// ```
161pub fn new_file() -> structs::Spreadsheet {
162    let mut spreadsheet = structs::Spreadsheet::default();
163    spreadsheet.set_theme(structs::drawing::Theme::get_default_value());
164    spreadsheet.set_stylesheet_defalut_value();
165    let worksheet = spreadsheet.new_sheet("Sheet1").unwrap();
166    worksheet.set_active_cell("A1");
167    let mut sheet_view = SheetView::default();
168    sheet_view.set_workbook_view_id(0);
169    let mut sheet_views = SheetViews::default();
170    sheet_views.add_sheet_view_list_mut(sheet_view);
171    worksheet.set_sheets_views(sheet_views);
172    spreadsheet.set_active_sheet(0);
173    spreadsheet
174}
175
176/// create new spreadsheet file.
177/// not include worksheet.
178/// At least one additional worksheet must be added before the correct file can be generated.
179///
180/// # Arguments
181/// # Return value
182/// * Spreadsheet structs object.
183/// # Examples
184/// ```
185/// let mut book = umya_spreadsheet::new_file_empty_worksheet();
186/// ```
187pub fn new_file_empty_worksheet() -> structs::Spreadsheet {
188    let mut spreadsheet = structs::Spreadsheet::default();
189    spreadsheet.set_theme(structs::drawing::Theme::get_default_value());
190    spreadsheet.set_stylesheet_defalut_value();
191    spreadsheet
192}