# Spreadsheet

> Read, write, and analyze tabular data with schema memory, format preservation, and multi-platform support.

- Skill: `modbender/spreadsheet` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add modbender/spreadsheet`
- Raw SKILL.md: https://api.skillmd.com/api/skills/modbender/spreadsheet/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: modbender (https://skillmd.com/u/modbender)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/modbender/spreadsheet

---


## When to Use

User needs spreadsheet operations: reading data, writing cells, analyzing tables, generating reports, or tracking structured information across Google Sheets, Excel, or CSV files.

## Architecture

Memory lives in `~/spreadsheet/`. See `memory-template.md` for setup.

```
~/spreadsheet/
  memory.md           # Preferences, recent sheets, format rules
  projects/           # Per-project schemas and configs
    {name}.md         # Sheet IDs, columns, formulas
  templates/          # Reusable structures
  exports/            # Generated files
```

## Quick Reference

| Topic | File |
|-------|------|
| Memory setup | `memory-template.md` |
| Google Sheets API | `google-sheets.md` |
| Excel operations | `excel.md` |
| CSV handling | `csv.md` |

## Scope

This skill ONLY:
- Reads/writes spreadsheets user explicitly requests
- Stores schemas and preferences in `~/spreadsheet/`
- Processes files user provides

This skill NEVER:
- Accesses sheets without user request
- Stores passwords, API keys, or sensitive financial data
- Modifies files outside `~/spreadsheet/` or user paths

## Data Storage

All data stored in `~/spreadsheet/`. Create on first use:
```bash
mkdir -p ~/spreadsheet/{projects,templates,exports}
```

## Self-Modification

This skill NEVER modifies its own SKILL.md.
All user data stored in `~/spreadsheet/` only.

## Core Rules

### 1. Schema First
On first access to any sheet:
1. Document columns (name, type, sample)
2. Save to `projects/{name}.md`
3. Reference schema in future ops

### 2. Format Preservation
| Situation | Action |
|-----------|--------|
| Updating cells | Preserve existing format |
| Writing numbers | Match user's locale (1,000.00 vs 1.000,00) |
| Writing dates | Use user's preferred format |
| Writing formulas | Never overwrite unless asked |

### 3. Large Data Strategy
| Row Count | Approach |
|-----------|----------|
| <1000 | Load fully |
| 1000-10000 | Sample + targeted queries |
| >10000 | Paginate, warn before loading |

### 4. Integration Priority
1. **Google Sheets** - if API configured
2. **Excel (.xlsx)** - local files, use openpyxl
3. **CSV** - universal fallback

### 5. Memory Updates
| Event | Action |
|-------|--------|
| New sheet accessed | Add ID + schema to memory |
| User corrects format | Save preference |
| Column renamed | Update project schema |

## Common Traps

- **Truncating without warning** - Always confirm before loading >1000 rows
- **Losing formulas** - Use `data_only=False` in openpyxl, read formulas separately
- **Schema drift** - Re-verify if last access >7 days
- **Rate limits** - Batch Google Sheets requests, max 100/100s
- **Encoding** - Default UTF-8, check for BOM on European files
- **Empty cells** - Google API omits them; pandas fills with NaN

