edit-xlsx 0.4.4

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

#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub(crate) struct IgnoredErrors {
    #[serde(rename = "ignoredError")]
    ignored_error: Vec<IgnoredError>,
}

impl IgnoredErrors {
    pub(crate) fn from_map(error_map: HashMap<&str, String>) -> IgnoredErrors {
        let mut ignored_errors = IgnoredErrors::default();
        error_map.iter().for_each(|(error_type, sqref)|{
            ignored_errors.ignored_error.push(IgnoredError::from_sqref(error_type, sqref));
        });
        ignored_errors
    }
}

#[derive(Debug, Clone, Deserialize, Serialize, Default)]
struct IgnoredError {
    #[serde(rename = "@sqref")]
    sqref: String,
    #[serde(rename = "@numberStoredAsText")]
    number_stored_as_text: Option<u8>,
    #[serde(rename = "@evalError")]
    eval_error: Option<u8>,
    #[serde(rename = "@formulaDiffers")]
    formula_differs: Option<u8>,
    #[serde(rename = "@formulaRange")]
    formula_range: Option<u8>,
    #[serde(rename = "@formulaUnlocked")]
    formula_unlocked: Option<u8>,
    #[serde(rename = "@emptyCellReference")]
    empty_cell_reference: Option<u8>,
    #[serde(rename = "@listDataValidation")]
    list_data_validation: Option<u8>,
    #[serde(rename = "@calculatedColumn")]
    calculated_column: Option<u8>,
    #[serde(rename = "@twoDigitTextYear")]
    two_digit_text_year: Option<u8>,
}

impl IgnoredError {
    fn from_sqref(error_type: &str, sqref: &str) -> IgnoredError {
        let mut ignored_error = IgnoredError::default();
        match error_type {
            "number_stored_as_text" => {
                ignored_error.number_stored_as_text = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "eval_error" => {
                ignored_error.eval_error = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "formula_differs" => {
                ignored_error.formula_differs = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "formula_range" => {
                ignored_error.formula_range = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "formula_unlocked" => {
                ignored_error.formula_unlocked = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "empty_cell_reference" => {
                ignored_error.empty_cell_reference = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "list_data_validation" => {
                ignored_error.list_data_validation = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "calculated_column" => {
                ignored_error.calculated_column = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            "two_digit_text_year" => {
                ignored_error.two_digit_text_year = Some(1);
                ignored_error.sqref = String::from(sqref);
            },
            &_ => {}
        }
        ignored_error
    }
}