This is a spreadsheet application built from scratch in C# using .NET WinForms. Developed as a semester project for Washington State University's CPTS 321: Object-Oriented Software Principles, the application emulates key spreadsheet behaviors such as cell editing, formula parsing, dependency tracking, and dynamic UI updates.
Spreadsheet.app.demo.mp4
-
Cell Expression Parsing:
Supports formulas (e.g.A1+B2) with binary operations using a custom-built expression tree and evaluation engine. -
Cell Dependency Tracking:
Automatically tracks cell references and updates dependent values on change. -
Undo/Redo Functionality:
Custom command pattern implementation for seamless undo/redo of text and formatting operations. -
File I/O:
Save and load spreadsheets via.csvwith full cell data retention. -
Cell Formatting:
Users can change background color of individual cells to enhance visibility. -
Performance-Optimized Event Handling:
Efficient internal update propagation prevents circular references and ensures consistent state.
Extensive unit testing using NUnit framework covering:
- Formula evaluation
- Dependency propagation
- Undo/redo history
- File save/load integrity
- Language: C#
- Framework: .NET WinForms
- Testing: NUnit
- Architecture: MVC-inspired with custom command pattern and event-driven updates
- Object-oriented design and principles (encapsulation, inheritance, polymorphism)
- UI design using WinForms
- Practical application of data structures (trees, stacks, dictionaries)
- Test-driven development and custom undo/redo systems
/SpreadsheetApp │ ├── SpreadsheetEngine # Core logic for cell management, formula evaluation ├── UI # WinForms-based user interface ├── Commands # Undo/redo command classes ├── Tests # NUnit unit tests └── README.md
- Ehiane Kelvin Oigiagbe – ehiane.com
(Solo project for course credit)
MIT License – feel free to fork, contribute, and build upon this project.