# Excel Filter Tool - Streamlit Web Application

A modern web-based Excel filtering tool built with Streamlit. This application allows you to filter Excel files using regex patterns, numeric filters, and column selection - all from your browser without installing any software.

## Features

- 📁 **Easy File Upload**: Drag and drop Excel files (.xlsx, .xls)
- 🔍 **Regex Filtering**: Filter rows using powerful regex patterns
- 🔢 **Numeric Filters**: Filter by numeric comparisons (>, <, >=, <=, =)
- 📊 **Column Selection**: Choose specific columns for output
- 🌐 **Multi-language Support**: German and English interface
- 📈 **Statistics**: View filtering statistics and retention rates
- 💾 **Configuration**: Save and load filter configurations

## Quick Start

### Run Locally (Windows)

```bash
run_streamlit.bat
```

### Run Locally (Linux/Mac)

```bash
chmod +x run_streamlit.sh
./run_streamlit.sh
```

### Run with Docker

```bash
docker build -t excel-filter .
docker run -p 8501:8501 excel-filter
```

### Run with Docker Compose

```bash
docker-compose up -d
```

## Coolify Deployment

### Option 1: Docker Compose

1. Push this repository to your Git server
2. In Coolify, create a new resource and select "Docker Compose"
3. Point to your repository
4. Deploy!

### Option 2: Dockerfile

1. In Coolify, create a new resource and select "Dockerfile"
2. Point to your repository
3. Set the port to `8501`
4. Deploy!

### Environment Variables (Optional)

No environment variables are required, but you can set:

- `TZ` - Timezone (default: UTC)

## Usage

1. **Upload**: Drag and drop an Excel file or click to browse
2. **Select Sheet**: Choose the worksheet to filter
3. **Configure Filters**:
   - **Regex Tab**: Enable regex filtering and enter a pattern
   - **Numeric Tab**: Set up numeric comparisons
   - **Columns Tab**: Select which columns to include
4. **Apply**: Click "Apply Filters" to process
5. **Download**: Click "Download Filtered File" to get results

## File Structure

```
├── streamlit_app.py         # Main Streamlit application
├── Dockerfile               # Docker configuration
├── docker-compose.yml       # Docker Compose configuration
├── .dockerignore            # Docker ignore file
├── .streamlit/
│   └── config.toml          # Streamlit configuration
├── run_streamlit.bat        # Windows runner script
├── run_streamlit.sh         # Linux/Mac runner script
└── excel_filter/            # Core filter module
    ├── filter.py            # Main filter logic
    ├── requirements.txt     # Python dependencies
    └── locales/             # Translations
        ├── de.json
        └── en.json
```

## Regex Examples

| Pattern | Description |
|---------|-------------|
| `error\|warning` | Find rows with "error" OR "warning" |
| `[0-9]{4}` | Find 4-digit numbers |
| `[a-z]+@[a-z]+\.[a-z]{2,}` | Find email addresses |
| `\d{4}-\d{2}-\d{2}` | Find dates (YYYY-MM-DD) |
| `error.*critical` | Find "error" followed by "critical" |

## Development

### Prerequisites

- Python 3.11+
- pip

### Installation

```bash
python -m venv venv
source venv/bin/activate  # Linux/Mac
# or
venv\Scripts\activate  # Windows

pip install -r excel_filter/requirements.txt
pip install streamlit
```

### Run Development Server

```bash
streamlit run streamlit_app.py
```

## License

See LICENSE file for details.