edit-xlsx 0.4.4

A quick and easy-to-use Rust library for Excel file editing.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Deserialize, Serialize, Default)]
pub(crate) struct DefinedNames {
    #[serde(rename = "definedName", skip_serializing_if = "Vec::is_empty")]
    defined_names: Vec<DefinedName>
}

impl DefinedNames {
    pub(crate) fn is_empty(&self) -> bool {
        self.defined_names.is_empty()
    }

    pub(crate) fn add_define_name(&mut self, name: &str, value: &str, local_sheet_id: Option<u32>) {
        let defined_name = DefinedName::new(name, value, local_sheet_id);
        self.defined_names.push(defined_name)
    }
}

#[derive(Debug, Deserialize, Serialize)]
struct DefinedName {
    #[serde(rename = "@name")]
    name: String,
    #[serde(rename = "@localSheetId", skip_serializing_if = "Option::is_none")]
    local_sheet_id: Option<u32>,
    #[serde(rename = "$value", default, skip_serializing_if = "String::is_empty")]
    value: String,
}

impl DefinedName {
    fn new(name: &str, value: &str, local_sheet_id: Option<u32>) -> DefinedName {
        DefinedName {
            name: String::from(name),
            local_sheet_id,
            value: String::from(value),
        }
    }
}