Transform your CSV and Excel files into stunning interactive dashboards and professional HTML reports with just one command!
A powerful, modular Python tool that instantly converts your data files into interactive web dashboards with advanced filtering, automatic chart generation, and professional HTML export capabilities. Perfect for data scientists, analysts, and anyone who needs to quickly explore and share data insights.
- π One-Command Setup: Launch interactive dashboards instantly
- π― Smart Auto-Detection: Automatically identifies column types and generates appropriate visualizations
- π Advanced Filtering: Multi-dimensional filtering with text search, ranges, and categorical selections
- π Auto-Generated Charts: Beautiful histograms, bar charts, and time series plots
- π Professional Export: Generate standalone HTML reports that work offline
- ποΈ Multi-Format Support: CSV, CSV.GZ, Excel (.xlsx, .xls) files
- β‘ High Performance: Optimized for datasets up to 500K+ rows
- π¨ Modern UI: Clean, responsive interface built with Gradio
# Clone the repository
git clone https://github.com/soroush-thr/csv2dashboard.git
cd csv2dashboard
# Install dependencies
pip install -r requirements.txt
# Optional: Install in development mode
pip install -e .# Launch interactive dashboard
python app.py examples/sales.csv
# Export static HTML report
python app.py examples/sales.csv --export report.html
# Use as a package (after installation)
csv2dashboard examples/sales.csv# First, verify everything is working
python test_installation.py
# Then test with the included sample data
python app.py examples/sales.csv --title "Sales Dashboard Demo"- Automatic Type Detection: Intelligently identifies numeric, categorical, datetime, and text columns
- Robust File Parsing: Handles various CSV delimiters, compressed files, and Excel sheets
- Data Validation: Built-in error handling and data quality checks
- Global Text Search: Search across all text and categorical columns simultaneously
- Numeric Range Filters: Interactive sliders for precise numeric value filtering
- Date Range Selection: Intuitive date pickers for time-based data
- Categorical Multi-Select: Dropdown filters for categorical data with "All" option
- Real-time Updates: Filters apply instantly as you interact with the interface
- Histograms: Distribution analysis for numeric columns
- Bar Charts: Top value analysis for categorical data
- Time Series: Trend analysis for datetime columns
- Responsive Design: Charts automatically resize and adapt to your screen
- Standalone HTML: Self-contained reports that work offline
- Interactive Charts: Exported reports maintain chart interactivity
- Custom Styling: Professional CSS styling for reports
- Filter Documentation: Exported reports include applied filter information
# Basic usage
python app.py data.csv
# Excel files with specific sheet
python app.py data.xlsx --sheet "Sales"
# Network access (accessible from other devices)
python app.py data.csv --host 0.0.0.0 --port 8080
# Custom title and port
python app.py data.csv --title "My Analysis" --port 9000# Basic export
python app.py data.csv --export report.html
# Custom title and filename
python app.py data.xlsx --export "Q4_Sales_Report.html" --title "Q4 Sales Analysis"
# Export with specific sheet
python app.py data.xlsx --sheet "Q4" --export "Q4_Report.html"| Option | Description | Default |
|---|---|---|
file |
Path to CSV or Excel file | Required |
--sheet |
Excel sheet name or number | First sheet |
--host |
Host to bind to | 127.0.0.1 |
--port |
Port to bind to | 7860 |
--export |
Export static HTML report | None |
--title |
Dashboard title | "CSV Dashboard" |
Test the tool with the included sample data:
# Test interactive dashboard
python app.py examples/sales.csv
# Test HTML export
python app.py examples/sales.csv --export test_report.html
# Test with different parameters
python app.py examples/sales.csv --title "Test Dashboard" --port 8080# Test with your CSV file
python app.py your_data.csv
# Test Excel file
python app.py your_data.xlsx --sheet "Sheet1"
# Test compressed CSV
python app.py your_data.csv.gz# Run comprehensive installation test
python test_installation.py
# Run basic import tests
python -c "from csvdash import load_table, infer_types; print('β
Import successful!')"
# Test data loading
python -c "
from csvdash import load_table, infer_types
df = load_table('examples/sales.csv')
types = infer_types(df)
print(f'β
Loaded {len(df)} rows, detected {len(types)} column types')
"# Test with large dataset (if you have one)
python app.py large_dataset.csv --title "Performance Test"We welcome contributions from the community! Here's how you can help:
- Check existing issues first to avoid duplicates
- Use the issue template and provide:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Sample data (if applicable)
- System information (OS, Python version)
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes following our coding standards
- Add tests for new functionality
- Update documentation if needed
- Commit your changes:
git commit -m 'Add amazing feature' - Push to your branch:
git push origin feature/amazing-feature - Open a Pull Request
# Clone your fork
git clone https://github.com/soroush-thr/csv2dashboard.git
cd csv2dashboard
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e .
# Install development dependencies
pip install -r requirements.txt
pip install black flake8 pytest # Optional: for code formatting and testing# Test imports
python -c "import csvdash; print('β
Package imports successfully')"
# Test with sample data
python app.py examples/sales.csv --export test_output.html
# Code formatting (if you have black installed)
black csvdash/ app.py
# Linting (if you have flake8 installed)
flake8 csvdash/ app.py- Follow PEP 8 style guidelines
- Use type hints for function parameters and return values
- Write docstrings for all public functions
- Keep functions focused on a single responsibility
- Add comments for complex logic
- Test your changes before submitting
- New chart types: Add more visualization options
- Enhanced filtering: More advanced filter types
- Performance improvements: Optimize for larger datasets
- UI enhancements: Improve the Gradio interface
- Export formats: Add PDF, Excel export options
- Documentation: Improve examples and guides
- Testing: Add comprehensive test suite
- Bug fixes: Help resolve reported issues
This tool provides a completely free solution! Just install the dependencies and run python app.py your_file.csv. No registration, no cloud services required.
Use the --sheet parameter to specify which sheet to load: python app.py data.xlsx --sheet "Sheet2". If no sheet is specified, it loads the first sheet.
Use the --export flag: python app.py data.csv --export report.html. The generated HTML file includes all charts and works offline.
- CSV files (with auto-delimiter detection)
- Compressed CSV files (.csv.gz)
- Excel files (.xlsx, .xls)
The tool works well with datasets up to ~500k rows. For larger datasets, consider filtering to specific columns or time ranges for better performance.
Currently, charts are auto-generated based on data types. Customization options are planned for future releases.
csv2dashboard/
βββ app.py # Main entry point
βββ setup.py # Package installation
βββ requirements.txt # Dependencies
βββ csvdash/ # Main package
β βββ __init__.py # Package exports
β βββ cli.py # Command-line interface
β βββ config.py # Configuration settings
β βββ data_loader.py # File loading & type inference
β βββ filters.py # Data filtering logic
β βββ analysis.py # Statistical analysis & charts
β βββ export.py # HTML report generation
β βββ ui.py # Gradio interface
β βββ utils.py # Utility functions
βββ examples/ # Sample data files
- Python: 3.8 or higher
- Dependencies: pandas, plotly, gradio, openpyxl
- Memory: 2GB+ RAM recommended for large datasets
- Browser: Modern web browser for dashboard interface
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Gradio for the web interface
- Powered by Plotly for interactive charts
- Data processing with Pandas
- Excel support via OpenPyXL
Made with β€οΈ for the data community