PHPackages                             dmachehin/sheet-mapper - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PDF &amp; Document Generation](/categories/documents)
4. /
5. dmachehin/sheet-mapper

ActiveLibrary[PDF &amp; Document Generation](/categories/documents)

dmachehin/sheet-mapper
======================

Map spreadsheet rows to structured PHP data objects

v0.0.7(6d ago)05.5k↑170.6%PHPPHP ^8.1

Since Nov 18Pushed 6d agoCompare

[ Source](https://github.com/dmachehin/sheet-mapper)[ Packagist](https://packagist.org/packages/dmachehin/sheet-mapper)[ RSS](/packages/dmachehin-sheet-mapper/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (2)Versions (8)Used By (0)

Sheet Mapper
============

[](#sheet-mapper)

PHP библиотека, которая превращает строки CSV/XLS/XLSX в DTO-классы на основе атрибутов-схем. Внутри используется PhpSpreadsheet, так что поддерживаются как таблицы с заголовками, так и файлы с фиксированными колонками.

Возможности
-----------

[](#возможности)

- `#[SheetMapping]` на классе описывает лист и наличие строки заголовков.
- `#[SheetField]` на свойствах задаёт номер колонки (с нуля) либо имя заголовка.
- Поиск колонок по регулярным выражениям: `header_regexp` помогает, если заголовки динамические.
- Опциональная проверка значений по регулярному выражению через `value_regexp`.
- Кастомные преобразования значений перед приведением типов через `value_callback`.
- Проверка структуры листа: `enforce_field_mapping=true` гарантирует наличие всех обязательных колонок/заголовков и отсутствие лишних. По умолчанию `enforce_field_mapping=false`. `ignored_columns` позволяет пометить исключения (по индексу колонки или имени заголовка).
- Автоматическое приведение типов для `string`, `int`, `float`, `bool`, а также `DateTimeInterface` и enum.
- Пропуск полностью пустых строк и понятные исключения, если значения отсутствуют или заголовок не найден.

Быстрый старт
-------------

[](#быстрый-старт)

DTO с атрибутами:

```
