Excel for Developers - A fast, local-first web GUI for exploring data with VisiData
Project description
VisiLens
Excel for Developers
Open 1M+ rows in seconds. Local, fast, simple.
A high-performance, local-first web GUI for exploring datasets. Instantly view and filter CSV, Parquet, Excel, and JSON files using the power of VisiData.
English • 简体中文 • Español • 日本語 • Русский
Features • Installation • Usage • Architecture • Contributing
📦 Package Name Notice
The PyPI package name isvdweb(install withpip install vdweb), but you can use eithervisilensorvdwebas the command-line tool after installation. We recommend usingvisilensfor consistency with the project name.
🚀 Why VisiLens?
Data exploration shouldn't require writing boilerplate Pandas code or waiting for heavy spreadsheet software like Excel to load. VisiLens is a modern CSV viewer and Parquet explorer that combines the raw speed of VisiData with a lightweight web interface.
- ⚡️ Load 1M rows in under 2 seconds: Powered by VisiData's highly optimized engine.
- 🔒 All local: Your data never leaves your machine. No cloud uploads.
- 🛠 Zero config: CLI-first workflow. Pipe data in, explore, and get back to coding.
- 🔌 Universal Support: Open CSV, TSV, JSON, Parquet, Excel, SQLite, and 50+ other formats.
✨ Features
- Instant Data Visualization: Just run
visilens data.csvto visualize large datasets instantly. - Backend-powered Sorting & Filtering: Perform complex queries on millions of rows using the VisiData engine.
- Column Manipulation: Change column types, rename columns, and edit data with an intuitive context menu.
- Advanced Filtering: Apply multiple filter conditions with support for regex pattern matching.
- Lightweight Data Grid: A virtualized React-based table view for smooth scrolling.
- Zero Config: No database setup required. Works as a standalone CSV/Parquet viewer.
📂 Supported Formats
VisiLens leverages VisiData's loaders to support a wide range of formats out of the box:
- Tabular:
.csv,.tsv,.xlsx(Excel),.parquet - Structured:
.json,.jsonl,.yaml - Database:
.sqlite,.db - Code:
.pcap(Wireshark),.xml,.htmltables
📊 Benchmarks
We take performance seriously. Here is how VisiLens compares when opening a 1,000,000 row CSV dataset on a standard MacBook Air (M2).
| Tool | Load Time (1M Rows) | Memory Footprint | Interactive Sorting |
|---|---|---|---|
| VisiLens | ~1.7s | Minimal (< 50MB Total) | Instant (Backend: < 0.4s) |
| Excel | > 30s (Often Fails) | High (Blocking RAM) | Slow/Unresponsive |
| Pandas-based GUI | > 15s (Cold Start) | High (Entire DF in RAM) | Sluggish (Non-Virtualized) |
| Jupyter (print df) | Fast | Medium | Static Text |
Test Data: 1M rows, 3 columns (Mixed types). Numbers are from my MacBook Air M2 during real development use.
📦 Installation
VisiLens is available as a Python package.
pip install visilens
Note: VisiLens requires Python 3.10 or higher.
💻 Usage
Command Line Interface
The primary way to use VisiLens is via the command line.
# Open a CSV file
visilens data.csv
# Open a Parquet file
visilens large-dataset.parquet
# Open an Excel file
visilens spreadsheet.xlsx
# Launch without opening the browser automatically
visilens data.json --no-browser
# Specify a custom port
visilens data.csv --port 9000
Web Interface
Once launched, VisiLens opens in your default browser (usually http://localhost:8000).
- View Data: Scroll through your dataset efficiently.
- Sort: Click column headers to sort ascending/descending.
- Filter: Use the power filter bar to apply complex queries with multiple conditions.
- Column Operations: Right-click column headers to change types, rename columns, or access advanced options.
- Load New Data: (Coming Soon) Drag and drop files directly into the window.
🏗 Architecture
VisiLens is built on a robust modern stack designed for performance:
- Backend: FastAPI server bridges VisiData and the browser.
- Communication: WebSockets stream slices on demand.
- Frontend: React grid renders only what you see.
🗺 Roadmap
We are actively working on making VisiLens the ultimate local data companion.
For a detailed breakdown of our feature strategy and technical implementation plan, please see ROADMAP.md.
- v0.1: Core Engine, Virtual Scrolling, Sorting, Filtering.
- v0.2: Column Type Conversion, Column Renaming, Advanced Filtering, Context Menu.
- Jupyter Integration: Launch VisiLens directly from a notebook cell (
visilens.view(df)). - Drag-and-drop file loading
- Plotting: Quick histograms and scatter plots via Vega-Lite.
- Cell Editing: Edit cells and save changes back to CSV/Parquet.
- SQL Support: Connect directly to SQLite/Postgres/DuckDB.
🛠 Development
Want to contribute? Great! Here's how to set up the development environment.
Prerequisites
- Python 3.10+
- Node.js 18+
- npm or pnpm
Setup
-
Clone the repository
git clone https://github.com/PStarH/VisiLens.git cd VisiLens
-
Backend Setup
# Create virtual environment python -m venv .venv source .venv/bin/activate # or .venv\Scripts\activate on Windows # Install dependencies pip install -e ".[dev]"
-
Frontend Setup
cd frontend npm install
-
Run Locally
Terminal 1 (Backend):
uvicorn backend.main:app --reload --port 8000
Terminal 2 (Frontend):
cd frontend
npm run dev
- Build frontend assets (optional)
If you prefer to run only the Python CLI (without a separate Vite dev server), you can build the frontend once:
cd frontend
npm run build
This produces a production bundle under frontend/dist/ which is copied into vdweb/static/ for releases. End users then just run:
visilens path/to/data.csv
🤝 Contributing
For more details, please see CONTRIBUTING.md.
For Contributors: where things live
- Python package (
vdweb/): This is the installable package published to PyPI asvdweb. The CLI entrypointsvisilensandvdwebboth resolve tovdweb.cli:mainas configured inpyproject.toml. - Dev backend (
backend/): A separate FastAPI app used only for local development (uvicorn backend.main:app). It mirrors the behavior of the packaged backend but is not what users import when they installvisilens. - Core logic: The VisiData-powered data access layer lives in
vdweb/core.py(and is mirrored inbackend/core.pyfor the dev app). If you want to change how data is loaded/sorted/filtered, start here.
Typical contributor workflow
- Edit backend / core logic in
vdweb/(and updatebackend/if needed for dev parity). - Run the dev backend + frontend locally as described in Development.
- If you change the React app and want those changes to ship, run
npm run buildinfrontend/so the bundle that will be copied intovdweb/static/is up to date.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vdweb-0.2.0.tar.gz.
File metadata
- Download URL: vdweb-0.2.0.tar.gz
- Upload date:
- Size: 201.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc223dbc0289ba3384b64bbc89a71509172049e2590e8301f32f5682d64513e6
|
|
| MD5 |
0a2a745fc6fe4962bc7885df3e641205
|
|
| BLAKE2b-256 |
2a6444dae9d2d92a02eb8ad6a0d0c8d06e6c227bb66e1be0010dc4424e379bec
|
File details
Details for the file vdweb-0.2.0-py3-none-any.whl.
File metadata
- Download URL: vdweb-0.2.0-py3-none-any.whl
- Upload date:
- Size: 198.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70d03cd24635ccc878524fc7f610e03f0625bb73de1835a7209d51ebbbe756ac
|
|
| MD5 |
85fc1740b5896a3f0c3ef9212054f9be
|
|
| BLAKE2b-256 |
83a0420307afe151a57647ead2c0562ad63202622bdfdf91aeb2cba82f65a085
|