Skip to content

A robust desktop application that intelligently parses messy text data, filters out noise, and exports clean records to multi-sheet Excel files. Built with Python and Tkinter, packaged as standalone executables for easy distribution.

Notifications You must be signed in to change notification settings

iniakponode/data_sorter_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Data Sorter Application

Version Python Platform License

A robust desktop application that intelligently parses messy text data, filters out noise, and exports clean records to multi-sheet Excel files. Built with Python and Tkinter, packaged as standalone executables for easy distribution.

Latest Release: v2.0.0 (October 16, 2025)
New Features: Multi-architecture support, intelligent noise filtering, robust data parsing

πŸš€ Quick Start (No Python Required)

For End Users: Download and run the pre-built executable:

  1. Download the appropriate package for your system:

    • Windows 32-bit: DataSorterApp_32_Distribution.zip (21.1 MB)
    • Windows 64-bit: DataSorterApp_64_Distribution.zip (22.0 MB)
    • Universal Windows: DataSorterApp_universal_Distribution.zip (22.0 MB)
    • All Architectures: DataSorterApp_Complete_All_Architectures.zip (65.0 MB)
  2. Extract the ZIP file and run DataSorterApp.exe

  3. No Python installation required!

πŸ› οΈ Developer Installation

For developers who want to modify the source code:

  1. Clone this repository:
git clone https://github.com/iniakponode/data_sorter_app.git
cd data_sorter_app
  1. Create and activate virtual environment:
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/Mac:
source .venv/bin/activate
  1. Install dependencies:
pip install -r requirements.txt

Requirements

  • For End Users: Windows OS (32-bit or 64-bit)
  • For Developers: Python 3.8+ and dependencies listed in requirements.txt

Usage

  1. Run the application:
python app.py
  1. In the application window:
    • Paste your records into the text area (records should be in KEY: VALUE format, separated by blank lines)
    • Click the "Process and Export to Excel" button
    • Choose where to save the Excel file
    • View the confirmation message with the file location

Input Format

The application now intelligently filters noise and extracts data from messy text:

PERSONAL DATA OF COOPERATIVE OWNERS

NAME: John Doe
CO-OP NAME: Alpha Co-op
PHONE NO: 08012345678
BANK NAME: First Bank
ACCT NO: 1234567890
SEX: MALE

YOU JUST HAVE NOW TILL 3PM TOMORROW TO SEND YOUR DETAILS
PLZ DON'T SEND TO OTHER NUMBERS

CEO NAME: Jane Smith
CO-OP NAME: Beta Co-op
PHONE NO: 08087654321
BANK NAME: GTB
ACCT NO: 0987654321
SEX: FEMALE

Key Features:

  • 🧠 Intelligent Noise Filtering: Automatically removes headers, instructions, and irrelevant text
  • πŸ” Smart Data Detection: Recognizes valid KEY: VALUE pairs amidst noise
  • πŸ“‹ Flexible Format Support: Handles variations in key names and formatting
  • πŸ“Š Automatic Grouping: Records are grouped by the CO-OP NAME field value
  • ✨ Robust Parsing: Works with real-world messy data formats
  • πŸ“ Data Validation: Ensures only valid records with sufficient data are processed

Supported Field Variations:

  • Names: NAME, CEO NAME, CEO
  • Phone: PHONE NO, PHONE, Phone no
  • Bank: BANK NAME, BANK, Bank Name
  • Account: ACCT NO, ACCOUNT NO, ACC No, Acct. N0.
  • Cooperative: CO-OP NAME, COOP NAME, COOPERATIVE NAME

✨ Key Features

🧠 Intelligent Data Processing

  • Robust Noise Filtering: Automatically removes headers, instructions, and irrelevant text
  • Smart Data Detection: Recognizes valid KEY: VALUE pairs amidst messy data
  • Flexible Format Support: Handles variations in field names and formatting
  • Field Name Normalization: Intelligently matches similar field names (e.g., "PHONE NO", "Phone no", "PHONE")

πŸ“Š Advanced Parsing Capabilities

  • Automatic Column Detection: Uses first valid record to establish column structure
  • Mixed Format Support: Handles both KEY: VALUE format and single values per line
  • Record Boundary Detection: Intelligently separates records using blank lines
  • Data Validation: Ensures only valid records with sufficient data are processed

πŸ’Ό Professional Output

  • Multi-sheet Excel Export: Automatically groups records by CO-OP NAME
  • Clean Formatting: Auto-adjusted column widths and professional styling
  • Error Handling: Comprehensive error reporting and user feedback

πŸ–₯️ User Experience

  • Simple GUI: Intuitive drag-and-drop or paste interface
  • Real-time Processing: Instant feedback during data processing
  • Cross-platform Executables: Standalone apps for Windows (32-bit, 64-bit, universal)

πŸ“¦ Distribution Packages

The application is available as ready-to-run executables:

Package Size Target System Contents
DataSorterApp_32_Distribution.zip 21.1 MB Windows 32-bit Executable + Documentation + Examples
DataSorterApp_64_Distribution.zip 22.0 MB Windows 64-bit Executable + Documentation + Examples
DataSorterApp_universal_Distribution.zip 22.0 MB Universal Windows Executable + Documentation + Examples
DataSorterApp_Complete_All_Architectures.zip 65.0 MB All Windows All executables + Documentation

Package Contents

  • βœ… Ready-to-run executable (no Python installation required)
  • βœ… User documentation with installation and usage instructions
  • βœ… Example data file for testing
  • βœ… Launcher script for easy execution

Application Interface

The application window consists of:

  1. Instructions Label - Shows how to format input data
  2. Text Area - Large scrollable text field for pasting records
  3. Process Button - Green button to trigger data processing and export
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Data Sorter Application                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ First record: KEY: VALUE format (establishes columns)  β”‚
β”‚ Subsequent records: KEY: VALUE or single values per    β”‚
β”‚ line (Records separated by blank lines):               β”‚
β”‚                                                         β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚                                                       β”‚β”‚
β”‚ β”‚  Name: John Doe                                      β”‚β”‚
β”‚ β”‚  CO-OP NAME: Alpha Co-op                            β”‚β”‚
β”‚ β”‚  Member ID: 12345                                   β”‚β”‚
β”‚ β”‚  Email: john@example.com                            β”‚β”‚
β”‚ β”‚                                                       β”‚β”‚
β”‚ β”‚  Jane Smith                                         β”‚β”‚
β”‚ β”‚  Alpha Co-op                                        β”‚β”‚
β”‚ β”‚  67890                                              β”‚β”‚
β”‚ β”‚  jane@example.com                                   β”‚β”‚
β”‚ β”‚                                                       β”‚β”‚
β”‚ β”‚  Bob Johnson                                        β”‚β”‚
β”‚ β”‚  Beta Co-op                                         β”‚β”‚
β”‚ β”‚  11111                                              β”‚β”‚
β”‚ β”‚  bob@example.com                                    β”‚β”‚
β”‚ β”‚                                                       β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                         β”‚
β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚         β”‚ Process and Export to Excel     β”‚            β”‚
β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Example

Input:

Name: John Doe
CO-OP NAME: Alpha Co-op
Member ID: 12345

Name: Jane Smith
CO-OP NAME: Alpha Co-op
Member ID: 67890

Name: Bob Johnson
CO-OP NAME: Beta Co-op
Member ID: 11111

Output: An Excel file with two sheets:

  • "Alpha Co-op" sheet containing John Doe and Jane Smith's records
  • "Beta Co-op" sheet containing Bob Johnson's record

πŸ”§ Building Executables

For developers who want to build their own executables:

Single Architecture Build

# Activate virtual environment
.venv\Scripts\activate

# Install build dependencies
pip install pyinstaller

# Build for current architecture
python build_exe.py

Multi-Architecture Build

# Build for all Windows architectures
python create_packages.py

This will create distribution packages for:

  • 32-bit Windows systems
  • 64-bit Windows systems
  • Universal Windows compatibility
  • Complete package with all architectures

πŸ§ͺ Testing

The project includes a comprehensive test suite using pytest:

# Install test dependencies
pip install -r requirements.txt

# Run all tests
pytest test_app.py -v

# Run specific test categories
pytest test_app.py::test_parse_records -v
pytest test_app.py::test_group_by_coop -v

Test Coverage:

  • βœ… Noise filtering and data extraction
  • βœ… Record parsing from messy text input
  • βœ… Field name normalization and matching
  • βœ… Grouping records by CO-OP NAME
  • βœ… Excel file creation with multiple sheets
  • βœ… Edge cases (empty input, missing fields, malformed data)
  • βœ… Integration testing of complete workflow

πŸ“‹ Project Structure

data_sorter_app/
β”œβ”€β”€ app.py                    # Main application with GUI
β”œβ”€β”€ example.py               # Test data examples
β”œβ”€β”€ test_app.py             # Comprehensive test suite
β”œβ”€β”€ requirements.txt        # Python dependencies
β”œβ”€β”€ build_exe.py           # Multi-architecture build script
β”œβ”€β”€ create_packages.py     # Distribution package creator
β”œβ”€β”€ dist/                  # Built executables
β”‚   β”œβ”€β”€ DataSorterApp.exe           # 64-bit executable
β”‚   β”œβ”€β”€ DataSorterApp_x64.exe       # 64-bit explicit
β”‚   └── DataSorterApp_x86.exe       # 32-bit executable
└── *.zip                  # Distribution packages

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is open source and available under the MIT License.

πŸ“ž Support

For issues, questions, or contributions, please open an issue on the GitHub repository.

About

A robust desktop application that intelligently parses messy text data, filters out noise, and exports clean records to multi-sheet Excel files. Built with Python and Tkinter, packaged as standalone executables for easy distribution.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages