A browser-based web application that allows users to upload table data files (CSV, Excel, JSON, Feather, Parquet) and perform advanced filtering operations similar to Excel's advanced filter functionality.
- File Upload: Support for CSV, Excel (.xlsx, .xls), JSON, Feather (.feather, .ftr), and Parquet (.parquet, .pq) file formats
- Interactive Table Display: View tabular data in a browser with virtual scrolling for large datasets
- Advanced Filtering:
- Single column filtering (text, numeric, date)
- Multi-select Value Selection: Select multiple values from a list for "Equals" operator (similar to Excel filter)
- Multiple column filtering with AND/OR logic
- Real-time filter updates
- Clear individual or all filters
- Data Export: Export filtered results to CSV with a timestamped filename
- Column Management: Show/hide specific columns, multi-column sorting
- Performance: Virtual scrolling for large datasets (handles 10,000+ rows smoothly)
| Data Type | Operators | Multi-select Support |
|---|---|---|
| Text | Equals, Contains, Starts with, Ends with | Yes (for Equals) |
| Numeric | Equals, Greater than, Less than, Between | Yes (for Equals) |
| Date | Equals, Before, After, Between | Yes (for Equals) |
When you select the Equals operator for any column, the Value input will automatically transform into a dropdown list containing all unique values present in that column. You can select one or more values to filter the data.
- Python 3.11.8
- See
requirements.txtfor dependencies
- Clone the repository:
cd /path/to/flexible_table- Create a virtual environment (recommended):
python3.11 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Verify installation:
python -c "import dash; import dash_table; import pandas; print('All dependencies installed successfully')"- Start the application:
python3.11 src/app.py- Open your web browser and navigate to:
http://127.0.0.1:8050
See quickstart guide for detailed usage instructions.
# Running via 'python -m pytest' automatically adds the project root to PYTHONPATH
python3.11 -m pytest tests/- Linting:
flake8 src/ tests/ - Formatting:
black src/ tests/ - Type Checking:
mypy src/
src/
├── app.py # Main Dash application entry point
├── components/ # Dash UI components
├── lib/ # Core business logic (library-first)
└── utils/ # Utility functions
tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
└── fixtures/ # Test data files
MIT License