xlsx_rs/lib.rs
1//! # xlsx-rs
2//!
3//! Rust 版本的 Excel `.xlsx` 读写库,基于 [`ooxml_core`] 公共基座,
4//! 对标 [python-openpyxl](https://openpyxl.readthedocs.io/)。
5//!
6//! ## 定位
7//!
8//! - **完整读写**:支持创建、读取、修改 `.xlsx` 文件
9//! (区别于 `calamine` 只读、`rust_xlsxwriter` 只写)。
10//! - **Round-trip 保真**:读取后再保存,不丢失原有样式/公式/结构。
11//! - **基于 ooxml-core**:复用 OPC 打包层 + DrawingML 公共类型系统。
12//! - **零 unsafe**:纯 Rust 实现。
13//!
14//! ## 三层架构
15//!
16//! 与 pptx-rs 一致,xlsx-rs 分三层:
17//!
18//! 1. **OPC 容器层**(`ooxml_core::opc`):`.xlsx` 本质是 zip 包,
19//! 由 `[Content_Types].xml` + `.rels` + 各 part 组成。本 crate 直接复用 ooxml-core。
20//! 2. **OOXML 模型层**(`xlsx_rs::oxml`):SpreadsheetML 强类型映射
21//! (`<worksheet>` / `<sheetData>` / `<c>` / `<v>` 等)。
22//! 3. **高阶 API**(`xlsx_rs::Workbook` / `Worksheet` / `Cell`):用户友好的读写接口。
23//!
24//! ## 快速开始
25//!
26//! ```no_run
27//! use xlsx_rs::{Workbook, CellValue};
28//!
29//! let mut wb = Workbook::new();
30//! let sheet = wb.get_sheet_mut(0).unwrap();
31//! sheet.set_cell("A1", CellValue::Number(123.0));
32//! sheet.set_cell("B1", CellValue::String("Hello".to_string()));
33//! wb.save("hello.xlsx").unwrap();
34//! ```
35//!
36//! ## 路线图
37//!
38//! - v0.1.0:Workbook + Worksheet + Cell + SharedStrings 基础读写
39//! - v0.2.0:样式系统(Font/Fill/Border/Alignment/NumberFormat)
40//! - v0.3.0:公式读写 + CalcChain
41//! - v0.4.0:嵌入图片/形状(DrawingML 复用)
42//! - v0.5.0:图表(基于 pptx-rs Chart 经验迁移)
43//! - v0.6.0:Table/PivotTable + 条件格式
44
45pub mod cell;
46pub mod error;
47pub mod shared_strings;
48pub mod workbook;
49pub mod worksheet;
50
51pub use cell::{parse_a1, to_a1, Cell, CellType, CellValue};
52pub use error::{Error, Result};
53pub use shared_strings::SharedStringsTable;
54pub use workbook::Workbook;
55pub use worksheet::Worksheet;