mcpField
X
xlsx

xlsx

github.com/lanej文档处理4138 次安装今天更新
代码仓库

关于 xlsx

用于检查、筛选、编辑和导出 Excel 工作簿的命令行工具,无需 Python 或 Node.js。它支持类 SQL 条件查询和多种输出格式,适用于表格数据处理流程。

主要功能

  1. 01列出工作簿工作表
  2. 02查看并提取数据
  3. 03使用类 SQL 条件筛选
  4. 04编辑单元格与区域
  5. 05将工作表导出为 CSV

适用场景

  1. 01查找符合条件的行
  2. 02在脚本中更新表格单元格
  3. 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