xleak 将 Excel 电子表格带到您的命令行,提供精美的渲染、强大的导出功能以及功能丰富的交互式 TUI。
功能特性
核心功能
- 美观的终端渲染 - 支持带格式的表格展示
- 交互式终端界面 - 通过ratatui实现全键盘导航
- 智能数据类型处理 - 数字右对齐/文本左对齐/布尔值居中
- 多工作表支持 - 使用Tab/Shift+Tab无缝切换工作表
- Excel表格支持 - 列出并提取命名表格(仅.xlsx格式)
- 多格式导出 - 支持CSV/JSON/纯文本导出
- 极速解析 - 基于Rust最快的Excel解析库
calamine - 多文件格式支持 - 兼容
.xlsx/.xls/.xlsm/.xlsb/.ods格式
交互式终端功能
- 全文搜索 - 使用
/全局搜索,n/N导航结果 - 剪贴板支持 - 复制单元格(
c)或整行(C)内容 - 公式显示 - 按回车键查看单元格公式详情
- 跳转行列 -
Ctrl+G快速定位任意单元格(如A100/500/10,5) - 大文件优化 - 针对1000+行文件实现懒加载
- 进度指示器 - 长时间操作实时反馈
- 单元格高亮 - 当前行/列/单元格清晰标记
安装指南
包管理器
macOS / Linux (Homebrew):
bash
brew install bgreenwell/tap/xleak
Windows (Scoop):
powershell
scoop bucket add bgreenwell https://github.com/bgreenwell/scoop-bucket
scoop install xleak
Windows (WinGet): (即将推出 - 待初始PR合并)
powershell
winget install bgreenwell.xleak
Debian/Ubuntu
``xleak 已正式打包为 Debian 的 [rust-xleak`](https://tracker.debian.org/pkg/rust-xleak),并在 Forky 或更高版本中提供:
bash
sudo apt install xleak
Arch Linux (AUR):
bash
# Using yay
yay -S xleak-bin
# Or using paru
paru -S xleak-bin
NetBSD:
bash
pkgin install xleak
Cargo (所有平台):
bash
cargo install xleak
Nix:
bash
# Run directly
nix run github:bgreenwell/xleak -- file.xlsx
# Install with flakes
nix profile install github:bgreenwell/xleak
快速安装脚本
macOS / Linux:
bash
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bgreenwell/xleak/releases/latest/download/xleak-installer.sh | sh
Windows (PowerShell):
powershell
irm https://github.com/bgreenwell/xleak/releases/latest/download/xleak-installer.ps1 | iex
预编译二进制文件
从最新版本下载各平台专用二进制文件:
- macOS:通用二进制文件(Apple Silicon + Intel 双架构)
- Linux:x86_64 架构(支持 glibc 和 musl 两种C库)
- Windows :x86_64 位 MSI 安装包或独立版
.exe程序
从源码构建
bash
git clone https://github.com/bgreenwell/xleak.git
cd xleak
cargo install --path .
要求: Rust 1.70 或更高版本
使用方法
交互式 TUI 模式(推荐)
bash
# 启动交互式查看器
xleak quarterly-report.xlsx -i
# 从指定工作表开始查看
xleak report.xlsx --sheet "第三季度结果" -i
# 默认显示公式
xleak data.xlsx -i --formulas
# 为宽文件启用水平滚动(自动调整列宽)
xleak wide-data.xlsx -i -H
文本用户界面键盘快捷键:
-
↑ ↓ ← →- 导航单元格 -
Enter- 查看单元格详情(含公式) -
/- 在所有单元格中搜索 -
n/N- 跳转到下一个/上一个搜索结果 -
Ctrl+G- 跳转到指定行/单元格(如100,A50,10,5) -
c- 复制当前单元格到剪贴板 -
C- 复制整行到剪贴板 -
Tab/Shift+Tab- 切换工作表 -
?- 显示帮助 -
q- 退出非交互模式
查看电子表格
bashxleak quarterly-report.xlsx
查看特定工作表
bash
# 按名称
xleak report.xlsx --sheet "Q3 Results"
# 按索引(从1开始)
xleak report.xlsx --sheet 2
限制显示行数
bash
# 仅显示前20行
xleak large-file.xlsx -n 20
# 显示所有行
xleak file.xlsx -n 0
导出数据
bash
# 导出为CSV
xleak data.xlsx --export csv > output.csv
# 导出为JSON
xleak data.xlsx --export json > output.json
# 导出为纯文本(制表符分隔)
xleak data.xlsx --export text > output.txt
处理Excel表格(仅.xlsx文件)
bash
# 列出工作簿中的所有表格
xleak workbook.xlsx --list-tables
# 提取特定表格为JSON(默认格式)
xleak workbook.xlsx --table "Sales"
# 提取表格为CSV
xleak workbook.xlsx --table "Sales" --export csv > sales.csv
# 提取表格为纯文本
xleak workbook.xlsx --table "Employees" --export text
组合选项
bash
# 导出特定工作表为CSV
xleak workbook.xlsx --sheet "Sales" --export csv > sales.csv
使用示例
bash
# 启动交互式查看器
xleak quarterly-report.xlsx -i
# 非交互模式快速预览
xleak quarterly-report.xlsx
# 查看特定工作表并限制行数
xleak financial-data.xlsx --sheet "Summary" -n 10
# 显示公式的交互模式
xleak data.xlsx -i --formulas
# 导出工作表中的所有数据
xleak survey-results.xlsx --sheet "Responses" --export csv -n 0
配置
xleak支持通过TOML配置文件设置默认主题和快捷键等持久化选项。
配置文件位置
默认路径: ~/.config/xleak/config.toml(或$XDG_CONFIG_HOME/xleak/config.toml)
平台备用路径:
- macOS:
~/Library/Application Support/xleak/config.toml - Linux:
~/.config/xleak/config.toml(与XDG相同) - Windows:
%APPDATA%\xleak\config.toml
自定义路径: 使用--config参数指定:
bash
xleak --config /path/to/config.toml file.xlsx -i
快速开始
-
复制示例配置:
bashmkdir -p ~/.config/xleak cp config.toml.example ~/.config/xleak/config.toml -
或创建最小配置:
bashmkdir -p ~/.config/xleak cat > ~/.config/xleak/config.toml << 'EOF' [theme] default = "Dracula" [ui] max_rows = 50 column_width = 30 [keybindings] profile = "vim" EOF -
测试配置:
bashxleak file.xlsx -i
配置选项
主题设置
toml
[theme]
# 启动时使用的默认主题
default = "Dracula"
可用主题:
"Default"- 简洁的浅色主题"Dracula"- 流行的紫色系深色主题"Solarized Dark"- 适合机器和人类的精确配色"Solarized Light"- Solarized的浅色变体"GitHub Dark"- GitHub深色配色方案"Nord"- 北极蓝调色板
交互模式下按t键可实时切换主题。
界面设置
toml
[ui]
# 非交互模式默认显示的最大行数(0表示全部)
max_rows = 50
# 默认列宽(字符数)
column_width = 30
注意:
max_rows仅影响非交互模式(xleak file.xlsx)- 交互式TUI模式(
-i)始终显示所有行,大文件采用懒加载 column_width适用于两种模式,可通过-w参数覆盖
快捷键
支持两种预设方案和自定义快捷键:
toml
[keybindings]
# 方案:"default"或"vim"
profile = "default"
# 可选:覆盖单个快捷键
[keybindings.custom]
quit = "x"
search = "?"
copy_cell = "y"
快捷键方案
默认方案
标准终端应用快捷键:
| 操作 | 按键 | 说明 |
|---|---|---|
| 导航 | ||
| 上下左右移动 | ↑ ↓ ← → |
单元格导航 |
| 翻页 | PgUp PgDn |
按页滚动 |
| 跳转首尾行 | Ctrl+Home Ctrl+End |
跳转到第一行/最后一行 |
| 跳转行首尾 | Home End |
跳转到第一列/最后一列 |
| 操作 | ||
| 查看单元格详情 | Enter |
显示公式和完整值 |
| 跳转到单元格 | Ctrl+G |
跳转到指定行/列 |
| 搜索 | / |
全文搜索 |
| 下一个/上一个匹配项 | n N |
导航搜索结果 |
| 复制单元格 | c |
复制到剪贴板 |
| 复制整行 | C (Shift+c) |
复制整行内容 |
| 工作表 | ||
| 切换工作表 | Tab Shift+Tab |
工作表切换 |
| 通用 | ||
| 切换主题 | t |
循环切换主题 |
| 显示帮助 | ? |
显示帮助界面 |
| 退出 | q |
退出程序 |
VIM 配置
高效键盘导航的VIM风格快捷键绑定:
| 操作 | 快捷键 | 默认键 | 说明 |
|---|---|---|---|
| VIM导航 | |||
| 左/下/上/右移动 | h j k l |
← ↓ ↑ → | VIM风格移动 |
| 向上/下翻页 | Ctrl+u Ctrl+d |
PgUp PgDn | 半页滚动 |
| 跳至顶部 | gg |
Ctrl+Home | 跳至首行 |
| 跳至底部 | G (Shift+g) |
Ctrl+End | 跳至末行 |
| 跳至行首/行尾 | 0 $ |
Home End | 首列/末列 |
| VIM操作 | |||
| 复制单元格 | y |
c |
复制单元格(yank) |
| 复制整行 | Y (Shift+y) |
C |
复制整行(yank) |
| 标准操作 | |||
| 退出 | q |
q |
与默认相同 |
| 搜索 | / |
/ |
与默认相同 |
| 下一个/上一个匹配项 | n N |
n N |
与默认相同 |
| 其他所有按键 | 与默认配置相同 |
启用VIM模式:
toml
[keybindings]
profile = "vim"
自定义快捷键
覆盖特定按键同时保留配置默认值:
toml
[keybindings]
profile = "default"
[keybindings.custom]
# 使用'x'代替'q'退出
quit = "x"
# 使用'?'代替'/'搜索
search = "?"
# 使用'T'(Shift+t)切换主题
theme_toggle = "T"
# 使用Ctrl+J跳转到单元格
jump = "Ctrl+j"
所有可自定义操作:
| 操作 | 默认键 | VIM键 | 说明 |
|---|---|---|---|
quit |
q |
q |
退出应用 |
help |
? |
? |
显示帮助 |
theme_toggle |
t |
t |
切换主题 |
search |
/ |
/ |
搜索单元格 |
next_match |
n |
n |
下一个搜索结果 |
prev_match |
N |
N |
上一个结果 |
copy_cell |
c |
y |
复制单元格 |
copy_row |
C |
Y |
复制整行 |
jump |
Ctrl+g |
Ctrl+g |
跳转到单元格 |
show_cell_detail |
Enter |
Enter |
显示详情 |
next_sheet |
Tab |
Tab |
下一个工作表 |
prev_sheet |
Shift+Tab |
Shift+Tab |
上一个工作表 |
up |
Up |
k |
向上移动 |
down |
Down |
j |
向下移动 |
left |
Left |
h |
向左移动 |
right |
Right |
l |
向右移动 |
page_up |
PageUp |
Ctrl+u |
向上翻页 |
page_down |
PageDown |
Ctrl+d |
向下翻页 |
jump_to_top |
Ctrl+Home |
g |
跳至首行 |
jump_to_bottom |
Ctrl+End |
G |
跳至末行 |
jump_to_row_start |
Home |
0 |
跳至行首 |
jump_to_row_end |
End |
$ |
跳至行尾 |
键位格式:
- 单键:
"q","/","Enter" - 组合键:
"Ctrl+g","Shift+Tab","Alt+s" - 特殊键:
"Enter","Esc","Tab","Home","End","PageUp","PageDown","Up","Down","Left","Right"
配置示例
极简配置(仅主题):
toml
[theme]
default = "Nord"
VIM用户配置:
toml
[theme]
default = "Dracula"
[keybindings]
profile = "vim"
自定义工作流:
toml
[theme]
default = "GitHub Dark"
[ui]
max_rows = 100
column_width = 40
[keybindings]
profile = "default"
[keybindings.custom]
quit = "x"
search = "s"
copy_cell = "Ctrl+c"
copy_row = "Ctrl+Shift+c"
完整参考: 所有配置选项详见带详细注释的 config.toml.example 文件。
性能表现
xleak 针对大小文件均进行了优化:
- 小文件(< 1000行):即时加载,完全预载入
- 大文件 (≥ 1000行):自动延迟加载与行缓存
- 内存占用:约400KB(处理10,000行文件时)
- 按需仅加载可视区域行数据
- 长时间操作显示进度指示器
竞品对比
| 工具 | 格式支持 | 速度 | 原生终端支持 | 交互性 | 搜索功能 | 公式支持 |
|---|---|---|---|---|---|---|
| xleak | ✅ xlsx/xls/ods | ⚡ 极快 | ✅ 是 | ✅ 完整TUI | ✅ 支持 | ✅ 支持 |
| Excel | ✅ xlsx | ❌ 启动缓慢 | ❌ 仅图形界面 | ✅ 支持 | ✅ 支持 | ✅ 支持 |
| pandas | ✅ 多种格式 | ❌ 较慢 | ❌ 需Python | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 |
| csvlook | ❌ 仅CSV | ✅ 快速 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 |
相关项目
想在终端查看Word文档?试试 doxx ------ 支持 .docx 文件的终端查看器,提供类似的TUI功能。
技术栈
- Rust - 保障性能与可靠性
- calamine - 最快的Excel/ODS解析器
- ratatui - 终端用户界面框架
- prettytable-rs - 精美的终端表格渲染
- clap - 优雅的命令行参数解析
- arboard - 跨平台剪贴板支
故障排除
"文件未找到"
- 确保文件路径正确
- 文件名包含空格时使用引号:
xleak "我的报告.xlsx"
"未找到工作表"
- Excel 文件可能已损坏
- 尝试先在 Excel/LibreOffice 中打开以验证
"未找到工作表 'X'"
- 运行
xleak 文件.xlsx(不带 --sheet 参数)查看所有可用工作表 - 工作表名称区分大小写
许可证
MIT 许可证 --- 详情请参阅
鸣谢
为终端开发者而生 🚀