xlsx · bobmatnyc — Claude Code skill: work with Excel files from code
A skill that shows the agent how to read, write and edit Excel files using openpyxl, pandas and the JavaScript xlsx library.
npx skills add bobmatnyc/claude-mpm-skills --skill xlsx -a claude-codeWhat xlsx does
The skill hands the agent ready patterns for .xlsx work. Reading cells and rows, writing data, formulas, cell formatting — all through openpyxl. For analysis and reshaping it points to pandas: filters, group-by, pivot tables, reading several sheets at once.
There is a JavaScript section built on the xlsx package: load a workbook, convert a sheet to JSON, write it back. Common jobs get their own snippets — CSV to Excel and back, merging several workbooks with pd.concat.
The skill is not user-invocable and stays out of the model's context until it is needed. Every example assumes openpyxl, pandas or the npm xlsx package is already in the project, so install those first. For large files the skill itself advises chunked processing, and it tells you to close workbooks when done.
What it helps with
- read rows out of an
.xlsxfile into a table - write a DataFrame to Excel without the index column
- merge several workbooks into one file
- put a SUM formula into a cell
- convert CSV to Excel and back
Example prompts for the agent
- read
data.xlsxand show me the first rows - merge
file1.xlsx,file2.xlsxandfile3.xlsxintomerged.xlsx - export this DataFrame to
output.xlsxwithout the index
How to install xlsx
1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill xlsx -a claude-code2Manually: put the files in place
~/.claude/skills/xlsx/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/xlsx/
1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill xlsx -a codex2Manually: put the files in place
.agents/skills/xlsx/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill xlsx -a cursor2Manually: put the files in place
.cursor/skills/xlsx/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install bobmatnyc/claude-mpm-skills xlsx2Manually: put the files in place
.github/skills/xlsx/SKILL.md1Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill xlsx -a gemini-cli2Platform CLI
gemini skills install https://github.com/bobmatnyc/claude-mpm-skills --path universal/data/xlsxManually: put the files in place
.devin/skills/xlsx/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add bobmatnyc/claude-mpm-skills --skill xlsx -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about xlsx
How do I install the xlsx skill in Claude?
Run npx skills add bobmatnyc/claude-mpm-skills --skill xlsx -a claude-code. The skill file then lands at ~/.claude/skills/xlsx/SKILL.md.
What does the xlsx skill do?
It shows the agent how to read and write Excel files: cells, rows, formulas, formatting, pivot tables. It works through openpyxl, pandas and the JavaScript xlsx library.
Which libraries does the xlsx skill need?
The examples use openpyxl, pandas and the npm xlsx package. You install them in your project — the skill does not pull them in.
Source text
SKILL.md · MIT
---
name: xlsx
description: Working with Excel files programmatically.
user-invocable: false
disable-model-invocation: true
updated_at: 2025-10-30T17:00:00Z
tags: [excel, xlsx, spreadsheet, data]
progressive_disclosure:
entry_point:
summary: "Working with Excel files programmatically."
when_to_use: "When working with xlsx or related functionality."
quick_start: "1. Review the core concepts below. 2. Apply patterns to your use case. 3. Follow best practices for implementation."
---
# Excel/XLSX Manipulation
Working with Excel files programmatically.
## Python (openpyxl)
### Reading Excel
```python
from openpyxl import load_workbook
wb = load_workbook('data.xlsx')
ws = wb.active # Get active sheet
# Read cell
value = ws['A1'].value
# Iterate rows
for row in ws.iter_rows(min_row=2, values_only=True):
print(row)
```
### Writing Excel
```python
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Data"
# Write data
ws['A1'] = 'Name'
ws['B1'] = 'Age'
ws.append(['John', 30])
ws.append(['Jane', 25])
wb.save('output.xlsx')
```
### Formatting
```python
from openpyxl.styles import Font, PatternFill
# Bold header
ws['A1'].font = Font(bold=True)
# Background color
ws['A1'].fill = PatternFill(start_color="FFFF00", fill_type="solid")
# Number format
ws['B2'].number_format = '0.00' # Two decimals
```
### Formulas
```python
# Add formula
ws['C2'] = '=A2+B2'
# Sum column
ws['D10'] = '=SUM(D2:D9)'
```
## Python (pandas)
### Reading Excel
```python
import pandas as pd
# Read sheet
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
# Read multiple sheets
dfs = pd.read_excel('data.xlsx', sheet_name=None)
```
### Writing Excel
```python
# Write DataFrame
df.to_excel('output.xlsx', index=False)
# Multiple sheets
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet1')
df2.to_excel(writer, sheet_name='Sheet2')
```
### Data Transformation
```python
# Filter
filtered = df[df['Age'] > 25]
# Group by
grouped = df.groupby('Department')['Salary'].mean()
# Pivot
pivot = df.pivot_table(values='Sales', index='Region', columns='Product')
```
## JavaScript (xlsx)
```javascript
import XLSX from 'xlsx';
// Read file
const workbook = XLSX.readFile('data.xlsx');
const sheetName = workbook.SheetNames[0];
const worksheet = workbook.Sheets[sheetName];
// Convert to JSON
const data = XLSX.utils.sheet_to_json(worksheet);
// Write file
const newWorksheet = XLSX.utils.json_to_sheet(data);
const newWorkbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(newWorkbook, newWorksheet, 'Data');
XLSX.writeFile(newWorkbook, 'output.xlsx');
```
## Common Operations
### CSV to Excel
```python
import pandas as pd
df = pd.read_csv('data.csv')
df.to_excel('data.xlsx', index=False)
```
### Excel to CSV
```python
df = pd.read_excel('data.xlsx')
df.to_csv('data.csv', index=False)
```
### Merging Excel Files
```python
dfs = []
for file in ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']:
df = pd.read_excel(file)
dfs.append(df)
combined = pd.concat(dfs, ignore_index=True)
combined.to_excel('merged.xlsx', index=False)
```
## Remember
- Close workbooks after use
- Handle large files in chunks
- Validate data before writing
- Use pandas for data analysis, openpyxl for formatting
© bobmatnyc · MIT · bobmatnyc/claude-mpm-skills
Similar skills
Everything for Office documents →xlsx by other authors comes first.