Function row_range

Source
pub fn row_range<R>(first: R, last: R) -> Result<RowRange>
where Row: TryFrom<R, Error = Error>,
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}