Skip to content

goldarch/ExcelMergerWpf02

Repository files navigation

ExcelMergerWpf02 - 一款健壮、高性能的WPF Excel文件合并工具

image

ExcelMergerWpf02 是一款专为高效、安全地合并多个结构相同的 Excel 文件而设计的桌面应用程序。它采用了一系列现代软件设计模式和健壮的错误处理机制,确保在处理大规模数据时依然保持高性能和稳定性。

✨ 主要优点

本工具的核心优势体现在强大的容错机制卓越的性能与用户体验以及清晰的软件架构三个方面。


🛡️ 强大的容错机制 (Robust Fault Tolerance)

我们从一开始就将程序的健壮性放在首位,设计了多层保护机制以应对各种异常情况:

  • 严格的标题行验证 (Strict Header Validation) 程序会自动以第一个拖入的Excel文件为基准,严格校验后续所有文件的标题行。任何文件的列数、列名或列顺序与基准不符,合并任务将立即中止,并在界面上精确标记出错的文件,从根源上杜绝了错误数据的混入。

  • 关键字段非空判断 (Key fields are non-null judgment) 程序会可以设置关键字段列,关键字段列不能为空,如果关键字段值为空,则为关键字段为空的行跳过不合并

  • 超大文件限制保护 (Excel Row Limit Protection) 程序内置了对 Excel .xlsx 文件最大行数(1,048,576行)的自动检测。当合并后的总行数即将超出此限制时,任务会优雅地提前中止并明确告知用户,同时将任务状态置为失败(进度条变红),而不是因异常而崩溃。

  • 安全的文件保存机制 (Atomic-like Safe Saving) 在保存最终的合并文件时,程序采用“临时文件”策略。它会先将所有内容写入一个临时文件(如 .tmp),只有在这一步完全成功后,才会用这个临时文件去覆盖或生成最终的目标文件。这确保了即使在保存过程中发生断电或程序崩溃,会不小心会没有处理完整的文件当正常生成的文件使用了。

  • 优雅的任务取消 (Graceful Task Cancellation) 对于耗时较长的合并任务,用户可以随时点击“取消合并”按钮。后台任务会响应该请求,停止处理并安全退出,而不是强制中断或无响应。

  • 全面的异常处理 (Comprehensive Exception Handling) 无论是文件被占用、无读取权限,还是内容格式错误,底层的服务都进行了完善的 try-catch 封装,确保任何预料之外的错误都会被捕获,并以清晰的日志信息反馈给用户,避免程序直接崩溃。


🚀 卓越的性能与用户体验 (Excellent Performance & User Experience)

除了健壮,我们同样追求极致的效率和流畅的交互体验。

  • 核心性能优势:双流式处理引擎 (Dual-Streaming Engine) 本工具最大的技术亮点在于其内存处理方式。它能够处理包含数十万甚至上百万行的巨大Excel文件而几乎不占用额外内存。

    • 流式读取 (Stream Reading): 借助 ExcelDataReader 库,它能像读取文本文件一样逐行读取源Excel,而无需将整个文件加载到内存中。
    • 流式写入 (Stream Writing): 借助 NPOI 的 SXSSFWorkbook API,它在生成最终文件时,会将数据分批写入磁盘上的临时文件,内存占用始终保持在极低的水平。 这种“流进流出”的架构,从根本上解决了处理大数据时常见的内存溢出问题。
  • 流畅的UI与实时反馈 (Responsive UI & Real-time Feedback)

    • 永不卡顿: 所有耗时操作都在后台线程中执行,确保了即使在处理海量数据时,UI界面也始终保持流畅,可以随意拖动、缩放和操作。
    • 直观的拖放操作: 用户可以直接将多个文件或文件夹拖拽到文件列表中,操作直观高效。
    • 精确的进度报告:
      • 总体进度条: 清晰地显示整个合并任务的完成百分比,并在其上覆盖 [2/5] 这样的文件计数,主次分明。
      • 详细状态文本: 在进度条下方实时更新当前正在处理的文件名及具体的行数,让用户对进度了如指掌。
      • 文件列表状态: ListView 中的每一项都会实时更新其状态(等待中、处理中、已处理、失败、完成),一目了然。
    • 智能的默认设置: 首次拖入文件时,程序会自动将输出文件夹设置为该文件的所在目录,减少了用户的配置步骤。
    • 可视化的结果反馈: 任务结束后,进度条会变为绿色(成功)或红色(失败),提供即时、明确的结果确认。

🏛️ 清晰的软件架构 (Clear Software Architecture)

  • MVVM (Model-View-ViewModel) 模式: 项目严格遵循MVVM设计模式,将界面(View)、业务逻辑(ViewModel)和数据(Model)有效分离,使得代码结构清晰、易于理解和维护,同时也为单元测试打下了良好基础。
  • 服务层解耦: 核心的Excel处理逻辑被封装在独立的 ExcelMergerService 中,它与UI完全无关,可以被轻松地复用在其他项目(如控制台程序或Web应用)中。
  • 可复用的后台任务包装器 (TaskWrapper): TaskWrapper 是一个通用的组件,它封装了后台任务的启动、取消、状态管理和事件通知,可以方便地应用于任何需要异步操作和进度报告的场景。

About

Excel相同模板文件合并

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages