excel · git:20260324.60807d8 · 2026-03-24 · sha256 a3fb5e99ef35a343

excel git:20260324.60807d8C

Immutable. This exact content is served forever at /api/v1/blob/a3fb5e99ef35a343.

# Excel Skill

Работа с Excel файлами (.xlsx, .xlsm, .csv, .tsv)

## Установка для botinok

```bash
# Вариант 1: системный Python (нужен --break-system-packages)
pip install openpyxl pandas --break-system-packages

# Вариант 2: виртуальное окружение botinok
python3 -m venv ~/.botinok/venv
~/.botinok/venv/bin/pip install openpyxl pandas
```

## Инструменты

- **Python + openpyxl** — создание, редактирование, чтение Excel файлов
- **Python + pandas** — работа с таблицами и данными
- **shell_exec** — выполнение Python скриптов

## Быстрые примеры

### Создать Excel файл

```python
from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "Sheet1"
ws['A1'] = "Заголовок"
ws['B1'] = 100
ws['C1'] = "=SUM(B1:B10)"  # формула

wb.save("output.xlsx")
```

### Прочитать Excel файл

```python
import openpyxl

wb = openpyxl.load_workbook("file.xlsx")
ws = wb.active

for row in ws.iter_rows(values_only=True):
    print(row)
```

### Читать с формулами (не вычисленными)

```python
wb = openpyxl.load_workbook("file.xlsx", data_only=False)
```

### Читать с вычисленными значениями

```python
wb = openpyxl.load_workbook("file.xlsx", data_only=True)
```

## Формулы

openpyxl поддерживает формулы Excel:
- `=SUM(A1:A10)`
- `=AVERAGE(B1:B5)`
- `=IF(A1>10, "больше", "меньше")`
- `=VLOOKUP(A1, Sheet2!A:B, 2, FALSE)`

## Работа с листами

```python
# Создать лист
ws = wb.create_sheet("Новый")

# Удалить лист
del wb["Sheet1"]

# Переименовать
ws.title = "Переименовано"
```

## Форматирование (базовое)

```python
from openpyxl.styles import Font, PatternFill

# Шрифт
ws['A1'].font = Font(bold=True, color="FF0000")

# Заливка
ws['A1'].fill = PatternFill(start_color="FFFF00", fill_type="solid")

# Ширина столбца
ws.column_dimensions['A'].width = 20
```

## CSV файлы

```python
import pandas as pd

# Читать CSV
df = pd.read_csv("file.csv")

# Сохранить в Excel
df.to_excel("output.xlsx", index=False)
```

## Важные моменты

1. **Путь к файлу** — используй абсолютные пути или проверяй cwd
2. **Формулы** — сохраняй с `data_only=False` чтобы не потерять
3. **Большие файлы** — `iter_rows()` вместо загрузки всего в память
4. **Кодировка CSV** — указывай `encoding='utf-8'` или `encoding='cp1251'`