use umya_spreadsheet::Worksheet; #[derive(Debug)] pub struct Extractor<'a> { sheet: &'a Worksheet, pub separator: char, pub merge_fill: MergeFill, pub exclude_hidden: bool, } impl<'a> Extractor<'a> { pub fn new(sheet: &'a Worksheet) -> Self { Extractor { sheet, separator: ';', merge_fill: MergeFill::None, exclude_hidden: true, } } fn is_row_hidden(&self, row_index: u32) -> Option { if let Some(row) = self.sheet.get_row_dimension(&row_index) { if *row.get_hidden() { return Some(false); } else { return Some(true); } } None } fn is_column_hidden(&self, column_index: u32) -> Option { if let Some(column) = self.sheet.get_column_dimension_by_number(&column_index) { if *column.get_hidden() { return Some(false); } else { return Some(true); } } None } fn is_cell_in_merge(&self, row_index: u32, column_index: u32) -> bool { let merges = self.sheet.get_merge_cells(); for merge in merges { if row_index >= *merge.get_coordinate_start_row().unwrap().get_num() && row_index <= *merge.get_coordinate_end_row().unwrap().get_num() && column_index >= *merge.get_coordinate_start_col().unwrap().get_num() && column_index <= *merge.get_coordinate_end_col().unwrap().get_num() { return true; } } false } } #[derive(Debug)] pub enum MergeFill { None, Horizontal, Vertical, Both, }