# Excel Filter Tool

A Python application for filtering Excel files based on regex patterns with both CLI and GUI interfaces.

## Overview

The Excel Filter Tool allows you to:
- Analyze Excel files without opening them
- Filter rows based on configurable regex patterns
- Create new Excel files with filtered data
- Use a graphical interface or command line
- Configure settings via JSON files

## Quick Start

### Windows Users (Recommended)

**Pre-built installer available!**

Download and run `ExcelFilterSetup.exe` from the `dist/` directory for automatic installation including Python and all dependencies.

**OR** use the provided batch files:
- `launch_gui_tkinter.bat` - Launches the Tkinter GUI (recommended)
- `launch_gui.bat` - Launches the PySimpleGUI interface
- `launch_cli.bat` - Launches the command line version

### macOS/Linux Users

```bash
cd excel_filter
pip install -r requirements.txt
python -m src.excel_filter.gui
```

For CLI usage:
```bash
python -m src.excel_filter.main --input input.xlsx --output output.xlsx --pattern "error|warning"
```

### Command Line Usage

```bash
python -m src.excel_filter.main --input input.xlsx --output output.xlsx --pattern "error|warning"
```

### Graphical Interface

```bash
python -m src.excel_filter.gui
```

## Usage Guide

### Basic Filtering

```bash
python -m src.excel_filter.main --input data.xlsx --output filtered.xlsx --pattern "error|warning|critical"
```

### Filter Specific Columns

```bash
python -m src.excel_filter.main --input data.xlsx --output filtered.xlsx --pattern "active" --columns "Status Message"
```

### Using Configuration Files

Create a `config.json` file:

```json
{
    "input_file": "input.xlsx",
    "output_file": "output_filtered.xlsx",
    "pattern": "error|warning|critical",
    "sheet_name": "Sheet1",
    "columns": ["Status", "Message", "Description"]
}
```

Then run:

```bash
python -m src.excel_filter.main --config config.json
```

## Regex Patterns

The tool uses Python's `re` module. Examples:

- `error|warning` - Match "error" or "warning"
- `^A.*` - Lines starting with "A"
- `\d{3}` - Three-digit numbers
- `[A-Z].*` - Lines starting with capital letter

## Packaging & Distribution

### Build Executable

```bash
pip install pyinstaller pandas openpyxl customtkinter
python build_executable.py
```

### Create Installer

```bash
double-click build_installer.bat
```

This creates `ExcelFilterSetup.exe` that:
- Installs the application as a native Windows executable
- Automatically installs Python and dependencies if needed
- Creates desktop and Start menu shortcuts

## Technical Details

```

### Key Components

- **ExcelFilter Class**: Core filtering functionality
- **CLI Interface**: Command line processing
- **GUI Interface**: Graphical interface
- **Configuration Management**: JSON-based settings

### Dependencies

- `openpyxl` - Excel file operations
- `pandas` - Data manipulation
- `customtkinter` - GUI interface


## Examples

### Filter Log Files

```bash
python -m src.excel_filter.main --input logs.xlsx --output errors.xlsx --pattern "error|warning"
```

### Filter Customer Data

```bash
python -m src.excel_filter.main --input customers.xlsx --output active_customers.xlsx --pattern "active" --columns Status
```

### Filter Numeric Data

```bash
python -m src.excel_filter.main --input sales.xlsx --output high_sales.xlsx --pattern "1000.*" --columns Amount
```