xlsx-rs2 0.1.0

Rust 版本的 Excel .xlsx 读写库,基于 ooxml-core,对标 python-openpyxl
Documentation
//! 统一错误类型。
//!
//! 本 crate 的所有公共 API 都返回 [`Result<T, Error>`](crate::Result)。
//! 错误来源主要有三类:
//!
//! - **OPC 容器层错误**:来自 [`ooxml_core::Error`],通过 `From` 转换;
//! - **XLSX schema 错误**:解析 `.xlsx` 内部 XML 时遇到不符合 OOXML 规范的结构;
//! - **用户 API 错误**:如无效的单元格引用(`"A1X"`)、越界索引等。

use thiserror::Error;

/// XLSX 读写过程中可能发生的错误。
#[derive(Debug, Error)]
pub enum Error {
    /// IO 错误(文件读写)。
    #[error("io: {0}")]
    Io(#[from] std::io::Error),

    /// zip 解压/压缩错误。
    #[error("zip: {0}")]
    Zip(#[from] zip::result::ZipError),

    /// ooxml-core 公共基座错误(OPC / XML 解析 / 单位换算等)。
    #[error("ooxml-core: {0}")]
    OoxmlCore(#[from] ooxml_core::Error),

    /// XML 解析错误(quick-xml)。
    #[error("xml: {0}")]
    Xml(String),

    /// XLSX schema 错误:解析到的 XML 不符合 OOXML SpreadsheetML 规范。
    #[error("xlsx schema: {0}")]
    Schema(String),

    /// 无效的单元格引用(如 `"A1X"` / `""` / `"0A"`)。
    #[error("invalid cell reference: {0}")]
    InvalidCellRef(String),

    /// 无效的工作表名称(含非法字符或长度超限)。
    #[error("invalid sheet name: {0}")]
    InvalidSheetName(String),

    /// 索引越界(如访问不存在的 sheet/cell)。
    #[error("index out of range: {0}")]
    IndexOutOfRange(usize),

    /// 功能尚未实现(路线图中的 TODO 项)。
    #[error("not implemented: {0}")]
    NotImplemented(&'static str),

    /// 其他未分类错误。
    #[error("{0}")]
    Other(String),
}

/// XLSX 专用 Result 别名。
pub type Result<T> = std::result::Result<T, Error>;