SkillAgentSearch skills...

Xleak

A fast terminal Excel viewer with an interactive TUI. Features full-text search, formula display, lazy loading for large files, clipboard support, and export to CSV/JSON. Built with Rust and ratatui.

Install / Use

/learn @bgreenwell/Xleak
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

xleak <img src="assets/logo.jpg" align="right" width="120" />

CI Crates.io Downloads

License: MIT Rust Easy Install Platform

Expose Excel files in your terminal - no Microsoft Excel required!

Inspired by doxx, xleak brings Excel spreadsheets to your command line with beautiful rendering, powerful export capabilities, and a feature-rich interactive TUI.

xleak demo

Features

Core Functionality

  • Beautiful terminal rendering with formatted tables
  • Interactive TUI mode - full keyboard navigation with ratatui
  • Smart data type handling - numbers right-aligned, text left-aligned, booleans centered
  • Multi-sheet support - seamlessly navigate between sheets (Tab/Shift+Tab)
  • Excel Table support - list and extract named tables (.xlsx only)
  • Multiple export formats - CSV, JSON, plain text
  • Blazing fast - powered by calamine, the fastest Excel parser in Rust
  • Multiple file formats - supports .xlsx, .xls, .xlsm, .xlsb, .ods

Interactive TUI Features

  • Full-text search - search across all cells with /, navigate with n/N
  • Clipboard support - copy cells (c) or entire rows (C) to clipboard
  • Formula display - view Excel formulas in cell detail view (Enter key)
  • Jump to row/column - press Ctrl+G to jump to any cell (e.g., A100, 500, 10,5)
  • Large file optimization - lazy loading for files with 1000+ rows
  • Progress indicators - real-time feedback for long operations
  • Visual cell highlighting - current row, column, and cell clearly marked

Installation

Package Managers

macOS / Linux (Homebrew):

brew install bgreenwell/tap/xleak

Windows (Scoop):

scoop bucket add bgreenwell https://github.com/bgreenwell/scoop-bucket
scoop install xleak

Windows (WinGet): (Coming soon - pending initial PR merge)

winget install bgreenwell.xleak

Arch Linux (AUR):

# Using yay
yay -S xleak-bin

# Or using paru
paru -S xleak-bin

Cargo (all platforms):

cargo install xleak

Nix:

# Run directly
nix run github:bgreenwell/xleak -- file.xlsx

# Install with flakes
nix profile install github:bgreenwell/xleak

Quick Install Scripts

macOS / Linux:

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bgreenwell/xleak/releases/latest/download/xleak-installer.sh | sh

Windows (PowerShell):

irm https://github.com/bgreenwell/xleak/releases/latest/download/xleak-installer.ps1 | iex

Pre-built Binaries

Download platform-specific binaries from the latest release:

  • macOS: Universal binary (Apple Silicon + Intel)
  • Linux: x86_64 (glibc and musl)
  • Windows: x86_64 MSI installer or standalone .exe

Build from Source

git clone https://github.com/bgreenwell/xleak.git
cd xleak
cargo install --path .

Requirements: Rust 1.70 or later

Usage

Interactive TUI Mode (Recommended)

# Launch interactive viewer
xleak quarterly-report.xlsx -i

# Start on a specific sheet
xleak report.xlsx --sheet "Q3 Results" -i

# View formulas by default
xleak data.xlsx -i --formulas

# Enable horizontal scrolling for wide files (auto-size columns)
xleak wide-data.xlsx -i -H

TUI Keyboard Shortcuts:

  • ↑ ↓ ← → - Navigate cells
  • Enter - View cell details (including formulas)
  • / - Search across all cells
  • n / N - Jump to next/previous search result
  • Ctrl+G - Jump to specific row/cell (e.g., 100, A50, 10,5)
  • c - Copy current cell to clipboard
  • C - Copy entire row to clipboard
  • Tab / Shift+Tab - Switch between sheets
  • ? - Show help
  • q - Quit

Non-Interactive Mode

View a spreadsheet

xleak quarterly-report.xlsx

View a specific sheet

# By name
xleak report.xlsx --sheet "Q3 Results"

# By index (1-based)
xleak report.xlsx --sheet 2

Limit displayed rows

# Show only first 20 rows
xleak large-file.xlsx -n 20

# Show all rows
xleak file.xlsx -n 0

Export data

# Export to CSV
xleak data.xlsx --export csv > output.csv

# Export to JSON
xleak data.xlsx --export json > output.json

# Export as plain text (tab-separated)
xleak data.xlsx --export text > output.txt

Work with Excel Tables (.xlsx only)

# List all tables in a workbook
xleak workbook.xlsx --list-tables

# Extract a specific table as JSON (default)
xleak workbook.xlsx --table "Sales"

# Extract table as CSV
xleak workbook.xlsx --table "Sales" --export csv > sales.csv

# Extract table as plain text
xleak workbook.xlsx --table "Employees" --export text

Combine options

# Export specific sheet as CSV
xleak workbook.xlsx --sheet "Sales" --export csv > sales.csv

Examples

# Launch interactive viewer
xleak quarterly-report.xlsx -i

# Quick preview in non-interactive mode
xleak quarterly-report.xlsx

# See specific sheet with limited rows
xleak financial-data.xlsx --sheet "Summary" -n 10

# Interactive mode with formulas visible
xleak data.xlsx -i --formulas

# Export all data from a sheet
xleak survey-results.xlsx --sheet "Responses" --export csv -n 0

Configuration

xleak supports configuration via a TOML file for persistent settings like default theme and keybindings.

Config File Location

Default: ~/.config/xleak/config.toml (or $XDG_CONFIG_HOME/xleak/config.toml)

Platform-specific fallback locations:

  • macOS: ~/Library/Application Support/xleak/config.toml
  • Linux: ~/.config/xleak/config.toml (same as XDG)
  • Windows: %APPDATA%\xleak\config.toml

Custom: Use --config flag to specify a different location:

xleak --config /path/to/config.toml file.xlsx -i

Quick Start

  1. Copy the example:

    mkdir -p ~/.config/xleak
    cp config.toml.example ~/.config/xleak/config.toml
    
  2. Or create a minimal config:

    mkdir -p ~/.config/xleak
    cat > ~/.config/xleak/config.toml << 'EOF'
    [theme]
    default = "Dracula"
    
    [ui]
    max_rows = 50
    column_width = 30
    
    [keybindings]
    profile = "vim"
    EOF
    
  3. Test your config:

    xleak file.xlsx -i
    

Configuration Options

Theme Settings

[theme]
# Default theme to use on startup
default = "Dracula"

Available themes:

  • "Default" - Clean light theme with subtle colors
  • "Dracula" - Popular dark theme with purple accents
  • "Solarized Dark" - Precision colors for machines and people
  • "Solarized Light" - Light variant of Solarized
  • "GitHub Dark" - GitHub's dark color scheme
  • "Nord" - Arctic, north-bluish color palette

Press t in interactive mode to cycle through themes at runtime.

UI Settings

[ui]
# Default maximum rows to display in non-interactive mode (0 = all)
max_rows = 50

# Default maximum column width in characters
column_width = 30

Notes:

  • max_rows only affects non-interactive display mode (xleak file.xlsx)
  • Interactive TUI mode (-i) always shows all rows with lazy loading for large files
  • column_width applies to both modes and can be overridden with -w flag

Keybindings

xleak supports two built-in profiles plus custom keybindings:

[keybindings]
# Profile: "default" or "vim"
profile = "default"

# Optional: override individual keys
[keybindings.custom]
quit = "x"
search = "?"
copy_cell = "y"

Keybinding Profiles

Default Profile

Standard keybindings for terminal applications:

| Action | Key | Description | |--------|-----|-------------| | Navigation | | | | Move up/down/left/right | | Navigate cells | | Page up/down | PgUp PgDn | Scroll by page | | Jump to top/bottom | Ctrl+Home Ctrl+End | Jump to first/last row | | Jump to row start/end | Home End | Jump to first/last column | | Actions | | | | View cell details | Enter | Show formula and full value | | Jump to cell | Ctrl+G | Jump to specific row/cell | | Search | / | Full-text search | | Next/prev match | n N | Navigate search results | | Copy cell | c | Copy cell to clipboard | | Copy row | C (Shift+c) | Copy entire row | | Sheets | | | | Next/prev sheet | Tab Shift+Tab | Switch between sheets | | General | | | | Toggle theme | t | Cycle through themes | | Show help | ? | Display help screen | | Quit | q | Exit application |

VIM Profile

VIM-style keybindings for efficient keyboard navigation:

| Action | Key | Default Key | Description | |--------|-----|-------------|-------------| | VIM Navigation | | | | | Move left/down/up/right | h j k l | ← ↓ ↑ → | VIM-style movement | | Page up/down | Ctrl+u Ctrl+d | PgUp PgDn | Half-page scrolling | | Jump to top | gg | Ctrl+Home | Jump to first row | | Jump to bottom | G (Shift+g) | Ctrl+End | Jump to last row | | Jump to row start/end | 0 $ | Home End | First/last c

Related Skills

View on GitHub
GitHub Stars1.3k
CategoryCustomer
Updated4h ago
Forks55

Languages

Rust

Security Score

100/100

Audited on Mar 20, 2026

No findings