edit-xlsx 0.4.4

A quick and easy-to-use Rust library for Excel file editing.
Documentation
use serde::{Deserialize, Serialize};
use crate::api::cell::location::Location;
use crate::xml::worksheet::sheet_views::sheetview::selection::ActivePane;

#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub(crate) struct Pane {
    #[serde(rename = "@xSplit", skip_serializing_if = "Option::is_none")]
    x_split: Option<u32>,
    #[serde(rename = "@ySplit", skip_serializing_if = "Option::is_none")]
    y_split: Option<u32>,
    #[serde(rename = "@topLeftCell", skip_serializing_if = "Option::is_none")]
    top_left_cell: Option<String>,
    #[serde(rename = "@activePane", skip_serializing_if = "Option::is_none")]
    active_pane: Option<String>,
    #[serde(rename = "@state", skip_serializing_if = "Option::is_none")]
    state: Option<String>,
}

impl Pane {
    pub(crate) fn from_location<L: Location>(loc: L, active_pane: &str) -> Pane {
        let (row, col) = loc.to_location();
        let (y_split, x_split) = (if row == 1 { None } else { Some(row - 1) }, if col == 1 { None } else { Some(col - 1) });
        Pane {
            x_split,
            y_split,
            top_left_cell: Some(loc.to_ref()),
            active_pane: Some(String::from(active_pane)),
            state: Some(String::from("frozen")),
        }
    }
    
    pub(crate) fn from_split(x_split: u32, y_split: u32) -> Self {
        Self {
            x_split: Some(x_split),
            y_split: Some(y_split),
            top_left_cell: None,
            active_pane: Some("bottomRight".to_string()),
            state: None,
        }
    }
}