1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
//! # umya-spreadsheet
//! [![Crates.io](https://img.shields.io/crates/v/umya-spreadsheet)](https://crates.io/crates/umya-spreadsheet)
//! [![Crates.io](https://img.shields.io/crates/l/umya-spreadsheet)](https://github.com/MathNya/umya-spreadsheet#license)
//! 
//! ## Description
//! **umya-spreadsheet** is a library written in pure Rust and read and write xlsx file.
//! 
//! ## Example
// ![Result Image](images/sample1.png)
//! ### Reader or New File
//! ```rust
//! extern crate umya_spreadsheet;
//! 
//! // reader
//! let path = std::path::Path::new("C:/spread_test_data/aaa.xlsx");
//! let mut book = umya_spreadsheet::reader::xlsx::read(path).unwrap();
//! // or
//! // new file
//! let mut book = umya_spreadsheet::new_file();
//! ```
//! ### New worksheet
//! ```rust
//! extern crate umya_spreadsheet;
//! 
//! let mut book = umya_spreadsheet::new_file();
//! 
//! // new worksheet
//! let _ = book.new_sheet("Sheet2");
//! ```
//! ### Change value
//! ```rust
//! extern crate umya_spreadsheet;
//! 
//! let mut book = umya_spreadsheet::new_file();
//! let _ = book.new_sheet("Sheet2");
//! 
//! // change value
//! let _ = book.get_sheet_by_name_mut("Sheet2").unwrap().get_cell_mut("A1").set_value("TEST1");
//! // or
//! let _ = book.get_sheet_mut(1).get_cell_by_column_and_row_mut(1, 1).set_value("TEST1");
//! ```
//! ### Read value
//! ```rust
//! extern crate umya_spreadsheet;
//! 
//! let mut book = umya_spreadsheet::new_file();
//! let _ = book.new_sheet("Sheet2");
//! let _ = book.get_sheet_by_name_mut("Sheet2").unwrap().get_cell_mut("A1").set_value("TEST1");
//! 
//! // read value
//! let a1_value = book.get_sheet_by_name("Sheet2").unwrap().get_value("A1");
//! // or
//! let a1_value = book.get_sheet(1).unwrap().get_value_by_column_and_row(1, 1);
//! // or formatted value
//! let a1_value = book.get_sheet(1).unwrap().get_formatted_value("A1");
//! assert_eq!("TEST1", a1_value);  // TEST1
//! ```
//! ### Change style
//! ```rust
//! extern crate umya_spreadsheet;
//! 
//! let mut book = umya_spreadsheet::new_file();
//! let _ = book.new_sheet("Sheet2");
//! 
//! // add bottom border
//! let _ = book.get_sheet_by_name_mut("Sheet2").unwrap()
//! .get_style_mut("A1")
//! .get_borders_mut()
//! .get_bottom_mut()
//! .set_border_style(umya_spreadsheet::Border::BORDER_MEDIUM);
//! // or
//! let _ = book.get_sheet_by_name_mut("Sheet2").unwrap()
//! .get_style_by_column_and_row_mut(1, 1)
//! .get_borders_mut()
//! .get_bottom_mut()
//! .set_border_style(umya_spreadsheet::Border::BORDER_MEDIUM);
//! ```
//! ### Insert or Remove Rows(or Columns)
// ![Result Image](images/sample2.png)
//! ```rust
//! extern crate umya_spreadsheet;
//! 
//! let mut book = umya_spreadsheet::new_file();
//! 
//! // insert rows
//! book.insert_new_row("Sheet1", 2, 3);
//! 
//! // insert columns
//! book.insert_new_colmun("Sheet1", "B", 3);
//! // or
//! book.insert_new_colmun_by_index("Sheet1", 2, 3);
//! 
//! // remove rows
//! book.remove_row("Sheet1", 6, 2);
//! 
//! // remove columns
//! book.remove_colmun("Sheet1", "F", 2);
//! // or
//! book.remove_colmun_by_index("Sheet1", 6, 2);
//! ```
//! ### Writer
//! ```rust
//! extern crate umya_spreadsheet;
//! 
//! let mut book = umya_spreadsheet::new_file();
//! let _ = book.new_sheet("Sheet2");
//! 
//! // writer
//! let path = std::path::Path::new("C:/spread_test_data/ccc.xlsx");
//! let _ = umya_spreadsheet::writer::xlsx::write(&book, path);
//! ```
//! ## License
//! MIT

extern crate quick_xml;
extern crate tempdir;
extern crate walkdir;
extern crate zip;
extern crate regex;
extern crate md5;
extern crate thousands;
extern crate onig;
extern crate chrono;

#[macro_use]
extern crate lazy_static;

pub mod structs;
pub mod writer;
pub mod reader;
pub mod helper;

pub use self::structs::*;

/// create new spreadsheet file.
/// # Arguments
/// # Return value
/// * Spreadsheet structs object.
/// # Examples
/// ```
/// let mut book = umya_spreadsheet::new_file();
/// ```
pub fn new_file()->structs::Spreadsheet {
    let mut spreadsheet = structs::Spreadsheet::default();
    spreadsheet.set_theme(Theme::get_defalut_value());
    let worksheet = spreadsheet.new_sheet("Sheet1").unwrap();
    worksheet.set_active_cell("A1");
    spreadsheet
}