# 考勤统计助手 (Attendance Counter) 这是一个基于 **Rust** + **Tauri** 开发的桌面应用程序,用于自动化处理学生考勤数据并生成月度费用报表。 ## 核心功能 1. **Excel 数据读取**: * 支持导入 `.xlsx` 和 `.xls` 格式的考勤表。 * 自动识别表头中的日期列(支持 Excel 序列号日期格式)。 * 解析学生基本信息(入学年份、年级、班级、姓名)。 2. **智能数据处理**: * **考勤统计**:自动统计每个学生每月的出勤次数(输入表中标记为 `1` 即为出勤)。 * **费用计算**: * **思维班**(班级名称包含"思维"):单价 **30元/次**。 * **其他班级**:单价 **24元/次**。 * **月度汇总**:自动按月份聚合数据,生成每月的次数和费用小计。 3. **报表生成**: * 生成格式化的 Excel (`.xlsx`) 报表。 * **样式还原**:完美复刻目标模板的视觉风格(宋体、蓝色表头、边框、居中对齐)。 * **自动公式**:生成的表格包含 Excel 公式(`=PRODUCT(...)` 和 `=SUM(...)`),方便后续手动修改数据时自动更新合计。 * **智能保存**: * 默认保存在应用同级目录。 * 若从桌面快捷方式启动,则自动保存到桌面。 ## 技术栈 本项目采用现代化的 **Tauri 2.0** 框架构建,结合了 Rust 的高性能和 Web 前端的灵活性。 * **核心框架**: [Tauri 2.x](https://tauri.app/) (构建跨平台桌面应用) * **后端 (Rust)**: * `calamine`: 高效读取 Excel 文件。 * `rust_xlsxwriter`: 生成带有复杂样式和公式的 Excel 文件。 * `serde`: 数据序列化与反序列化。 * `chrono`: 日期和时间处理。 * `dirs`: 跨平台路径处理(识别桌面路径)。 * **前端**: * HTML5 / CSS3 * Vanilla JavaScript (原生 JS,无繁重框架依赖) ## 开发环境准备 在开始之前,请确保您的开发环境已安装以下工具: 1. **Rust**: [安装 Rust](https://www.rust-lang.org/tools/install) 2. **Node.js**: [安装 Node.js](https://nodejs.org/) (建议 LTS 版本) 3. **系统依赖**: * **macOS**: 需要安装 Xcode Command Line Tools (`xcode-select --install`)。 * **Windows**: 需要安装 [Microsoft Visual Studio C++ 生成工具](https://visualstudio.microsoft.com/visual-cpp-build-tools/)。 ## 跨平台支持 本项目代码完全**跨平台**,可以在 **Windows**、**macOS** 和 **Linux** 上编译运行。 * **Windows 用户注意**: * Tauri 依赖 Webview2(Windows 10/11 通常已内置)。 * 建议直接在 Windows 系统上拉取代码并运行 `npm run tauri build` 进行打包,生成的 `.exe` 文件即可直接使用。 * 输出文件逻辑与 macOS 一致:如果 `.exe` 放在桌面上运行,生成的 Excel 也会在桌面;否则在同级目录。 ## 安装与运行 1. **克隆项目/进入目录** ```bash cd count_attendance ``` 2. **安装前端依赖** ```bash npm install ``` 3. **启动开发模式** 此命令会同时启动前端服务和 Rust 后端,并打开应用窗口。 ```bash npm run tauri dev ``` ## 打包与发布 要生成可分发的应用程序(如 macOS 的 `.app` 或 `.dmg`),请运行: ```bash npm run tauri build ``` 打包完成后,安装包通常位于: `src-tauri/target/release/bundle/macos/` (macOS) ## 项目结构 ``` count_attendance/ ├── src/ # 前端源代码 (HTML, CSS, JS) ├── src-tauri/ # Rust 后端源代码 │ ├── src/ │ │ ├── lib.rs # Tauri 命令与模块入口 │ │ ├── excel_reader.rs # Excel 读取逻辑 │ │ ├── data_processor.rs# 数据处理与计算逻辑 │ │ └── excel_writer.rs # Excel 生成与样式逻辑 │ ├── Cargo.toml # Rust 依赖配置 │ └── tauri.conf.json # Tauri 项目配置 ├── package.json # 前端依赖配置 └── README.md # 项目说明文档 ```