@@ -116,6 +116,7 @@ impl<'a> Worksheet<'a> {
116
116
///
117
117
/// An autofilter is a way of adding drop down lists to the headers of a 2D range of worksheet data.
118
118
/// This allows users to filter the data based on simple criteria so that some data is shown and some is hidden.
119
+ ///
119
120
pub fn autofilter (
120
121
& mut self ,
121
122
first_row : WorksheetRow ,
@@ -141,6 +142,27 @@ impl<'a> Worksheet<'a> {
141
142
142
143
/// This function can be used to filter columns in a autofilter range based on single rule conditions.
143
144
///
145
+ /// ```rust
146
+ /// use xlsxwriter::*;
147
+ ///
148
+ /// # fn main() -> Result<(), XlsxError> {
149
+ /// # let workbook = Workbook::new("test-worksheet_filter_column.xlsx")?;
150
+ /// # let mut worksheet = workbook.add_worksheet(None)?;
151
+ /// # worksheet.write_string(0, 0, "Column A", None)?;
152
+ /// # worksheet.write_string(0, 1, "Column B", None)?;
153
+ /// # for i in 1..=10 {
154
+ /// # let v: f64 = i.into();
155
+ /// # worksheet.write_number(i, 0, v, None)?;
156
+ /// # worksheet.write_number(i, 1, v + 0.5, None)?;
157
+ /// # }
158
+ /// worksheet.autofilter(0, 0, 10, 1)?;
159
+ /// worksheet.filter_column(0, &FilterRule::new(FilterCriteria::NotEqualTo, 9.0))?;
160
+ /// worksheet.set_row_opt(9, LXW_DEF_ROW_HEIGHT, None, &RowColOptions::new(true, 0, false))?;
161
+ /// # Ok(())
162
+ /// # }
163
+ ///
164
+ /// ```
165
+ ///
144
166
/// The `col` parameter is a zero indexed column number and must refer to a column in an existing autofilter created with [`Worksheet::autofilter`].
145
167
/// It isn't sufficient to just specify the filter condition. You must also hide any rows that don't match the filter condition.
146
168
pub fn filter_column (
@@ -165,6 +187,27 @@ impl<'a> Worksheet<'a> {
165
187
166
188
/// This function can be used to filter columns in a autofilter range based on two rule conditions.
167
189
///
190
+ /// ```rust
191
+ /// use xlsxwriter::*;
192
+ ///
193
+ /// # fn main() -> Result<(), XlsxError> {
194
+ /// # let workbook = Workbook::new("test-worksheet_filter_column2.xlsx")?;
195
+ /// # let mut worksheet = workbook.add_worksheet(None)?;
196
+ /// # worksheet.write_string(0, 0, "Column A", None)?;
197
+ /// # worksheet.write_string(0, 1, "Column B", None)?;
198
+ /// # for i in 1..=10 {
199
+ /// # let v: f64 = i.into();
200
+ /// # worksheet.write_number(i, 0, v, None)?;
201
+ /// # worksheet.write_number(i, 1, v + 0.5, None)?;
202
+ /// # }
203
+ /// worksheet.autofilter(0, 0, 10, 1)?;
204
+ /// worksheet.filter_column2(0, &FilterRule::new(FilterCriteria::LessThan, 8.5), &FilterRule::new(FilterCriteria::GreaterThan, 9.5), FilterOperator::FilterOr)?;
205
+ /// worksheet.set_row_opt(9, LXW_DEF_ROW_HEIGHT, None, &RowColOptions::new(true, 0, false))?;
206
+ /// # Ok(())
207
+ /// # }
208
+ ///
209
+ /// ```
210
+ ///
168
211
/// It isn't sufficient to just specify the filter condition. You must also hide any rows that don't match the filter condition.
169
212
pub fn filter_column2 (
170
213
& mut self ,
@@ -191,6 +234,32 @@ impl<'a> Worksheet<'a> {
191
234
Ok ( ( ) )
192
235
}
193
236
237
+ /// This function can be used specify multiple string matching criteria. This is a newer type of filter introduced in Excel 2007.
238
+ /// Prior to that it was only possible to have either 1 or 2 filter conditions, such as the ones used by [`Worksheet::filter_column()`]
239
+ /// and [`Worksheet::filter_column2()`].
240
+ ///
241
+ /// ```rust
242
+ /// use xlsxwriter::*;
243
+ ///
244
+ /// # fn main() -> Result<(), XlsxError> {
245
+ /// # let workbook = Workbook::new("test-worksheet_filter_list.xlsx")?;
246
+ /// # let mut worksheet = workbook.add_worksheet(None)?;
247
+ /// # worksheet.write_string(0, 0, "Column A", None)?;
248
+ /// # worksheet.write_string(0, 1, "Column B", None)?;
249
+ /// # for i in 1..=10 {
250
+ /// # let v: f64 = i.into();
251
+ /// # worksheet.write_number(i, 0, v, None)?;
252
+ /// # worksheet.write_number(i, 1, v + 0.5, None)?;
253
+ /// # }
254
+ /// worksheet.autofilter(0, 0, 10, 1)?;
255
+ /// worksheet.filter_list(0, &["1", "2", "3", "4", "5", "6", "7", "8", "10"])?;
256
+ /// worksheet.set_row_opt(9, LXW_DEF_ROW_HEIGHT, None, &RowColOptions::new(true, 0, false))?;
257
+ /// # Ok(())
258
+ /// # }
259
+ ///
260
+ /// ```
261
+ ///
262
+ /// It isn't sufficient to just specify the filter condition. You must also hide any rows that don't match the filter condition.
194
263
pub fn filter_list (
195
264
& mut self ,
196
265
col : crate :: WorksheetCol ,
0 commit comments