Skip to content

Commit b75dcda

Browse files
add filter document
1 parent 8ebdc16 commit b75dcda

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

libxlsxwriter/src/worksheet/filter.rs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ impl<'a> Worksheet<'a> {
116116
///
117117
/// An autofilter is a way of adding drop down lists to the headers of a 2D range of worksheet data.
118118
/// This allows users to filter the data based on simple criteria so that some data is shown and some is hidden.
119+
///
119120
pub fn autofilter(
120121
&mut self,
121122
first_row: WorksheetRow,
@@ -141,6 +142,27 @@ impl<'a> Worksheet<'a> {
141142

142143
/// This function can be used to filter columns in a autofilter range based on single rule conditions.
143144
///
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+
///
144166
/// The `col` parameter is a zero indexed column number and must refer to a column in an existing autofilter created with [`Worksheet::autofilter`].
145167
/// It isn't sufficient to just specify the filter condition. You must also hide any rows that don't match the filter condition.
146168
pub fn filter_column(
@@ -165,6 +187,27 @@ impl<'a> Worksheet<'a> {
165187

166188
/// This function can be used to filter columns in a autofilter range based on two rule conditions.
167189
///
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+
///
168211
/// It isn't sufficient to just specify the filter condition. You must also hide any rows that don't match the filter condition.
169212
pub fn filter_column2(
170213
&mut self,
@@ -191,6 +234,32 @@ impl<'a> Worksheet<'a> {
191234
Ok(())
192235
}
193236

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.
194263
pub fn filter_list(
195264
&mut self,
196265
col: crate::WorksheetCol,

0 commit comments

Comments
 (0)