# ExcelDataAnalyzer **Repository Path**: lhhtb/excel-data-analyzer ## Basic Information - **Project Name**: ExcelDataAnalyzer - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-31 - **Last Updated**: 2026-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel 数据筛选平台 (ExcelDataAnalyzer) 一个 Windows 原生 (WPF + .NET 8) 桌面应用,用于导入大型 Excel 文件(支持几十万行)并按表头进行多条件筛选。数据保存在本地 SQLite 数据库。 ## 功能 - 📂 上传 Excel 文件(`.xlsx` / `.xls`)— 流式读取,内存友好 - 🗃 数据保存到本地 SQLite 数据库(WAL 模式,索引优化) - 🧠 自动识别表头并推断列数据类型(整数/小数/日期/布尔/字符串) - 🔎 按任意表头多条件筛选(=, !=, 包含, 不包含, 大于, 小于, BETWEEN, IN, 为空, 非空 …) - 🔗 支持 AND / OR 逻辑组合 - ⚡ 数据库层分页 + WPF DataGrid UI 虚拟化,大数据量下流畅 - 💾 **筛选结果导出**:支持 Excel (.xlsx) 和 CSV (.csv),流式写入,几十万行也能导 - 📋 已导入表的管理(切换 / 删除) ## 项目结构 ``` ExcelDataAnalyzer.sln └── src/ ├── ExcelDataAnalyzer.App/ # WPF 入口、Views、DI 配置 ├── ExcelDataAnalyzer.Core/ # 模型、接口、枚举 ├── ExcelDataAnalyzer.Infrastructure/ # SQLite、Excel 读取、SQL 构建 └── ExcelDataAnalyzer.ViewModels/ # MVVM ViewModels ``` ## 环境要求 - **Windows 10/11** - **.NET 8 SDK** — https://dotnet.microsoft.com/download/dotnet/8.0 - 推荐:**Visual Studio 2022** (17.8+) 或 **JetBrains Rider** ## 编译与运行 ### 方式 1:使用 Visual Studio 1. 双击 `ExcelDataAnalyzer.sln` 2. 选择 `ExcelDataAnalyzer.App` 为启动项目 3. 按 `F5` 运行 ### 方式 2:使用命令行 ```bash # 还原依赖 dotnet restore # 编译 dotnet build -c Release # 运行 dotnet run --project src/ExcelDataAnalyzer.App ``` ### 方式 3:发布为单文件可执行程序 ```bash dotnet publish src/ExcelDataAnalyzer.App -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -o publish ``` 发布产物在 `publish/ExcelDataAnalyzer.exe`。 ## 使用步骤 1. 启动应用 2. 点击工具栏 **「📂 导入 Excel」** 按钮 3. 选择 Excel 文件,点击 **「开始导入」** 4. 导入完成后,左侧列表会出现新表,点击表名加载数据 5. 顶部 **「筛选条件」** 区域点击 **「+ 添加条件」** 添加筛选规则 6. 选择列名、操作符、输入值,点击 **「应用筛选 ▶」** 7. 底部使用分页按钮查看不同页 8. 工具栏点击 **「💾 导出筛选结果」** 可将筛选后的全部数据导出为 Excel 或 CSV ## 数据库位置 SQLite 数据库默认存储在: ``` %LOCALAPPDATA%\ExcelDataAnalyzer\data.db ``` ## 性能建议 - 单个 Excel 文件 50 万行约需 1-3 分钟导入(依硬件而定) - 导入时数据是 **每 5000 行一个事务** 批量写入 - 所有列默认建索引,加速筛选;如不需要可在 `ColumnInfo.ShouldIndex` 中关闭 - DataGrid 启用 UI/Row/Column 虚拟化,几十万行下也流畅 - 每页默认 200 行,可在 `DataGridViewModel.PageSize` 中调整 ## 技术栈 | 组件 | 选型 | |------|------| | UI | WPF + .NET 8 | | MVVM | CommunityToolkit.Mvvm | | 数据库 | SQLite (`Microsoft.Data.Sqlite`) | | Excel 读取 | ExcelDataReader | | Excel 写出 | DocumentFormat.OpenXml (SAX 流式) | | SQL 执行 | Dapper | | DI | Microsoft.Extensions.DependencyInjection | ## 已知限制 - 仅在 Windows 上运行(WPF 依赖 Windows-only API) - 当前不支持 Excel 多工作表(只读取首个工作表) - 不支持 Excel 公式动态计算(读取的是公式结果值) - 数据列名重复时会自动追加 `_2`、`_3` 后缀 ## 后续可扩展 - 多 Sheet 选择 - 筛选结果导出为 Excel/CSV - 数据可视化(图表) - 列排序多级支持 - 数据修改/编辑