pub fn row_range<R>(first: R, last: R) -> Result<RowRange>Examples found in repository?
examples/data_validate.rs (line 63)
36fn main() -> karo::Result<()> {
37 let mut workbook = Workbook::new();
38
39 let mut format = Format::default();
40 format.borders.set_around(Some(Border {
41 style: BorderStyle::Thin,
42 color: None,
43 }));
44 format.fill.fg_color = Some(RGB8 {
45 r: 0xc6,
46 g: 0xef,
47 b: 0xce,
48 });
49 format.fill.pattern = Some(Pattern::Solid);
50 format.font.bold = true;
51 format.text_wrap = true;
52 format.vertical_alignment = Some(VerticalAlignment::Center);
53 format.indent = 1;
54
55 {
56 let worksheet = workbook.add_worksheet(None)?;
57 write_data(worksheet, Some(&format))?;
58
59 // Set up layout of the worksheet.
60 worksheet.set_column(col_range(0, 0)?, 55f64, None)?;
61 worksheet.set_column(col_range(1, 1)?, 15f64, None)?;
62 worksheet.set_column(col_range(3, 3)?, 15f64, None)?;
63 worksheet.set_row(row_range(0, 0)?, 36f64, None)?;
64
65 // Example 1. Limiting input to an integer in a fixed range.
66 worksheet.write_string(
67 cell("A3")?,
68 "Enter an integer between 1 and 10",
69 None,
70 )?;
71 let validation = Validation::new(
72 ValidationType::Integer(Criterion::Between(1, 10)),
73 cell("B3")?,
74 );
75 worksheet.data_validation(validation)?;
76
77 // Example 2. Limiting input to an integer outside a fixed range.
78 worksheet.write_string(
79 cell("A5")?,
80 "Enter an integer not between 1 and 10 \
81 (using cell references)",
82 None,
83 )?;
84 let validation = Validation::new(
85 ValidationType::IntegerFormula(Criterion::NotBetween(
86 "=E3".to_string(),
87 "=F3".to_string(),
88 )),
89 cell("B5")?,
90 );
91 worksheet.data_validation(validation)?;
92
93 // Example 3. Limiting input to an integer greater than a fixed value.
94 worksheet.write_string(
95 cell("A7")?,
96 "Enter an integer greater than 0",
97 None,
98 )?;
99 let validation = Validation::new(
100 ValidationType::Integer(Criterion::GreaterThan(0)),
101 cell("B7")?,
102 );
103 worksheet.data_validation(validation)?;
104
105 // Example 4. Limiting input to an integer less than a fixed value.
106 worksheet.write_string(
107 cell("A9")?,
108 "Enter an integer less than 10",
109 None,
110 )?;
111 let validation = Validation::new(
112 ValidationType::Integer(Criterion::LessThan(10)),
113 cell("B9")?,
114 );
115 worksheet.data_validation(validation)?;
116
117 // Example 5. Limiting input to a decimal in a fixed range.
118 worksheet.write_string(
119 cell("A11")?,
120 "Enter a decimal between 0.1 and 0.5",
121 None,
122 )?;
123 let validation = Validation::new(
124 ValidationType::Decimal(Criterion::Between(0.1, 0.5)),
125 cell("B11")?,
126 );
127 worksheet.data_validation(validation)?;
128
129 // Example 6. Limiting input to a value in dropdown list.
130 worksheet.write_string(
131 cell("A13")?,
132 "Select a value from a drop down list",
133 None,
134 )?;
135 let validation = Validation::new(
136 ValidationType::List {
137 values: indexset! {
138 "open".to_string(),
139 "high".to_string(),
140 "close".to_string(),
141 },
142 show_dropdown: true,
143 },
144 cell("B13")?,
145 );
146 worksheet.data_validation(validation)?;
147
148 // Example 7. Limiting input to a value in a dropdown list.
149 worksheet.write_string(
150 cell("A15")?,
151 "Select a value from a drop down list (using a cell range)",
152 None,
153 )?;
154 let validation = Validation::new(
155 ValidationType::ListFormula {
156 formula: "=$E$4:$G$4".to_string(),
157 show_dropdown: true,
158 },
159 cell("B15")?,
160 );
161 worksheet.data_validation(validation)?;
162
163 // Example 8. Limiting input to date in a fixed range.
164 worksheet.write_string(
165 cell("A17")?,
166 "Enter a date between 1/1/2008 and 12/12/2008",
167 None,
168 )?;
169 let date1 = Utc.ymd(2008, 1, 1).and_hms(0, 0, 0);
170 let date2 = Utc.ymd(2008, 12, 12).and_hms(0, 0, 0);
171 let validation = Validation::new(
172 ValidationType::Date(Criterion::Between(date1, date2)),
173 cell("B17")?,
174 );
175 worksheet.data_validation(validation)?;
176
177 // Example 9. Limiting input to time in a fixed range.
178 worksheet.write_string(
179 cell("A19")?,
180 "Enter a time between 6:00 and 12:00",
181 None,
182 )?;
183 let time1 = NaiveTime::from_hms(6, 0, 0);
184 let time2 = NaiveTime::from_hms(12, 0, 0);
185 let validation = Validation::new(
186 ValidationType::Time(Criterion::Between(time1, time2)),
187 cell("B19")?,
188 );
189 worksheet.data_validation(validation)?;
190
191 // Example 10. Limiting input to a string greater than a fixed length.
192 worksheet.write_string(
193 cell("A21")?,
194 "Enter a string longer than 3 characters",
195 None,
196 )?;
197 let validation = Validation::new(
198 ValidationType::Length(Criterion::GreaterThan(3)),
199 cell("B21")?,
200 );
201 worksheet.data_validation(validation)?;
202
203 // Example 11. Limiting input based on a formula.
204 worksheet.write_string(
205 cell("A23")?,
206 "Enter a value if the folowing is true \"=AND(F5=50,G5=60)\"",
207 None,
208 )?;
209 let validation = Validation::new(
210 ValidationType::CustomFormula("=AND(F5=50,G5=60)".to_string()),
211 cell("B23")?,
212 );
213 worksheet.data_validation(validation)?;
214
215 // Example 12. Displaying and modifying data validation messages.
216 worksheet.write_string(
217 cell("A25")?,
218 "Displays a message when you select the cell",
219 None,
220 )?;
221 let mut validation = Validation::new(
222 ValidationType::Integer(Criterion::Between(1, 100)),
223 cell("B25")?,
224 );
225 validation.input_title = Some("Enter an integer:".to_string());
226 validation.input_message = Some("between 1 and 100".to_string());
227 worksheet.data_validation(validation)?;
228
229 // Example 13. Displaying and modifying data validation messages.
230 worksheet.write_string(
231 cell("A27")?,
232 "Displays a custom error message when integer isn't \
233 between 1 and 100",
234 None,
235 )?;
236 let mut validation = Validation::new(
237 ValidationType::Integer(Criterion::Between(1, 100)),
238 cell("B27")?,
239 );
240 validation.input_title = Some("Enter an integer:".to_string());
241 validation.input_message = Some("between 1 and 100".to_string());
242 validation.error_title =
243 Some("Input value is not valid!".to_string());
244 validation.error_message = Some(
245 "It should be an integer \
246 between 1 and 100"
247 .to_string(),
248 );
249 worksheet.data_validation(validation)?;
250
251 // Example 14. Displaying and modifying data validation messages.
252 worksheet.write_string(
253 cell("A29")?,
254 "Displays a custom info message when integer isn't \
255 between 1 and 100",
256 None,
257 )?;
258 let mut validation = Validation::new(
259 ValidationType::Integer(Criterion::Between(1, 100)),
260 cell("B29")?,
261 );
262 validation.input_title = Some("Enter an integer:".to_string());
263 validation.input_message = Some("between 1 and 100".to_string());
264 validation.error_title =
265 Some("Input value is not valid!".to_string());
266 validation.error_message = Some(
267 "It should be an integer \
268 between 1 and 100"
269 .to_string(),
270 );
271 validation.error_type = ValidationErrorType::Information;
272 worksheet.data_validation(validation)?;
273 }
274
275 workbook.write_file("data_validate.xlsx")?;
276
277 Ok(())
278}