关于 xlsx
用于检查、筛选、编辑和导出 Excel 工作簿的命令行工具,无需 Python 或 Node.js。它支持类 SQL 条件查询和多种输出格式,适用于表格数据处理流程。
主要功能
- 01列出工作簿工作表
- 02查看并提取数据
- 03使用类 SQL 条件筛选
- 04编辑单元格与区域
- 05将工作表导出为 CSV
适用场景
- 01查找符合条件的行
- 02在脚本中更新表格单元格
- 03导出工作簿数据供后续处理
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lanej/ dotfiles --skill xlsx安装后在 Claude Code 中输入/xlsx确认已加载。
详细介绍
XLSX 技能
xlsx 二进制程序无需 Python 或 Node.js,即可处理 Excel 的全部操作。
命令
xlsx sheets <file> list sheets in workbook
xlsx view <file> [--sheet S] [--limit N] [--format table|json|csv|tsv]
xlsx headers <file> [--sheet S] show column headers
xlsx select <file> "A,C,E" [--sheet S] extract columns by letter or range A-E
xlsx slice <file> [--start N] [--end N] [--sheet S] row range (1-indexed, inclusive)
xlsx search <file> <pattern> [--ignore-case] [--regex] [--sheet S]
xlsx filter <file> --where <expr> [--columns "Name,Email"] [--format json] [--limit N] [--offset N] [--sheet S] [--output file]
xlsx count <file> [--sheet S] row and column count
xlsx stats <file> <COLUMN> [--sheet S] statistics for one column (letter or name)
xlsx get-formula <file> <cell> [--sheet S]
xlsx eval "<formula>" evaluate formula expression
xlsx set <file> <cell|range> <value> [--value-type auto|string|number|bool|date|formula] [--sheet S] [--no-backup]
xlsx insert <file> row|column <ref> [--sheet S]
xlsx delete <file> row|column <ref|range> [--sheet S]
xlsx copy <file> <src-range> <dest-cell> [--sheet S]
xlsx to-csv <file> <out.csv> [--sheet S] [--date-format iso8601]
xlsx from-csv <in.csv> <out.xlsx> [--sheet S]
xlsx format <file> <range> ... apply cell formatting
xlsx validate ... data validation rules
xlsx names ... named range management
xlsx pivot ... pivot table operations
xlsx chart ... chart operations
Filter WHERE 子句
类似 SQL 的语法,默认不区分大小写。
# Column names with spaces use brackets
xlsx filter data.xlsx --where "[First Name] = 'John'"
xlsx filter data.xlsx --where "[Job Title] LIKE '%Engineer%'"
# Operators: =, !=, <>, >, <, >=, <=, LIKE, IN, BETWEEN, IS NULL, IS NOT NULL
xlsx filter data.xlsx --where "Status IN ('Active', 'Pending')"
xlsx filter data.xlsx --where "Age BETWEEN 25 AND 35"
xlsx filter data.xlsx --where "Manager IS NULL"
xlsx filter data.xlsx --where "(Status = 'Active' OR Status = 'Pending') AND Age > 25"
# Column selection, format, pagination, output file
xlsx filter data.xlsx --where "Dept = 'Sales'" --columns "Name,Email" --format csv --output out.csv
xlsx filter data.xlsx --where "Status = 'Active'" --limit 10 --offset 20
# Sheet by name or 0-based index
xlsx filter data.xlsx --where "Total > 1000" --sheet "Q4 Sales"
xlsx filter data.xlsx --where "Total > 1000" --sheet 2
# Case-sensitive matching
xlsx filter data.xlsx --where "Name = 'Bob'" --case-sensitive
编辑
# Set single cell
xlsx set file.xlsx B5 42
xlsx set file.xlsx C1 "2025-01-15" --value-type date
xlsx set file.xlsx D1 "=SUM(A1:A10)" --value-type formula
# Set range — broadcasts same value to all cells; formulas adjust relative references
xlsx set file.xlsx B5:B10 "Pending"
xlsx set file.xlsx F2:F100 "=D2+E2" --value-type formula
# Insert / delete
xlsx insert file.xlsx row 5
xlsx insert file.xlsx column C
xlsx delete file.xlsx row 5:10
xlsx delete file.xlsx column C:E
日期格式
--date-format 的预设值:iso8601(默认)、mdy、us-padded、us-time、unix、excel-serial、excel。自定义格式:"%Y-%m-%d"。
jq 集成
# Process JSON output with jq
xlsx view data.xlsx --format json | jq '.[] | select(.age > 30)'
xlsx filter data.xlsx --where "Status = 'Active'" --format json | jq 'length'
注意事项
--limit 0表示零行,而不是不限制 —xlsx view --format json --limit 0会返回空数组;--format tsv同样不会返回任何内容。若要在进程内查看,请使用较大的--limit N(例如--limit 9999);若要完整提取,请使用xlsx to-csv。默认上限为 100 行。stats需要指定列参数 — 使用xlsx stats file.xlsx Amount,而不是xlsx stats file.xlsx。一次只能处理一列。slice使用标志,而非位置参数 — 使用xlsx slice file.xlsx --start 10 --end 20,而不是xlsx slice file.xlsx 10 20。- 整数索引的
filter --sheet从 0 开始 —--sheet 2表示第三个工作表。使用工作表名称可避免索引偏差。 - 编辑默认会创建备份 — 在循环或脚本中运行时,可使用
--no-backup跳过备份。 - Filter 字符串比较默认不区分大小写 — 使用
--case-sensitive可更改此设置。 - 对包含公式的区域使用
set会调整引用 — 将=D2+E2应用于F2:F100后,F3 中会生成=D3+E3,依此类推。 filter --where "1=1"会引发解析错误 — 不支持恒真条件(Parsing Error: Error { input: "1=1", code: Tag })。若要选择所有行,请完全省略--where,或使用xlsx to-csv。- 提取整个文件:使用
xlsx to-csv,而不是view— 如需获取所有行和所有列,xlsx to-csv file.xlsx out.csv --date-format iso8601是可靠的方式;后续可使用duckdb(read_csv_auto())或 Python 的csv.DictReader处理。对于较大的工作表,使用较大限制值运行xlsx view --format json并不可靠。
快速参考
xlsx sheets file.xlsx # list sheets
xlsx view file.xlsx --limit 9999 # view all rows (--limit 0 = zero rows)
xlsx headers file.xlsx # show headers
xlsx filter file.xlsx --where "A = 'x'" # SQL filter
xlsx filter file.xlsx --where "A = 'x'" --format json | jq ...
xlsx stats file.xlsx Amount # stats for column
xlsx count file.xlsx # row/col count
xlsx set file.xlsx A1 "value" # set cell
xlsx to-csv file.xlsx out.csv # export to CSV
xlsx from-csv in.csv file.xlsx # import from CSV
评论
支持 Markdown