You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.7 KiB

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<bool> {
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<bool> {
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,
}