mcpField
X
xlsx

xlsx

github.com/lanejドキュメント4138 回インストール今日更新
リポジトリ

xlsx について

Excel ワークブックの確認、抽出、編集、エクスポートを行うコマンドラインツールです。Python や Node.js を使わず、SQL 風の条件や複数の出力形式で表データを処理できます。

主な機能

  1. 01ワークブックのシート一覧表示
  2. 02データの表示と抽出
  3. 03SQL 風条件による絞り込み
  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

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 は無制限ではなく、行数 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 ではありません。一度に処理できるのは 1 列です。
  • slice は位置引数ではなくフラグを使用します — xlsx slice file.xlsx --start 10 --end 20 のように指定します。xlsx slice file.xlsx 10 20 ではありません。
  • filter --sheet の整数インデックスは 0 から始まります — --sheet 2 は 3 番目のシートです。インデックスのずれを避けるには、シート名を使用してください。
  • 編集時はデフォルトでバックアップが作成されます — ループやスクリプトで実行する場合は、--no-backup を使用してバックアップをスキップしてください。
  • フィルターの文字列比較では、デフォルトで大文字と小文字を区別しません — 変更するには --case-sensitive を使用してください。
  • 数式を含む範囲に set を実行すると、参照が調整されます — F2:F100 に =D2+E2 を設定すると、F3 では =D3+E3 になります。
  • filter --where "1=1" は解析エラーになります — 恒真条件はサポートされていません(Parsing Error: Error { input: "1=1", code: Tag })。すべての行を選択するには、--where を省略するか、xlsx to-csv を使用してください。
  • ファイル全体を抽出するには、view ではなく xlsx to-csv を使用してください — すべての行と列を抽出するには、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

コメント